【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step6—本地apt源
注意事项
本文基于 Ubuntu 22.04 LTS 适配,部分包名和配置与 RedHat/Rocky/CentOS 有差异,请勿直接复用其它系统命令。如遇疑难欢迎在
VX 或 QQ 群与作者交流。
附录:完整内容和源代码下载请参照
https://doc.janettr.com/
一、场景说明
在 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
必须保证 Nginx 运行用户为
www-data
,且/data/modules
目录有 755 权限,否则出现 403 Forbidden 或找不到包。其实我就是root也没啥问题
四、DEB 包索引自动生成
4.1 工具准备
sudo apt update
sudo apt install -y dpkg-dev
- 工具:dpkg-scanpackages(不要用 createrepo!)
4.2 自动化生成索引(仅主源节点)
cd /data/modules
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
- 每次更新、增加或删除 .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/ ./
例如主源为 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