![如何在自动安装期间禁用无人值守升级(用户数据、云配置)](https://linux22.com/image/946855/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%87%AA%E5%8A%A8%E5%AE%89%E8%A3%85%E6%9C%9F%E9%97%B4%E7%A6%81%E7%94%A8%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E5%8D%87%E7%BA%A7%EF%BC%88%E7%94%A8%E6%88%B7%E6%95%B0%E6%8D%AE%E3%80%81%E4%BA%91%E9%85%8D%E7%BD%AE%EF%BC%89.png)
有没有选项可以在自动安装会话期间抑制(或转发)自动无人值守软件包升级?当我们在本地配置了 ubuntu 镜像时,我不想从互联网站点为每个客户端下载大量数据。谢谢
答案1
当您使用 Ubuntu Live 服务器安装程序进行自动安装时(下位性)没有内置选项来禁用软件包更新。有一个updates
键,但仅可用选项是security
或all
。
不过,我发现了几种可以有效跳过更新的方法。我仅使用 22.04 安装程序测试了这些方法。
方法 1
此方法使用apt_preferences降低安全存储库中软件包的优先级。这会导致在更新过程中忽略安全存储库中的所有软件包。 中的 apt_preferences 配置被删除late-commands
。这种方法的缺点是很难安装其他 apt_preferences。
user-data
以下是此方法的文件片段。
#cloud-config
autoinstall:
updates: security
apt:
preferences:
- package: "*"
pin: "release a=jammy-security"
pin-priority: 200
late-commands:
- |
rm /target/etc/apt/preferences.d/90curtin.pref
true
方法 2
此方法sources.list
不使用安全存储库进行配置。结果是安全存储库中的软件包将不可用,并且不会更新任何软件包。缺点是安装将不会使用安全存储库进行配置。
user-data
以下是此方法的文件片段。
#cloud-config
autoinstall:
updates: security
apt:
disable_suites: [security]
使用本地镜像的替代选项
如果您确实只想使用本地镜像,那么您可以配置 apt 来使用它。以下是user-data
使用本地镜像配置 apt 的文件片段。
#cloud-config
autoinstall:
apt:
primary:
- arches:
- default
uri: http://YOURMIRROR
如果本地镜像没有镜像所有组件和套件,则自动安装可能会失败。您可能需要包含apt
以下键:
disable_components: [restricted,multiverse]
disable_suites: [backports,security]
也可以看看
笔记
我使用 Ubuntu 22.04 测试了这些配置(subiquity 22.04.2
)
答案2
你也可以看看我的回答—— https://askubuntu.com/a/1451620/1637750
在 Ubuntu 22.04 上测试并且有效。
答案3
下层社会(安装程序)使用科廷,进而使用unattended-upgrades
。您可以在创建映像时删除该包:
sudo apt-get -y -qq remove unattended-upgrades
如果需要,您可以通过迟来的命令。
答案4
这里有一个通过禁用 DNS 来禁用无人值守包升级的技巧。
autoinstall:
apt:
fallback: offline-install
early-commands:
- |
echo $(dig +short geoip.ubuntu.com | grep -v '\.$' | head -1) geoip.ubuntu.com >>/etc/hosts
sed -i '/^nameserver /d' /etc/resolv.conf
仅影响安装程序实时操作系统,因此是安全的。
但安装程序需要CountryCode
从https://geoip.ubuntu.com/lookup并写入/etc/apt/sources.list
以加速 apt 包操作。
因此,我们提前解析 IP,以使此功能在 DNS 禁用时仍能正常工作。