Bug 41494 - При наличии perl-Package ansible модуль package пытается использовать pkg5
Summary: При наличии perl-Package ansible модуль package пытается использовать pkg5
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: ansible (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-12-02 19:31 MSK by Slava Aseev
Modified: 2021-12-07 14:49 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Slava Aseev 2021-12-02 19:31:35 MSK
Если в системе установлен perl-Package (со своим /usr/bin/pkg), то модуль package пытается использовать pkg5 вместо apt_rpm.

Убедиться можно просто, вот такой плейбук при повторном запуске выдаст ошибку (при первом же сначала установит пакет perl-Package):
---
- name: "Test"
  hosts: somehost

  tasks:
  - name: test
    package:
      state: present
      name: perl-Package

Сама ошибка:
FAILED! => {
    "changed": false,
    "module_stderr": "Shared connection to 10.88.15.103 closed.\r\n",
    "module_stdout": "...",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

module_stdout в более-менее читабельном виде:

Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-tmp-1638461393.9872942-13059-89818530951856/AnsiballZ_pkg5.py", line 102, in <module>
    _ansiballz_main()
  File "/root/.ansible/tmp/ansible-tmp-1638461393.9872942-13059-89818530951856/AnsiballZ_pkg5.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/root/.ansible/tmp/ansible-tmp-1638461393.9872942-13059-89818530951856/AnsiballZ_pkg5.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible.modules.packaging.os.pkg5', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib64/python3.9/runpy.py", line 210, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.9/runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/tmp/.private/root/ansible_pkg5_payload_a4h3htv4/ansible_pkg5_payload.zip/ansible/modules/packaging/os/pkg5.py", line 182, in <module>
  File "/tmp/.private/root/ansible_pkg5_payload_a4h3htv4/ansible_pkg5_payload.zip/ansible/modules/packaging/os/pkg5.py", line 106, in main
  File "/tmp/.private/root/ansible_pkg5_payload_a4h3htv4/ansible_pkg5_payload.zip/ansible/modules/packaging/os/pkg5.py", line 157, in ensure
TypeError: can only concatenate list (not "filter") to list

Судя по lib/ansible/module_utils/facts/system/pkg_mgr.py причина тут в том, что последний найденный package manager оказывается в приоритете. Потому и получаем pkg5 вместо apt.
http://git.altlinux.org/gears/a/ansible.git?p=ansible.git;a=blob;f=lib/ansible/module_utils/facts/system/pkg_mgr.py;h=4fe36ff7aadb8a540b988670c7f5ca862aa47a84;hb=8c37018a689fba2462f5f972616b256b0ef804b1#l13
Comment 1 Slava Aseev 2021-12-03 19:10:42 MSK
Сделал PR: https://github.com/ansible/ansible/pull/76457
В принципе, могу пока сделать патч у нас. Непонятно, пройдет ли в апстрим.
Comment 2 Andrey Cherepanov 2021-12-03 19:14:23 MSK
(Ответ для Slava Aseev на комментарий #1)
> Сделал PR: https://github.com/ansible/ansible/pull/76457
> В принципе, могу пока сделать патч у нас. Непонятно, пройдет ли в апстрим.

Я сейчас собираю ansible на stable-2.9 и ansible-core на master. Можно и туда и туда. Спасибо за патч.
Comment 3 Repository Robot 2021-12-07 14:49:27 MSK
ansible-2.9.26-alt3 -> sisyphus:

 Tue Dec 07 2021 Slava Aseev <ptrnine@altlinux> 2.9.26-alt3
 - Prohibit pkg5 usage (closes: #41494)