ansible.builtin.apt 模块 – 管理 apt 包
注意
此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定集合关键字,您也可以使用简短的模块名称 apt。但是,我们建议您使用完全限定的集合名称 (FQCN) ansible.builtin.apt,以便轻松链接到模块文档,并避免与其他可能具有相同模块名称的集合冲突。
概要
- 管理 apt 包(例如 Debian/Ubuntu)。 
要求
以下要求需要在执行此模块的主机上满足。
- python3-apt 
- aptitude (2.4 之前) 
参数
| 参数 | 注释 | 
|---|---|
| 允许更改 apt hold 列表中软件包的版本。 选项 
 | |
| 对应于 apt 的  此选项使指定的软件包和版本能够替换已安装的该软件包的更高版本。 请注意,设置  (任务最终可能得到一组与要安装的指定软件包的完整列表不匹配的软件包)。 
 选项 
 | |
| 忽略无法验证身份的软件包。这对于管理自己的 apt-key 设置的引导环境非常有用。 
 选项 
 | |
| 自动安装运行此模块所需的依赖项。 选项 
 | |
| 如果为  选项 
 | |
| 如果为  在 2.4 版本之前, 选项 
 | |
| 如果 apt 缓存的时间早于  从 Ansible 2.4 开始,如果显式设置,则将设置  默认:  | |
| 运行等效于  可以作为软件包安装的一部分运行(clean 在安装之前运行),也可以作为单独的步骤运行。 选项 
 | |
| 远程计算机上 .deb 包的路径。 如果路径中包含  需要  | |
| 对应于 apt 的  | |
| 将  选项应以逗号分隔列表的形式提供。 默认:  | |
| 对应于  如果为  
 
 选项 
 | |
| 对应于  此选项将禁用对软件包签名和下载它们的 Web 服务器证书的检查。 此选项 *不等同于* 在命令行上传递  **这是一个具有破坏性的操作,可能会破坏您的系统,几乎不应该使用它。** 另请参阅  选项 
 | |
| 强制使用 apt-get 而不是 aptitude。 选项 
 | |
| 对应于  选项 
 | |
| 此操作将等待多少秒来获取 apt 数据库的锁。 有时会出现瞬时锁,此操作将至少重试到超时为止。 默认值:  | |
| 软件包名称列表,例如  在引用带有特定版本的软件包名称时,请勿在版本周围使用单引号或双引号,例如  | |
| 仅当软件包已安装时才升级。 选项 
 | |
| 强制  例如,如果  如果  如果  | |
| 指示所需的软件包状态。 选项 
 | |
| 在操作之前运行相当于  默认情况下不更新缓存。 选项 
 | |
