yum install -y dnf
)Einfach ausgedrückt ist dnf
der Nachfolger von yum
und ab CentOS 8 wird standardmäßig dnf
anstelle von yum
verwendet.
Sie können den Befehl yum
in CentOS8 verwenden, aber es ist nur eine symbolische Verknüpfung zu dnf
.
Die Unterstützung für Python 2.X endete am 1. Januar 2020.
--yum funktioniert nur mit python2.X --dnf funktioniert mit Python 2.x oder 3.X.
Von nun an wird "dnf" zum Mainstream.
Installieren Sie dnf im CentOS 7.X Docker-Container.
[dnfuser@localhost ~]$ docker run -it --rm centos:7 bash
[root@3b4a088d7e6f /]# yum update -y
[root@3b4a088d7e6f /]# yum install -y epel-release
[root@3b4a088d7e6f /]# yum install -y dnf
[root@3b4a088d7e6f /]# head -n1 /usr/bin/dnf
#!/usr/bin/python2
Anscheinend läuft "dnf" von CentOS 7.X auf Python 2.X.
Ich habe es nach der Installation von python3.X versucht, aber dnf
wird zu 2.X.
https://docs.ansible.com/ansible/latest/modules/dnf_module.html
Wenn der Interpreter Python 2.X ist, können Sie ihn einfach installieren.
playbook.yml
- name: Install epel-release
yum:
name: epel-release
state: present
become: yes
- name: Install dnf
yum:
name: dnf
state: present
become: yes
ansible.cfg
[default]
ansible_python_interpreter=/usr/bin/python3
Wie oben erwähnt, müssen Sie den Python 3.X-Interpreter standardmäßig auf 2.X zurücksetzen, wenn Sie ihn standardmäßig verwenden.
playbook.yml
- name: Install dnf for Centos7
block:
- name: Change interpreter
set_fact:
ansible_python_interpreter: "/usr/bin/python"
- name: Install epel-release
yum:
name: epel-release
state: present
become: yes
- name: Install dnf
yum:
name: dnf
state: present
become: yes
when:
- ansible_distribution_major_version | float < 8
Der Interpreter ist auch für nachfolgende Aufgaben 2.X.
Ansible 2.12 ver. Scheint das Verhalten des Standardinterpreten zu ändern. (Vielleicht ist Python 3.X die bevorzugte Wahl)
Referenz) https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html https://rheb.hatenablog.com/entry/ansible_interpreter_discovery
In der aktuellen Version (2.9) ist standardmäßig / usr / bin / python
angegeben, sodass die verwendete Python-Version je nach Betriebssystem unterschiedlich sein kann.
Die beste Vorgehensweise für diejenigen, die nicht auf Version 2.12 warten können und den Befehl dnf
verwenden möchten, lautet wie folgt.
Für diejenigen, die sagen "Python 2.X ist in Ordnung", können Sie den Standardinterpreter verwenden.
** Geben Sie den Python 2.X-Interpreter im Inventar für den CentOS 7.X-Host an **
inventory.yml
all:
children:
centos7:
hosts: centos7-1
vars:
ansible_python_interpreter: /usr/bin/python # /usr/bin/python2 ist auch OK
Wenn Sie nur CentOS7 gruppieren, scheint die Implementierung einfach zu sein.
** Erzwinge, dass der Interpreter im Playbook auf 2.X wechselt **
playbook.yml
- name: Change interpreter
set_fact:
ansible_python_interpreter: /usr/bin/python
Übrigens verwende ich dies für den Fall, dass Python 3.X zum Standard wird.
Recommended Posts