You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible apt模块中使用sourcelist、sourceparts、List-Cleanup选项?

问题

希望通过Ansible的apt模块执行以下apt命令:

apt-get update -o Dir::Etc::sourcelist="sources.list.d/mypackages.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"

不想通过shell模块实现该操作,原shell模块写法如下:

- name: update apt package manager with parameters
  shell: 'apt-get update -o Dir::Etc::sourcelist="sources.list.d/mypackages.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"'

执行完更新操作后,会执行以下安装任务:

- name: install plugin and core package
  apt:
    pkg:
    - dump_plugin
    - core
    state: present
    allow_unauthenticated: yes
    update_cache: yes

请问如何在Ansible的apt模块中使用sourcelist、sourceparts、List-Cleanup这三个选项?

解决方案

Ansible的apt模块提供了apt_options参数,可直接传递额外的APT命令行配置选项,无需依赖shell模块即可实现需求。

1. 单独执行指定源的缓存更新

用update_cache触发更新操作,同时通过apt_options传入需要的三个配置参数:

- name: 更新指定源的APT缓存
  apt:
    update_cache: yes
    cache_valid_time: 0  # 强制立即更新,忽略缓存有效期
    apt_options: '-o Dir::Etc::sourcelist="sources.list.d/mypackages.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"'

2. 执行软件包安装

因为已经单独完成指定源的缓存更新,安装任务可以关闭全局缓存更新,避免重复操作:

- name: 安装插件和核心包
  apt:
    pkg:
      - dump_plugin
      - core
    state: present
    allow_unauthenticated: yes
    update_cache: no

说明

apt_options参数会将填入的命令行选项直接传递给底层的apt-get或aptitude命令,所以可以直接复用原命令中的-o参数,实现和原生apt命令完全一致的效果。

内容的提问来源于stack exchange,提问作者Shubham Saroj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:05:19