我正在尝试制作一个集中式补丁管理工具,可用于对我的网络中的所有 Ubuntu 机器执行受控更新。
我做了一些研究,并收集了以下信息:-
- 有一款付费工具叫Landscape,可以达到同样的目的。但是价格太贵了。
- 还有其他工具,如 Puppet/Chef/Ansible,它们主要是配置工具。
- Pulp 基本上是一个存储库克隆工具。
事实是,我希望实现这些目标。并且愿意付出努力来实现它。
我的要求是:-
- 要获取需要更新的软件包列表,请访问Ubuntu 安全声明] 及其依赖项
- 从 Windows 机器下载这些包并将其保存在那里。
- 然后根据需要将这些分发到所有 Ubuntu 机器。
编辑 :由于带宽限制,我想避免每台 Ubuntu 机器都上网
是否有任何 API 可用于获取上述软件包列表(与依赖项)?如果是,免费还是付费?
答案1
假设您实际上并未出于安全目的或其他原因尝试隔离机器:
将一台 ubuntu 机器连接到互联网。使用 apt-get 正常安装更新。
您刚刚用来升级该盒子的 .deb 现在存储在 中
/var/cache/apt/archives
。将.deb scp 到其他每台 ubuntu 机器上。
花费一点带宽,在每台机器上放入 .debs
/var/cache/apt/archives
并运行apt-get update && apt-get upgrade
(或 aptitude 等)。机器将访问网络以获取新的软件包列表,但当需要下载升级软件包时,它会发现缓存中已经有这些软件包,只需安装它们即可。为了最大程度地节省带宽,只需使用 安装新的 .deb 即可
dpkg -i <files
。
显然,如果您混合使用 32 位和 64 位机器、不同的架构等,情况会稍微复杂一些。但无论如何,您仍然必须下载所有更新的软件包。