Step6—本地apt源
注意事项
本文基于 Ubuntu 22.04 做的适配,其他版本自行适配,使用时请留意版本兼容性。如遇疑难可通过 VX 或 QQ 群与作者交流。
# 一、场景说明
在 Ubuntu 22.04 集群或企业内网环境,经常需要批量分发/自动化安装各类 DEB 包。自建 HTTP/本地 apt 源不仅解决了“离线环境下装包”问题,也让多节点集群部署极其高效可靠。
# 二、核心原理
- Nginx 提供 HTTP 服务,作为 DEB 包分发服务器
- 主节点生成本地 apt 索引(Packages.gz),所有节点通过 http 访问该索引
- 自动写入
/etc/apt/sources.list.d/xxx.list
,批量 update,所有主机都可离线拉包
# 三、标准目录结构与权限
sudo mkdir -p /data/modules
sudo chown -R www-data:www-data /data/modules
sudo chmod -R 755 /data/modules
1
2
3
2
3
警告
必须保证 Nginx 运行用户为 www-data
,且 /data/modules
目录有 755 权限,否则出现 403 Forbidden 或找不到包。其实我就是root也没啥问题
# 四、DEB 包索引自动生成
# 4.1 工具准备
sudo apt update
sudo apt install -y dpkg-dev
1
2
2
- 工具:dpkg-scanpackages(不要用 createrepo!)
# 4.2 自动化生成索引(仅主源节点)
cd /data/modules
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
1
2
2
- 每次更新、增加或删除 .deb 包都要重新执行此命令,保持索引最新
警告
和 RedHat/CentOS 不同,Ubuntu apt 仓库索引文件为 Packages.gz,必须用 dpkg-scanpackages
工具自动生成,createrepo 等
rpm 工具全部无效。
# 五、全节点自动化添加 apt 源
# 5.1 统一生成源文件
在所有节点写入 /etc/apt/sources.list.d/ambari.list
:
deb [trusted=yes] http://主源IP/ ./
1
例如主源为 192.168.3.1,则内容为
deb [trusted=yes] http://192.168.3.1/ ./
trusted=yes
禁用 GPG 校验,适合内网/离线测试- 每个节点都可以自动 update/upgrade
# 5.2 更新索引
sudo apt-get clean
sudo apt-get update
1
2
2
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16