community.general.dpkg_divert 模块 – 覆盖 Debian 包的文件版本

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 需求 获取详细信息。

要在 playbook 中使用它,请指定:community.general.dpkg_divert

community.general 0.2.0 中的新增功能

概要

  • 转移是针对 dpkg 的知识,只有给定的包(或本地管理员)才允许在给定位置安装文件。其他提供此文件自己版本的包将被迫 divert 它,即安装到另一个位置。它允许通过防止在包升级时被覆盖来保留 Debian 包提供的文件中所做的更改。

  • 此模块使用 dpkg-divert 命令行工具管理 Debian 包文件的转移。它可以创建或删除给定文件的转移,还可以更新现有转移以修改其 holder 和/或其 divert 位置。

需求

以下是执行此模块的主机上所需的条件。

  • dpkg-divert >= 1.15.0 (Debian 系列)

参数

参数

注释

divert

路径

文件版本将被转移到的位置。

默认情况下,会在文件路径后添加 .distrib 后缀。

state=absent 时,忽略此参数。

force

布尔值

rename=trueforce=true 时,即使重命名目标已存在,也会执行重命名,即此位置的文件现有内容将丢失。

rename=false 时,忽略此参数。

选项

  • false ← (默认)

  • true

holder

字符串

未被转移的文件的包名,也称为转移持有者或转移所属的包。

实际的包不必安装甚至存在才能使它的名称有效。如果未指定,则转移由“LOCAL”持有,这是 dpkg 为本地转移保留的。

state=absent 时,忽略此参数。

路径

路径 / 必填

要转移或取消转移文件的原始绝对路径。此路径是唯一的,即不可能获得同一个 path 的两个转移。

rename

布尔值

实际上是将文件移开(当 state=present 时)或移回(当 state=absent 时),但仅在更改转移状态时才如此。尝试添加已存在的转移或删除不存在的转移时,此参数无效。

除非 force=true,否则如果目标文件已存在,则重命名将失败(此锁定是 dpkg-divert 的功能,而绕过它是模块的功能)。

选项

  • false ← (默认)

  • true

state

字符串

state=absent 时,移除指定 path 的重定向;当 state=present 时,如果重定向不存在则创建它,或者如果它已经存在则更新其软件包 holderdivert 位置。

选项

  • "absent"

  • "present" ← (默认)

属性

属性

支持

描述

check_mode

支持:完全支持

可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:完全支持

在差异模式下,将返回有关已更改内容(或在check_mode下可能需要更改的内容)的详细信息。

示例

- name: Divert /usr/bin/busybox to /usr/bin/busybox.distrib and keep file in place
  community.general.dpkg_divert:
    path: /usr/bin/busybox

- name: Divert /usr/bin/busybox by package 'branding'
  community.general.dpkg_divert:
    path: /usr/bin/busybox
    holder: branding

- name: Divert and rename busybox to busybox.dpkg-divert
  community.general.dpkg_divert:
    path: /usr/bin/busybox
    divert: /usr/bin/busybox.dpkg-divert
    rename: true

- name: Remove the busybox diversion and move the diverted file back
  community.general.dpkg_divert:
    path: /usr/bin/busybox
    state: absent
    rename: true
    force: true

返回值

常见的返回值已在 此处 记录,以下是此模块独有的字段

描述

commands

列表 / 元素=字符串

模块内部运行的 dpkg-divert 命令。

返回:成功时

示例:["/usr/bin/dpkg-divert --no-rename --remove /etc/foobarrc"]

diversion

字典

任务执行后重定向的状态。

返回:始终返回

示例:{"divert": "/etc/foobarrc.distrib", "holder": "LOCAL", "path": "/etc/foobarrc", "state": "present"}

divert

字符串

重定向文件的路径。

返回:成功时

holder

字符串

持有重定向的软件包。

返回:成功时

路径

字符串

要重定向/取消重定向的文件路径。

返回:成功时

state

字符串

重定向的状态。

返回:成功时

messages

列表 / 元素=字符串

dpkg-divert 相关的消息(标准输出或标准错误)。

返回:成功时

示例:["Removing 'local diversion of /etc/foobarrc to /etc/foobarrc.distrib'"]

作者

  • quidame (@quidame)