如何在自动安装期间禁用无人值守升级(用户数据、云配置)

如何在自动安装期间禁用无人值守升级(用户数据、云配置)

有没有选项可以在自动安装会话期间抑制(或转发)自动无人值守软件包升级?当我们在本地配置了 ubuntu 镜像时,我不想从互联网站点为每个客户端下载大量数据。谢谢

答案1

当您使用 Ubuntu Live 服务器安装程序进行自动安装时(下位性)没有内置选项来禁用软件包更新。有一个updates键,但仅可用选项securityall

不过,我发现了几种可以有效跳过更新的方法。我仅使用 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

仅影响安装程序实时操作系统,因此是安全的。

但安装程序需要CountryCodehttps://geoip.ubuntu.com/lookup并写入/etc/apt/sources.list以加速 apt 包操作。

因此,我们提前解析 IP,以使此功能在 DNS 禁用时仍能正常工作。

相关内容