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 recurseDEPS=$(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 depscd /var/www/ubuntu/packages/apt-get download $DEPS
完。