| 如果缓存更新失败,则重试次数。另请参见  默认值:  | |
| 为每次重试使用指数退避延迟(请参见  默认值:  | |
| 如果为 yes 或 safe,则执行 aptitude safe-upgrade。 如果为 full,则执行 aptitude full-upgrade。 如果为 dist,则执行 apt-get dist-upgrade。 注意:这不会升级特定的软件包,请使用 state=latest 来升级。 注意:自 2.4 起,如果 aptitude 不存在,则将 apt-get 用作后备。 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持: 完全 | 可以在 check_mode 中运行,并在不修改目标的情况下返回已更改状态的预测;如果不支持,则将跳过该操作。 | |
| 支持: 完全 | 当处于 diff 模式时,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息 | |
| 平台: debian | 可以针对其操作的目标操作系统/系列 | 
说明
注意
- 三种升级模式( - full、- safe及其别名- true)在 2.3 之前需要- aptitude,自 2.4 起,- apt-get被用作后备。
- 在大多数情况下,使用 *apt* 安装的软件包默认会启动新安装的服务。大多数发行版都有避免这种情况的机制。例如,在 Debian 9 中安装 Postgresql-9.5 时,创建一个返回代码为 101 的可执行 shell 脚本 (/usr/sbin/policy-rc.d) 将阻止 Postgresql 9.5 在安装后启动。之后删除该文件或其执行权限。 
- apt-get命令行在此处支持隐式正则表达式匹配,但我们不支持,因为它更容易让拼写错误通过(如果将- foo拼写为- fo,apt-get 将安装名称中带有“fo”的软件包,并向用户发出警告和提示。由于安装前没有警告和提示,因此我们不允许这样做。如果要使用通配符,请使用显式的 fnmatch 模式)。
- 当与 - loop:一起使用时,每个软件包都将单独处理,将列表直接传递给- name选项效率更高。
- 当使用 - default_release时,将使用 990 的隐式优先级。这与- apt-get -t的行为相同。
- 当指定确切的版本时,将使用 1001 的隐式优先级。 
- 如果解释器无法导入 - python3-apt,该模块还将在系统拥有的解释器中检查它。如果找不到依赖项,则根据- auto_install_module_deps的值,该模块将尝试安装它。如果找到或安装了依赖项,该模块将在正确的解释器下重新生成。
示例
- name: Install apache httpd (state=present is optional)
  ansible.builtin.apt:
    name: apache2
    state: present
- name: Update repositories cache and install "foo" package
  ansible.builtin.apt:
    name: foo
    update_cache: yes
- name: Remove "foo" package
  ansible.builtin.apt:
    name: foo
    state: absent
- name: Install the package "foo"
  ansible.builtin.apt:
    name: foo
- name: Install a list of packages
  ansible.builtin.apt:
    pkg:
    - foo
    - foo-tools
- name: Install the version '1.00' of package "foo"
  ansible.builtin.apt:
    name: foo=1.00
- name: Update the repository cache and update package "nginx" to latest version using default release squeeze-backport
  ansible.builtin.apt:
    name: nginx
    state: latest
    default_release: squeeze-backports
    update_cache: yes
- name: Install the version '1.18.0' of package "nginx" and allow potential downgrades
  ansible.builtin.apt:
    name: nginx=1.18.0
    state: present
    allow_downgrade: yes
- name: Install zfsutils-linux with ensuring conflicted packages (e.g. zfs-fuse) will not be removed.
  ansible.builtin.apt:
    name: zfsutils-linux
    state: latest
    fail_on_autoremove: yes
- name: Install latest version of "openjdk-6-jdk" ignoring "install-recommends"
  ansible.builtin.apt:
    name: openjdk-6-jdk
    state: latest
    install_recommends: no
- name: Update all packages to their latest version
  ansible.builtin.apt:
    name: "*"
    state: latest
- name: Upgrade the OS (apt-get dist-upgrade)
  ansible.builtin.apt:
    upgrade: dist
- name: Run the equivalent of "apt-get update" as a separate step
  ansible.builtin.apt:
    update_cache: yes
- name: Only run "update_cache=yes" if the last one is more than 3600 seconds ago
  ansible.builtin.apt:
    update_cache: yes
    cache_valid_time: 3600
- name: Pass options to dpkg on run
  ansible.builtin.apt:
    upgrade: dist
    update_cache: yes
    dpkg_options: 'force-confold,force-confdef'
- name: Install a .deb package
  ansible.builtin.apt:
    deb: /tmp/mypackage.deb
- name: Install the build dependencies for package "foo"
  ansible.builtin.apt:
    pkg: foo
    state: build-dep
- name: Install a .deb package from the internet
  ansible.builtin.apt:
    deb: https://example.com/python-ppq_0.1-1_all.deb
- name: Remove useless packages from the cache
  ansible.builtin.apt:
    autoclean: yes
- name: Remove dependencies that are no longer required
  ansible.builtin.apt:
    autoremove: yes
- name: Remove dependencies that are no longer required and purge their configuration files
  ansible.builtin.apt:
    autoremove: yes
    purge: true
- name: Run the equivalent of "apt-get clean" as a separate step
  ansible.builtin.apt:
    clean: yes
返回值
此处记录了常见的返回值 此处,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 上次缓存更新的时间(如果未知,则为 0) 返回:成功,在某些情况下 示例:  | |
| 缓存是否已更新 返回:成功,在某些情况下 示例:  | |
| 来自 apt 的错误输出 返回:成功,在需要时 示例:  | |
| 来自 apt 的输出 返回:成功,在需要时 示例:  | 
