Website-Suche

Interaktion mit YUM auf CentOS unter Verwendung von Python


YUM ist ein Dienstprogramm zur Handhabung von Softwarepaketen, die von mehreren bekannten Betriebssystemen wie Fedora und CentOS verwendet werden. YUM vereinfacht die Softwareinstallationen auf einer CVM-Instanz und ermöglicht ein einfaches Herunterladen und Installieren der Programme, was Zeit und Mühe spart. YUM kann alle verfügbaren Abhängigkeiten automatisch bestimmen, abrufen und installieren, da es die Abhängigkeiten beim Aktualisieren, Hinzufügen oder Entfernen der Pakete automatisch auflöst. In diesem Artikel werden wir mehr über YUM mit Python im CentOS-System lernen.

Beispiel 1: Aktualisieren des YUM-Moduls mit Python in CentOS

Wie wir wissen, ist YUM ein Kommandozeilenwerkzeug, das es den Benutzern ermöglicht, automatisch die aktualisierten RPM-Pakete herunterzuladen und zu installieren, nachdem nach Updates gesucht wurde.

#!/usr/bin/ python

import os
cmd = "yum update"
os.system(cmd)

Hier aktualisieren wir YUM mit der Python-Datei, um zu überprüfen, ob das YUM-Modul im System aktualisiert ist oder ein Update benötigt. Das Python-Skript wird bereitgestellt, in dem YUM zur Aktualisierung verwendet wird. Wir importieren das „os“-Modul, um mit dem CentOS-Betriebssystem zu interagieren. Dann verwenden wir „cmd“, um die Anweisung zu interpretieren, die ihr zugewiesen ist. Wir weisen einen Befehl zu, um YUM zu aktualisieren.

Das Skript ist in der Datei "script.py" gespeichert. Wenn wir diese Python-Datei ausführen, beginnt sie, YUM zu aktualisieren. Die Ausgabe druckt die Aussage, die besagt, dass "keine Pakete zum Aktualisieren markiert sind", da YUM bereits in CentOS aktualisiert ist.

[root@Linux01 kalsoom]# python script.py
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.dc.uz
 * extras: mirror.dc.uz
 * updates: mirror.dc.uz
No packages marked for update

Beispiel 2: Überprüfen der YUM-Konfiguration mit Python in CentOS

Der vorherige Ansatz besteht darin, das YUM-Paket mithilfe des Python-Skripts durch Interaktion mit CentOS zu aktualisieren. Jetzt muss das "yum"-Python-Paket importiert werden, um YUM im Programmieren zu verwenden, das im CentOS-Betriebssystem vorinstalliert ist. YUM wird in diesem Fall verwendet, um die YUM-Konfiguration zu überprüfen.

#!/usr/bin/ python

import os
import sys
import yum

yb = yum.YumBase()

print "****yum config file****"
print yb.conf.config_file_path

print "****logfile path****"
print yb.conf.logfile

print "****repos directories and files****"
for i in yb.conf.reposdir : print i

print "****skip-broken parameter****"
print yb.conf.skip_broken

print "****set the level of errors****"
print yb.conf.errorlevel

Der vorherige Quellcode wird mit dem „yum“-Modul zusammen mit den anderen erforderlichen Modulen importiert. Danach erstellen wir die „yb“-Variable, in der die Basisklasse yumBase() des „yum“-Moduls implementiert wird. Wir verwenden diese Codezeile in jedem unserer Beispielscripte, da YumBase die Wurzelklasse ist, die die Methoden und Objekte enthält, die benötigt werden, um alle Paketverwaltungsoperationen mit YUM durchzuführen.

Die Druckausgaben werden bereitgestellt, um die Konfiguration von YUM zu überprüfen. Zunächst haben wir eine Druckausgabe, die den Pfad der YUM-Konfigurationsdatei anzeigt. Dann setzen wir einen Druckbefehl für logFile unter Verwendung der "yb"-Variable, um den Logfile-Pfad von YUM abzurufen. Danach verwenden wir den Befehl "reposdir", um die Verzeichnisse und Dateien des Repositories auszugeben. Dann haben wir einen YUM-Befehl mit einem skip-broken-Parameter, der standardmäßig false zurückgibt, wenn kein boolescher Wert für ihn angegeben ist. Wenn der skip-broken-Parameter einem yumBase-Konfigurationsbefehl mit einem true-Wert zugewiesen wird, ermöglicht es YUM, beschädigte Pakete automatisch von Updates auszuschließen, ohne dass eine Benutzereingabe erforderlich ist. Der letzte Befehl der YUM-Konfiguration ist "errorlevel", um das Fehlermeldungsniveau festzulegen. Er hat einen Wert, der von null bis 10 reicht, wobei 0 nur wichtig und 10 Debug umfasst.

Die YUM-Konfiguration druckt die Konfigurationsdatei von YUM auf das Terminal. Außerdem erhalten wir den Pfad der Logdatei der YUM-Konfiguration. Zusammen mit diesem werden die Verzeichnisse und Dateien des YUM-Repositorys angezeigt. Dann erhalten wir den falschen Wert vom skip-broken-Befehl, da kein Wert dafür festgelegt ist. Das Niveau der Fehlermeldungen wird ebenfalls als "2" ausgegeben.

[root@Linux01 kalsoom]# python script.py
****yum config file****
Loaded plugins: fastestmirror, langpacks
/etc/yum.conf
****logfile path****
/var/log/yum.log
****repos directories and files****
/etc/yum/repos.d
/etc/yum.repos.d
****skip-broken parameter****
False
****set the level of errors****
2

