转自:https://www.cnblogs.com/sixloop/p/make_ubuntu_apt_repo.html
ubuntu制作apt源
今天我们来讲一下怎么制作ubuntu源。
工作中给客户部署经常没有外网,这个时候我们就需要自己建立apt源仓库。
安装并配置web server
首先需要一个web server,常用的nginx 、apache httpd 等均可。
这里我们以nginx为例。
1.1. 安装:
apt install nginx
1.2. 编辑配置
编辑nginx配置文件,添加如下内容:
这里假设我们仓库目录是/var/www/apt_server
1.3. 重载配置
nginx -t reload
初始化仓库目录
和官方仓库 一样,我们按ubuntu版本来组织目录(本人用的zesty版本)
mkdir -p /var/www/apt_server
cd /var/www/apt_server
mkdir -p dists/zesty/main/binary-amd64
mkdir -p dists/zesty/main/binary-i386
ln -s /var/cache/apt/archives /var/www/apt_server/packages
保存自己的离线deb包
执行过sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get install XXX操作后,更新包和系统光盘里面没有的软件包都会保存在/var/cache/apt/archives/
目录下。
先随便下载一个包试试:
apt-get install tcpdump
这个时候/var/cache/apt/archives下会有一个deb包:
tcpdump_4.9.2-0ubuntu0.17.04.2_amd64.deb
建立包列表及依赖信息文件
4.1. 安装必要的软件包dpkg-dev
sudo apt-get install dpkg-dev
4.2. 建立包列表及依赖信息文件
cd /var/www/apt_server/
dpkg-scanpackages packages /dev/null
| gzip > dists/zesty/main/binary-amd64/Packages.gz
dpkg-scanpackages packages /dev/null
| gzip > dists/zesty/main/binary-i386/Packages.gz
该命令执行完成后,会生成一个Packages.gz文件,里面记录了本地包的列表及包依赖信息。
(客户端sudo apt-get update命令其实就是为了获取并更新该文件中的信息 )
至此,本地源就基本建好了。
验证本地仓库可用性
下面是我们在一台客户机中指定我们的apt源。
5.1. 配置客户机仓库列表
sudo vim /etc/apt/sources.list
加入我们的源地址:
(这里我们为了测试,先把在线仓库注释掉。)
保存退出vim,然后更新下仓库信息:
sudo apt-get update ---allow-insecure-repositories
5.2. 安装一个软件玩玩
接下来就是正常的apt-get install了。
sudo apt-get install tcpdump --allow-unauthenticated
注意事项:需要加上这个 --allow-unauthenticated选项。本地的源是没有签名的,直接更新ubuntu1604下的apt会提示找不到release文件,是一种不安全的源,默认是被禁用的。
安装过程中应该会看到是从我们自建的apt源下载的。
注:
这样制作的apt源没有签名,可能apt-get update报错,解决办法:
1、添加apt签名
2、在源中添加信任
deb [arch=amd64 trusted=yes] http://192.168.133.236:8080 zesty main