一、如何搭建仓库源
之前讲了定制ISO的方法:使用chroot定制系统,但有时候我们想自定义的安装包不在上游的仓库源中,在我们本地应该怎么办呢?如果我们将deb包拷贝到iso目录再安装有点过于麻烦了,而且还可能需要手动处理一些依赖问题,因此我们可以考虑搭建一个本地或者说内网的仓库源,便于定制系统应用,以下是我创建的例子:
创建文件夹,当作仓库源的根目录,然后在里面创建子目录或者直接放置deb也行,我这里下载了d-feet的deb安装包,解压之后修改了control文件中的版本和依赖,将版本号加1并新加了qdbus-qt5的依赖:
然后重新生成了deb包:
dpkg -b d-feet_0.3.16-4_all/
然后进入到deb目录下生成Packages文件:
sudo apt-ftparchive packages . > Packages
最后生成Release文件:
sudo apt-ftparchive release . > Release
这样一个简单的本地仓库源就搭建好了。
注意:每次更新了仓库中的包之后都要更新这两个文件。
我们试一下将它添加到本地的list文件中去(可能需要使用root用户):
echo "deb [trusted=yes] file:/home/feng/test/deb ./" >> /etc/apt/sources.list.d/test.list
注意如果不加[trusted=yes]可能会提示没有数字签名。
然后更新列表并查看:
feng@feng:~/test/deb$ sudo apt update
[sudo] feng 的密码:
获取:1 file:/home/feng/test/deb ./ InRelease
忽略:1 file:/home/feng/test/deb ./ InRelease
获取:2 file:/home/feng/test/deb ./ Release [816 B]
获取:2 file:/home/feng/test/deb ./ Release [816 B]
获取:3 file:/home/feng/test/deb ./ Release.gpg
忽略:3 file:/home/feng/test/deb ./ Release.gpg
命中:4 http://archive.build.openkylin.top/openkylin yangtze InRelease
命中:5 http://archive.build.openkylin.top/openkylin yangtze-security InRelease
命中:6 http://packages.microsoft.com/repos/code stable InRelease
命中:7 http://archive.build.openkylin.top/openkylin yangtze-updates InRelease
命中:8 http://software.openkylin.top/openkylin/yangtze default InRelease
获取:9 http://cz.archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
忽略:10 https://www.scootersoftware.com bcompare4 InRelease
命中:11 https://www.scootersoftware.com bcompare4 Release
已下载 270 kB,耗时 3秒 (95.7 kB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有 749 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
feng@feng:~/test/deb$ sudo apt search d-feet
正在排序... 完成
全文搜索... 完成
d-feet/未知 0.3.16-4 all [可从该版本升级:0.3.16-3]
D-Bus object browser, viewer and debugger
可以看到我自己源中的版本。
然后看是否能正常安装,在安装之前先强制卸载qdbus-qt5:
sudo dpkg --force-all -P qdbus-qt5
安装:
如图,将会自动安装依赖qdbus-qt5。
二、如何共享仓库源
搭建仓库源怎么分享给其它人呢?其实方法有很多,可以通过http,ftp,ssh等,这里就介绍通过apach搭建http服务器的用法,也仅限局域网内使用。要在公网上使用分享给别人,应该还需要数字签名等认证才行,这里不做介绍。
前置条件:假如我们已经在服务器上面搭建好了仓库:/home/lz/deb/
安装apach2:
sudo apt-get update
sudo apt-get install apache2
配置http:
deb.conf名字可变
sudo vim /etc/apache2/sites-available/deb.conf
写入以下内容保存退出:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html/deb-repo>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
将仓库复制到html目录下并修改权限:
sudo cp -a /home/lz/deb/ /var/www/html/
sudo chmod -R +rx /var/www/html/deb/
然后在客户端机器上添加源到list中即可访问该仓库源:
echo "deb [trusted=yes] http:192.168.2.114:/deb ./" >> /etc/apt/sources.list.d/test.list
这样,在制作镜像的时候,就可以很方便的安装自己的包以及其依赖包