Beispiel 3: Suchen nach Paketen aus den YUM-Repositories mit Python in CentOS

YUM wird in diesem Fall verwendet, um die YUM-Repositories für die angegebenen Pakete zu lokalisieren und anzuzeigen. Wir verwenden einige verschiedene Methoden der yumBase-Klasse des folgenden YUM-Pakets:

import os
import sys
import yum

yb = yum.YumBase()
yb.setCacheDir()

results = yb.pkgSack.returnNewestByNameArch(patterns=["python", "php"])

for pkg in results:

    print "%s %s (%s) \n\t%s" % (pkg.name, pkg.version, pkg.arch, pkg.summary)

Nach der Bereitstellung des YUM-Moduls im vorherigen Python-Skript fügen wir die Zeile yum.YumBase() hinzu, um den Code zu beginnen. Dann definieren wir den Befehl setCacheDir() von yumBase, um ein neues Yum-Cache-Verzeichnis einzurichten, um alle Operationen sowohl als regulärer Benutzer als auch als Root-Benutzer durchzuführen. Die nächste Zeile des Skripts ist mit der Variablen "results" definiert, in der wir das yumBase verwenden, das mit dem Befehl "pkgScak" aufgerufen wird, um die Abfragen auf allen verfügbaren Repositories auszuführen. Danach verwenden wir die Funktion "returnNewstByNameArch" des Attributs "pkhScak" von YUM. Die Methode returnNewstByNameArch() ruft die Paketobjekte ab, die den Musterzeichenfolgen "python" oder "PHP" entsprechen.

Die Informationen, die mit den Paketen “python” und “PHP” verbunden sind, werden im CentOS-Terminal vom YUM-Modul ausgegeben.

[root@Linux01 kalsoom]# python script.py
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.dc.uz
 * extras: mirror.dc.uz
 * updates: mirror.dc.uz
python 2.7.5 (x86_64)
An interpreted, interactive, object-oriented programming language
php 5.4.16 (x86_64)
PHP scripting language for creating dynamic web sites

Beispiel 4: Paket mit der YUM-Methode unter Verwendung von Python in CentOS installieren

Die Installation des Pakets mit YUM erfordert das Einrichten und Abschließen einer Transaktion. Die YumBase-Klasse des YUM-Moduls bietet die Methode, um die Pakete in CentOS mit Python zu installieren.

import os
import sys
import yum

yb = yum.YumBase()
yb.install(name='php')

yb.resolveDeps()
yb.processTransaction()

Wir setzen die yumBase() Klasse in der Variable "yb" ein, nachdem wir die YUM-Module im vorherigen Python-Skript importiert haben. Dann verwenden wir den Befehl yb.install, um das angegebene Paket einfach zu installieren. Die Methode yb.install() nimmt den "Namen" als Argument, dem wir den Paketnamen "php" zuweisen, um die Transaktion festzulegen. Danach wird die Methode "yb.resolveDeps()" aufgerufen, um die Auflösung der Abhängigkeiten zu initiieren. Anschließend löst die Methode processTransaction() die Installation des "php" Pakets aus.

Wir können im Ergebnis sehen, dass das PHP-Paket erfolgreich im CentOS-Betriebssystem installiert wurde, indem mit den YUM-Methoden interagiert wurde.

[root@Linux01 kalsoom]# python script.py
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.dc.uz
 * extras: mirror.dc.uz
 * updates: mirror.dc.uz
Package php-5.4.16-48.el7.x86_64 already installed and latest version
Running Transaction Check

Beispiel 5: Ein Repository an einem bestimmten Ort mit der YUM-Methode unter Verwendung von Python in CentOS einrichten

YUM kann so konfiguriert werden, dass es ein Repository an einem beliebigen Ort abruft. Es erwartet, einen Befehlszeilenparameter zu erhalten, der die URL des Repositories enthält.

import os
import sys
import yum

url = sys.argv[1]

yb = yum.YumBase()
if not yb.setCacheDir(force=True, reuse=False): print >>sys.stderr, "enable to create a tmp. cachedir. "
sys.exit(1)

yb.repos.disableRepo('*')

yb.add_enable_repo('NewRepos', [url])

Hier verwenden wir die Methode yb.repos.disableRepo('*'), die alle Repositories deaktiviert, da wir das Sternsymbol darin angeben. Danach rufen wir die Methode yb.add_enable_repo() auf, um das gegebene Repository zu aktivieren, in dem die URL festgelegt ist.

Das vorherige Python-Skript, das mit YUM interagiert, setzt das gegebene Repository an dem spezifischen Standort auf CentOS, wodurch die folgenden Ergebnisse erzeugt werden:

[root@Linux01 kalsoom]# python script.py url://to/New/Repos
Loaded plugins: fastestmirror, langpacks

Fazit

Dieser Leitfaden erkundete Möglichkeiten, die Python-API des YUM-Pakets zu nutzen. Wir führen einfach den um-Befehl aus dem Python-Skript aus, um die Operation zu aktualisieren. Dann verwendeten wir das YUM-Paket zur Konfiguration von YUM in CentOS. Darüber hinaus wird das spezifische Paket mit dem YUM-Modul abgefragt. Danach haben wir demonstriert, wie man das Paket mit der YUM-Methode installiert. Auf die gleiche Weise können wir auch dieses Paket mit der Methode yb.remove() deinstallieren. Am Ende richten wir das Repository am Standort ein, indem wir mit dem YUM-Modul in Python interagieren.