基本上,我想定期升级约 100 个工作站。我确实只需要自动升级特定的软件包(其余的可以根据需要手动完成),但由于机器从未处于标准更新周期,它们都有不同的版本和依赖项,我不能只是apt-get upgrade package-x package-y package-z
.
我原本apt-get -y dist-upgrade
以为 cron 作业会起作用,但我担心升级到某些特定其他软件包(例如 systemd)的损坏版本。我可以使用apt-mark hold package-a
来阻止它升级,但我被告知会dist-upgrade
覆盖所有保留标记。
在具有不同依赖关系的多台计算机上升级某些包,同时避免升级某些其他包的最佳方法是什么?
答案1
我认为dist-upgrade
覆盖不成立...
无论如何,要仅升级您关心的软件包,请安装它们:
apt-get install package-a package-b ...
这会将指定的包升级到给定您的设置的候选版本(通常是您的版本中的最新版本)以及任何必需的依赖项。尽管该命令的名称如此,但它适用于安装和升级。
如果您正在跟踪稳定版本,我不会担心忽略更新,您应该升级所有内容。unattended-upgrades
旨在为您处理这一问题(默认情况下用于安全升级,但您可以将其配置为自动获取稳定更新)。
答案2
这apt-mark hold
应该会阻止所需的软件包被升级。
有很多方法可以阻止某些软件包升级(2 个示例):
1) 将包添加到您的并/etc/apt/preferences
具有引脚优先级<0
:
Package: package_name_here
Pin: release o=Debian
Pin-Priority: -1
2) 使用 Synaptic 包管理器,选择所需的包,然后从菜单选项中选择 锁定版本并保存