来自 aptitude 命令 运行 的非零 return 代码通过 Ansible

non-zero return code from aptitude command run via Ansible

我在 运行 以下 Ansible 任务时遇到错误:

    - name: List packages to upgrade (1/2)
      shell: aptitude -q -F%p --disable-columns search "~U"
      register: updates
      changed_when: False
      when: ansible_os_family == 'Debian'

错误:

TASK [List packages to upgrade (1/2)] ********************************************************************************************************************************
fatal: [php7e]: FAILED! => {"changed": false, "cmd": "aptitude -q -F%p --disable-columns search \"~U\"", "delta": "0:00:00.828791", "end": "2021-06-23 10:31:26.849961", "msg": "non-zero return code", "rc": 1, "start": "2021-06-23 10:31:26.021170", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

在另一台服务器上发现,我没有收到此错误。没有问题的服务器具有 aptitude 0.7.4,而有错误的服务器具有 aptitude 0.8.10。

显然 aptitude search returns 如果没有软件包与搜索词匹配(在您的情况下:如果没有可升级的软件包),退出代码为 1

根据更新日志:

aptitude (0.7.6-1) unstable; urgency=low
[...]
      * [cmdline] "search" now exits with non-zero on errors or empty results
        (Closes: #497299)

所以:观察到的行为是正确的并且是预期的。 您必须相应地更新您的 ansible 任务。