自动安装本地存储库

自动安装本地存储库

我有自己的基于 Ubuntu 22.04 的 ISO,是我自己生成的。这是我的自动安装 -

#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: foo-ubuntu
    password: "ToReplace"
    username: abcabc
  source:
    id: ubuntu-server-minimal
  early-commands:
  - cat /cdrom/casper/install-sources.yaml | awk 'NR>1 && /^-/{exit};1' > /run/my-sources.yaml
  - mount -o ro,bind /run/my-sources.yaml /cdrom/casper/install-sources.yaml
  late-commands:
    - cp -r /cdrom/copy_to_iso/ /target/opt/
  user-data:
    runcmd:
      - |
        mkdir -vp /opt/INIT/
        mv -v /opt/copy_to_iso/upgrade_or_install_packages/ /opt/
        mv -v /opt/copy_to_iso/foo_installation/* /opt/INIT/ 
        mv -v /opt/copy_to_iso/abc_scripts /opt/abc_scripts
        rm -rvf /opt/copy_to_iso
        bash -x /opt/abc_scripts/copy_system_files.sh
        bash -x /opt/abc_scripts/setup_system_config.sh install_mode

early-commands和期间late-commands,我在 /cdrom/copy_to_iso/packages 下有一个包含所有所需软件包的本地存储库。在 部分期间user-data,位置是 /opt/packages。

当我在服务器上安装 ISO 时没有互联网连接后,安装过程非常顺利,所有必要的软件包都已安装。另一方面,当我在服务器上安装 ISO 时互联网连接,我在日志中看到它在互联网上找到了外部更新的包,并且它使从 /opt/packages 安装包的部分失败。

我在网上看到了一些相关的问题,但我希望让自动安装中的所有部分都能正常工作仅有的使用我的本地存储库。以下是我尝试过的方法 -

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

请查看“使用本地镜像的替代选项”。我的问题是,我在本地存储库中不使用 http,而是使用“文件”。

我试过 -

#cloud-config
autoinstall:
  apt:
  disable_components: [restricted,multiverse]
  disable_suites: [backports,security]
    primary:
    - arches:
      - default
      uri: file:///cdrom/copy_to_iso/packages/

而且file:/cdrom/copy_to_iso/packages/- 什么都不起作用,它仍然从外部存储库安装软件包。

就我的情况我应该怎么写呢?

答案1

我设法通过禁用网络作为自动安装的一部分来禁用自动更新:

network:
  ethernets: {}
  version: 2

late-commands添加以下内容/etc/netplan/50-cloud-init.yaml-

network:
  ethernets:
    ens160:
      dhcp4: true
      dhcp6: false

然后我运行netplan apply并且我的机器有网络。

答案2

此自动安装配置可能适合您

#cloud-config
autoinstall:
  apt:
    disable_components: [restricted,multiverse]
    disable_suites: [backports,security]
    primary:
    - arches:
      - amd64
      - i386
      uri: http://archive.ubuntu.com/ubuntu
    - arches:
      - default
      uri: http://ports.ubuntu.com/ubuntu-ports
    preferences:
      - package: "*"
        pin: "release a=jammy-updates"
        pin-priority: 200
  late-commands:
    - |
      rm /target/etc/apt/preferences.d/90curtin.pref
      true

这将使用不包含给定组件和套件的标准镜像来配置 apt。

preferences配置将禁用任何更新。从技术角度来说,来自jammy存储库的软件包将优先于来自jammy-updates存储库的软件包。这可能会避免在互联网上查找更新软件包的问题。将late-commands删除此首选项配置,以便它只会影响安装。

如果不了解更多信息,很难说如何使用自定义存储库。 看起来uri合理,但即使它在安装过程中确实有效,安装的系统也会有一个损坏的 apt 配置,因为/cdrom/copy_to_iso/packages不存在。 这个问题可以通过 more 来修复late-commands

相关内容