我目前管理着十几台服务器。apt-cacher-ng
安装在开发服务器上以维护软件包。
这个想法是一模一样生产服务器上的包的版本和数量。
我们首先在开发服务器上进行更新/升级,然后在验证安装后(可能需要几个小时或一天),我们在生产服务器上进行同样的操作。
问题在于,在我们在开发服务器和生产服务器上进行更新之间,软件包的版本可能发生了变化,因此生产服务器不会获得相同版本的软件包。
我可以强制客户端(生产服务器)与开发服务器同步,而不是在互联网上检索较新的软件包吗?
或者,是否有任何巧妙的自动化方法来确保我的客户端与开发服务器同步?
谢谢阅读。
编辑:
找到了这个链接:debian-administration.org:克隆 Debian 系统 - 相同的软件包和版本。
它部分解决了我的问题,但我仍在寻找apt-cacher-ng
其他答案。
答案1
您是否尝试过将 acng 服务置于离线模式?
更新开发服务器后,添加offlinemode:1
到 acng 配置文件并重新启动服务器。它仍然可以提供缓存的内容,但不会通过互联网检索任何较新的软件包。
答案2
我意识到这是一个老问题,但这是我解决这个问题的方法。
您可以在调用 call 时指定版本号apt-get install
,如下所示:
apt-get install apache2=2.2.20-1ubuntu1
这将安装 的版本2.2.20-1ubuntu1
。apache2
因此,当您设置开发服务器时,请确保指定最新版本号,这将为您提供与 相同的结果apt-get install x
。但是当您转到生产环境时,请指定相同的版本号(将存储在您的ap-cacher-ng
服务器中)以安装该精确版本,无论是否已发布新版本。
看这个问题更多细节。
答案3
只需创建一个偏好配置 dev-dep-pin.conf
在/etc/apt/preferences.d
生产服务器和开发服务器上仅锁定版本重要的依赖包(否则自动更新毫无意义,对吧?)。您可以明智地使用策略条件来创建效果最佳的锁定方案。
scp
/rsync
在您需要通过 apt-update/apt-upgrade/apt-install 在生产服务器和开发服务器之间同步软件包之前,请在开发服务器和生产服务器之间复制该文件。
这样,您可以让生产服务器自由地自动更新系统包,同时维护依赖树中重要包的版本与开发服务器的配置完全相同。
在安装期间指定版本不能保证软件包在未来的更新/安装中不会发生变化(因为依赖于其他软件包)。固定是为了使其持久。