aptly是一个用Go开发的Debian存储库管理工具,功能非常强大,这绝对是个神器。。
aptly可以镜像远程存储库,管理本地存储库,制作快照,发布Debian存储库,甚至还自带一个小型的http服务器方便你发布存储库,功能上可以说应有尽有,最重要的是,使用起来非常方便。
我最近准备用这个弄一个自己的存储库,存一些常用的软件包,以下是基于Debian10的配置过程。
安装gnupg/nginx,gnupg用来签名,nginx用来提供存储库的http服务(虽然aptly自带http服务,但如果正式使用还是建议使用nginx)
apt -y install gnupg nginx
创建一个用户:
useradd -r -m -s /bin/bash -U aptly
将用户加入到sudo(可选:)
adduser aptly sudo
更改此用户的密码:
passwd aptly
下载最新的1.4.0版本(apt包管理器可以直接装,但版本是1.3.0,并且这个版本与gpg2不兼容,后续会有问题,所以这里采用下载二进制文件的方式手动安装)
wget https://github.com/aptly-dev/aptly/releases/download/v1.4.0/aptly_1.4.0_linux_amd64.tar.gz tar -xzvf aptly_1.4.0_linux_amd64.tar.gz cp aptly_1.4.0_linux_amd64/aptly /usr/bin
现在新开一个终端,使用之前创建的aptly用户登录到Shell内(不要用sudo/su这样的命令,后续gpg签发密钥对的时候会报权限问题)
使用gpg生成密匙对:
gpg --full-generate-key
步骤如下:
之后会让你设置一个key密码,这个密码一定要妥善保管,忘记这个密码等于忘记你的私钥:
生成完成之后,导出自己的私钥(可选,就是备份一下)
gpg --export-secret-keys --armor [email protected] > imlala.gpg
公钥也可以导出(可选)
gpg --export --armor [email protected] > imlala-pubkey.gpg
列出密钥的Key:
gpg --list-keys
如图所示:
使用Key将公钥提交到公共服务器:
gpg --keyserver keyserver.ubuntu.com --send-key 1688618470F535B54F136DAE981B3E8949BAFE4C
然后访问公共服务器,输入签发密匙对时填写的邮箱:
搜索,看有没有自己的Key在内,有的话就说明OK了:
现在创建一个目录,将需要用到的deb包通过SFTP等方式上传到这个目录内:
mkdir deb
接着就可以使用aptly创建一个存储库了:
aptly repo create -distribution="buster" -comment="lala.im personal repository" imlala
添加软件包到存储库:
aptly repo add imlala deb/libtorrent-rasterbar_1.1.13-1_amd64.deb aptly repo add imlala deb/qbittorrent-nox_4.1.7.1_amd64.deb
目录内有多个软件包也可以直接:
aptly repo add imlala deb/*.deb
如图所示:
然后创建快照:
aptly snapshot create imlala_snapshot from repo imlala
之后从快照发布存储库(你也可以直接从repo发布,但官方不推荐这样):
aptly publish snapshot imlala_snapshot
注:从快照发布存储库的好处是,后续在repo内做出的任何修改(比如添加/删除/修改/软件包),都不会影响当前对外提供服务的存储库,只有当你确定repo没问题后,重新发布一个快照,对外服务的存储库才会更改。这样更符合生产环境的标准。
新建nginx站点配置文件:
nano /etc/nginx/conf.d/aptly.conf
写入如下配置:
server { listen 80; listen [::]:80; server_name apt.koko.cat; root /home/aptly/.aptly/public; index index.html allow all; autoindex on; }
重启nginx:
systemctl restart nginx
一些常用的aptly命令:
aptly publish drop buster # 取消已发布的存储库,这里指定的名字不是存储库的名字而是distribution aptly snapshot drop imlala_snapshot # 删除快照(如果当前快照正在对外服务,需要先取消快照对应的存储库发布后才能删除) aptly snapshot show -with-packages imlala_snapshot # 显示某个快照内有多少个包 aptly snapshot list # 列出所有快照 aptly repo show -with-packages imlala # 显示某个存储库内有多少包 aptly repo list # 列出所有存储库 aptly repo remove imlala qbittorrent-nox_4.1.7.1_amd64 # 从存储库删除包 aptly serve # 启动自带的http服务器
客户机如何添加存储库?
首先安装gnupg:
apt -y install gnupg
然后添加存储库密钥:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AF4941E87242C9AB69092454C8779CE3C4E14F
接着添加源:
echo "deb http://apt.koko.cat/ buster main" > /etc/apt/sources.list.d/imlala.list
更新源信息:
apt -y update
LALA
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会