ubuntu制作apt源
ubuntu制作apt源
今天我们来讲一下怎么制作ubuntu源。
工作中给客户部署经常没有外网,这个时候我们就需要自己建立apt源仓库。
安装并配置web server
首先需要一个web server,常用的nginx 、apache httpd 等均可。
这里我们以nginx为例。
安装:
apt install nginx
编辑配置
编辑nginx配置文件,添加如下内容:
server {
error_log /var/log/nginx/apt_server.log info;
listen 8080;
#server_name www.example.com;
root /var/www/apt_server;
autoindex on;
location / {
#index index.html index.htm;
}
}
这里假设我们仓库目录是/var/www/apt_server
重载配置
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
建立包列表及依赖信息文件
安装必要的软件包dpkg-dev
sudo apt-get install dpkg-dev
建立包列表及依赖信息文件
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源。
配置客户机仓库列表
sudo vim /etc/apt/sources.list
加入我们的源地址:
deb [arch=amd64] http://192.168.133.236:8080 zesty main
#deb http://mirrors.163.com/ubuntu/ zesty main restricted universe multiverse
#deb http://mirrors.163.com/ubuntu/ zesty-updates main restricted universe multiverse
#deb http://mirrors.163.com/ubuntu/ zesty-security main restricted universe multiverse
#deb http://mirrors.163.com/ubuntu/ zesty-proposed main restricted universe multiverse
#deb http://mirrors.163.com/ubuntu/ zesty-backports main restricted universe multiverse
(这里我们为了测试,先把在线仓库注释掉。)
保存退出vim,然后更新下仓库信息:
sudo apt-get update ---allow-insecure-repositories
安装一个软件玩玩
接下来就是正常的apt-get install了。
sudo apt-get install tcpdump --allow-unauthenticated
注意事项:需要加上这个 --allow-unauthenticated选项。本地的源是没有签名的,直接更新ubuntu1604下的apt会提示找不到release文件,是一种不安全的源,默认是被禁用的。
安装过程中应该会看到是从我们自建的apt源下载的。
递归下载所需deb包及依赖包
#edit your package list.
PACKAGES="wget
tcpdump
unzip"
# get dep recurse
DEPS=$(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances \
--no-pre-depends ${PACKAGES} | grep "^\w" )
echo $DEPS
# download all deps
cd /var/www/ubuntu/packages/
apt-get download $DEPS
完。