搭建本地仓库源

文章介绍了如何创建和管理本地Linux仓库源,包括修改DEB包、生成Packages和Release文件,以及将仓库源添加到系统列表中。此外,还讲解了通过ApacheHTTP服务器共享仓库源给局域网内的其他用户,以便于安装和管理自定义软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、如何搭建仓库源

         之前讲了定制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。

        注意:如果想像ubuntu源那样拥有完整的目录结构,可以使用reprepro,使用方法见文档说明即可

.
├── conf
│   └── distributions
├── db
│   ├── checksums.db
│   ├── contents.cache.db
│   ├── packages.db
│   ├── references.db
│   ├── release.caches.db
│   └── version
├── dists
│   └── stable
│       ├── main
│       │   ├── binary-amd64
│       │   │   ├── Packages
│       │   │   ├── Packages.gz
│       │   │   └── Release
│       │   └── binary-i386
│       │       ├── Packages
│       │       ├── Packages.gz
│       │       └── Release
│       └── Release
└── Packages.gz

二、如何共享仓库源

        搭建仓库源怎么分享给其它人呢?其实方法有很多,可以通过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

这样,在制作镜像的时候,就可以很方便的安装自己的包以及其依赖包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值