Ensure that apt is always chosen on debian/ubuntu (#44413)

One can install alternate packages managers on debuntu machines.
However, doing so doesn't mean you want to suddenly start using them.

Add in a check similar to the fedora yum/dnf check that sets apt as the
pkg_mgr if the ansible_os_family is Debian.
pull/44269/merge
Monty Taylor 6 years ago committed by ansibot
parent 6d52afeed6
commit 27ac2fc67c

@ -0,0 +1,4 @@
bugfixes:
- Fixed an issue where ``ansible_facts.pkg_mgr`` would incorrectly set
to ``zypper`` on Debian/Ubuntu systems that happened to have the
command installed.

@ -122,6 +122,10 @@ class PkgMgrFactCollector(BaseFactCollector):
if collected_facts['ansible_os_family'] == "RedHat":
if pkg_mgr_name not in ('yum', 'dnf'):
pkg_mgr_name = self._check_rh_versions(pkg_mgr_name, collected_facts)
elif collected_facts['ansible_os_family'] == 'Debian' and pkg_mgr_name != 'apt':
# It's possible to install yum, dnf, zypper, rpm, etc inside of
# Debian. Doing so does not mean the system wants to use them.
pkg_mgr_name = 'apt'
elif collected_facts['ansible_os_family'] == 'Altlinux':
if pkg_mgr_name == 'apt':
pkg_mgr_name = 'apt_rpm'

@ -46,6 +46,30 @@
setup:
when: ansible_distribution == "Fedora"
# Verify correct default package manager for Debian/Ubuntu when Zypper installed
- block:
# Just make an executable file called "zypper" - installing zypper itself
# consistently is hard - and we're not going to use it
- name: install fake zypper
file:
state: touch
mode: 0755
path: /usr/bin/zypper
- name: gather facts again
setup:
- name: validate output
assert:
that:
- 'ansible_pkg_mgr == "apt"'
always:
- name: remove fake zypper
file:
path: /usr/bin/zypper
state: absent
- name: gather facts again
setup:
when: ansible_os_family == "Debian"
##
## package
##

Loading…
Cancel
Save