reprepro nginx 搭建个人PPA仓库

搭建PPA仓库

reprepro是一个强大的debian仓库管理工具。它的主要功能包含创建仓库、往仓库中添加包、从仓库中移除包、仓库导出、无用仓库移除等。

安装必要程序

sudo apt install gnupg reprepro nginx
##创建 GPG 密钥
gpg --full-gen
#密钥类型:默认
#RSA长度:默认
#密钥有效期限:默认
#真实姓名:malloy
#电子邮件地址:*******@gmail.com
#注释:Persional Hub
#密码:malloy
##列出系统中的 GPG 密钥
gpg --list-keys
##导出 GPG 公钥
gpg --armor --export FDDC2523858B7D32DC7E2605E2C4B5104AD05349 > debian_package_hub/wwwroot/ppa/key/public.key
##配置文件
vim debian_package_hub/wwwroot/ppa/conf/distributions
##创建仓库树,会创建了一些文件夹,验证了gpg密码
reprepro --ask-passphrase -Vb debian_package_hub/wwwroot/ppa export
##添加deb包到仓库,以zip包为例
#需要进入仓库的根目录才能添加软件包
cd debian_package_hub/wwwroot/ppa
#下面这个命令格式为【  includedeb 发行版 deb包文件目录 】
reprepro --ask-passphrase -Vb . includedeb malloy /home/malloy/Ex/Week1/debian_package/zip_3.0.1-1+rebuild_amd64.deb
##移除deb包
#看英文意思!!!不要照抄
reprepro --ask-passphrase -Vb PPA_directory remove Codename Package_name

#更多命令直接reprepro -h 查看就好了

distributions配置
其中codename代表发行版名称,比如uos有eagle(专业版),plum(个人版),apricot(社区版)之分,
ubuntu有bionic,focal,groovy(这个说白了就是ubuntu20.10)

Origin: deepin-malloy
Label: deepin-malloy
Suite: stable
Codename: malloy
Version: 2021
Architectures: amd64 source
Components: main contrib non-free
Description: Malloy's Personal Package Archives
SignWith: FDDC2523858B7D32DC7E2605E2C4B5104AD05349

Nginx配置文件
如果不了解nginx服务,可以把这个配置文件直接抄过去,
server_name后面带的是你的域名或者IP也可以
root 后面带的是仓库的目录,这两个地方记得修改

server {
  listen 80;
  server_name malloy.com;

  access_log /var/log/nginx/packages-error.log;
  error_log /var/log/nginx/packages-error.log;
  root /home/malloy/Ex/Week1/debian_package_hub/wwwroot/ppa;
  index  index.html index.htm;
 
  location / {
    autoindex on;
  }

  location ~ /(.*)/conf {
    deny all;
  }

  location ~ /(.*)/db {
    deny all;
  }
}

nginx的配置文件在/etc/nginx目录下面,需要用到的只有两个目录/etc/nginx/sites-available/ , /etc/nginx/sites-enabled/
配置文件写入/etc/nginx/sites-available/ 下,用软链接链接到/etc/nginx/sites-enabled/下面
顾名思义,site-available下面是可以用的配置文件,site-enabled下面是启用的服务,
以此仓库为例,在available下面新建ppa文件(名字随意取),把上面的配置写进去
然后软连接到enabled下面,重启nginx服务就好了

#一个完整的示例
touch /etc/nginx/sites-available/ppa
vim /etc/nginx/sites-available/ppa
#建议进入该目录创建软连接,因为不进去和进去ls -l显示的内容不一样,我也不知道为啥,也不想深究了
cd /etc/nginx/sites-available/
ln -s ppa /etc/nginx/sites-enabled/ppa
systemctl restart nginx

如果需要测试自己写的配置文件是否有错误,或者上面restart nginx时报错
下面这个命令能帮助你快速排查配置文件的错误所在

/usr/sbin/nginx -t

已经在hosts文件里将本地IP绑定malloy.com

站点目录

├── conf
│   └── distributions
├── db
│   ├── checksums.db
│   ├── contents.cache.db
│   ├── packages.db
│   ├── references.db
│   ├── release.caches.db
│   └── version
├── deb
├── dists
│   └── malloy
│       ├── contrib
│       │   └── binary-amd64
│       │       ├── Packages
│       │       ├── Packages.gz
│       │       └── Release
│       ├── InRelease
│       ├── main
│       │   └── binary-amd64
│       │       ├── Packages
│       │       ├── Packages.gz
│       │       └── Release
│       ├── non-free
│       │   └── binary-amd64
│       │       ├── Packages
│       │       ├── Packages.gz
│       │       └── Release
│       ├── Release
│       └── Release.gpg
├── key
│   └── public.key
└── pool
    └── main
        ├── v
        │   └── vim
        │       └── xxd_8.1.0875.1-1+deepin_amd64.deb
        └── z
            └── zip
                └── zip_3.0.1-1+rebuild_amd64.deb

在/etc/apt/sources.list添加源

deb http://malloy.com/ malloy main contrib non-free

添加公钥

wget -O - http://malloy.com/key/public.key | sudo apt-key add -

# 更新软件源

sudo apt update
posted @ 2021-01-19 17:06  Ditvelo  阅读(1055)  评论(0)    收藏  举报