![使用 PPA 发送简单更新](https://linux22.com/image/856274/%E4%BD%BF%E7%94%A8%20PPA%20%E5%8F%91%E9%80%81%E7%AE%80%E5%8D%95%E6%9B%B4%E6%96%B0.png)
我希望设置一个 PPA,将简单的更改发送到现场的数百台 ubuntu 12.04 机器。简单的更改意味着 bash 脚本更改和配置文件更新,以及可能的其他软件更新,包括可以通过 apt-get install 安装的新软件安装。我想到几个问题是,
- PPA 可以用来发送脚本更新吗?
- 我可以配置客户端机器仅从此 PPA 获取更新并像无人值守升级一样自动安装它们吗?(当然我知道这个选项是可行的,但需要一套好的工具来实现这一点)。
我知道这是一个很宽泛的问题,但如果能给出一些建议和答案,我将非常感激。
答案1
我也想做同样的事情,但我选择使用通过reprepro
PPA 创建的私有存储库。我的所有客户端都在同一个 LAN 上,所以对我来说更简单。我认为无论您使用 PPA 还是私有存储库,这都是非常可行的。
- 在我看来,修改现有配置文件最好通过使用
dpkg
转移来处理。config-package-dev
对此来说是一种祝福。Debian 维基是了解此信息的一个很好的起点。 - 通过打包添加脚本文件或您自己的软件并不困难。有很多打包指南。同样,Debian 维基是一个很好的起点。制作二进制包比介绍更简单,介绍就是脚本和配置文件的情况。
- 可以通过将其他存储库中的新软件设为软件包的依赖项来添加它们。指定确切的版本或使用
apt
钉住。 - 自定义存储库的无人值守升级已经处理:如何为任何存储库启用静默自动更新?我不知道服务器可以通过什么方式将更新推送到客户端。您可能需要考虑
puppet
(通过kick
ing)或类似方法。或者您可以在服务器上编写一个脚本,使用 SSH 在客户端上运行更新。或者编写一个脚本,在网络启动时检查更新。 - 最重要的是,确保您的软件包维护脚本 (
preinst, postinst, prerm, postrm
) 是幂等的,并且软件包删除会撤消所有更改。这些脚本可以做很多事情,但不会对它们产生任何影响apt
。dkpg
尽量减少这些脚本中所做的工作。
就我而言,我使用一个包来配置 LDAP 和 NTP,添加自定义全局vimrc
启用常用选项,进行各种配置更改(例如sudo
为组启用、禁止关机)、添加非特权本地用户/组等。另一个包添加了我们自己生成的 CA 证书和存储库签名密钥并在脚本中将它们标记为受信任postinst
,并为我们的存储库添加一个条目sources.list.d
。
我还没有将所有系统转换为这个过程,所以我还不能评论它的有效性。