背景
在前面的博客中,介绍了如何使用apt-mirror同步远程的repo源。
本文将介绍如何利用本地已经缓存的软件包制作成本地repo源,并对外提供源服务。
应用目标
在应用中,有时候会遇到类似问题:远程的软件源太慢,而如果同步远程的软件源到本地,又会消耗大量的数据存储(一个完整的软件源可能超过1T),而大部分的软件源实际上不需要用到。
如果:
只需要一个最小的软件源,这个软件包含了所需要安装的所有软件包的依赖库,那是一件多么令人欣喜的事!
这时候,就需要本地缓存的软件包。
原理
软件在安装的时候,会扫描Header并自动下载依赖的所有软件包以及运行库,并缓存到/var/cache/apt/archives中。通过dpkg-dev这工具可以将这些包打包成本地repo源。
步骤
$ sudo apt-get install dpkg-dev
等配置好后,在/下建立一个目录software作为软件包的存放地点,或者放在硬盘中任意位置。
将/var/cache/apt/archives中的所有软件包拷贝到这个文件夹里。
执行以下命令,进行软件源的制作
$ sudo dpkg-scanpackages /software /dev/null | gzip>/software/Packages.gz
等待系统扫描完所有的软件包后,会返回命令行,并且在software文件夹中生成一个名为Packages.gz的压缩文件,存有这个文件夹中的软件包信息及其依赖关系。
如此,本地repo源制作成功。
使用方法
1、仅本地使用
这种用途基本没太大的用途,可用于验证Repo源是否正常。
$ sudo gedit /etc/apt/sources.list
删除所有内容,添加
deb file:/// software/
Packages.gz文件中包含deb包的绝对路径信息
根路径 根路径到Packages的路径
保存。
打开终端,输入
$ sudo apt-get update
以更新本地的软件包列表
然后可以用apt-get命令安装本地源中含有的软件包或者执行
$ sudo apt-get dist-upgrade
命令更新系统。
2、对外提供repo源服务
原理:使用Apache对外提供服务
$ ln -s /software /var/www/html/software
$ sudo gedit /etc/apt/sources.list
删除所有内容,添加
deb http://192.168.206.170/ software/
然后就可以进行 update 跟 upgrade ,测试这个repo源是否成功了。