102.5 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
102 Linux-Installation und -Paketverwaltung |
Lernziel: |
102.5 RPM und YUM-Paketverwaltung verwenden |
Lektion: |
1 von 1 |
Einführung
Vor langer Zeit, als Linux noch in den Kinderschuhen steckte, war die gebräuchlichste Art, Software zu verteilen, eine komprimierte Datei (normalerweise als .tar.gz
-Archiv) mit Quellcode, die man selbst entpacken und kompilieren musste.
Als jedoch die Menge und Komplexität der Software wuchs, wurde die Notwendigkeit einer Möglichkeit zur Verteilung vorkompilierter Software deutlich. Schließlich verfügte nicht jeder über die zeitlichen und computertechnischen Ressourcen, um große Projekte wie den Linux-Kernel oder einen X Server zu kompilieren.
Bald wuchsen die Bemühungen um die Standardisierung einer Methode zur Verteilung dieser Softwarepakete, und die ersten Paketmanager waren geboren. Diese Werkzeuge machten es viel einfacher, Software zu installieren, zu konfigurieren oder aus einem System zu entfernen.
Eine davon war der RPM Package Manager und das entsprechende Tool (rpm
), das von Red Hat entwickelt wurde. Heute sind diese nicht nur auf Red Hat Enterprise Linux (RHEL) selbst, sondern auch auf seinen Nachfahren, wie Fedora, CentOS und Oracle Linux, anderen Distributionen wie openSUSE und sogar anderen Betriebssystemen wie IBMs AIX, weit verbreitet.
Andere auf Red Hat-kompatiblen Distributionen beliebte Paketverwaltungswerkzeuge sind yum
(YellowDog Updater Modified), dnf
(Dandified YUM) und zypper
, die viele Aspekte der Installation, Wartung und Entfernung von Paketen rationalisieren können, wodurch die Paketverwaltung wesentlich vereinfacht wird.
In dieser Lektion werden wir lernen, wie man rpm
, yum
, dnf
und zypper
benutzt, um Software auf einem Linux-System zu erhalten, zu installieren, zu verwalten und zu entfernen.
Note
|
Trotz der Verwendung desselben Paketformats gibt es interne Unterschiede zwischen den Distributionen, so dass ein speziell für openSUSE erstelltes Paket möglicherweise nicht auf einem RHEL-System funktioniert und umgekehrt. Wenn Sie nach Paketen suchen, prüfen Sie diese immer auf Kompatibilität und versuchen Sie, wenn möglich, ein auf Ihre spezielle Distribution zugeschnittenes Paket zu finden. |
Der RPM Package Manager (rpm)
Der RPM Package Manager (rpm
) ist ein unverzichtbares Werkzeug zur Verwaltung von Softwarepaketen auf Red Hat-basierten (oder abgeleiteten) Systemen.
Installieren, Aktualisieren und Entfernen von Paketen
Die grundlegendste Operation ist die Installation eines Pakets, die mit einem Paket durchgeführt werden kann:
# rpm -i PACKAGENAME
Wobei PACKAGENAME
der Name des .rpm
-Pakets darstellt, weches es zu installieren gilt.
Wenn eine frühere Version eines Pakets auf dem System existiert, können Sie mit dem Parameter -U
auf eine neuere Version aktualisieren:
# rpm -U PACKAGENAME
Wenn keine frühere Version von PACKAGENAME
installiert ist, wird eine neue Kopie installiert. Um dies zu vermeiden und nur ein installiertes Paket zu aktualisieren, benutzen Sie die Option -F
.
Bei beiden Befehlen können Sie den Parameter -v
hinzufügen, um eine ausführliche Ausgabe zu erhalten (weitere Informationen werden während der Installation angezeigt) und -h
, um Hashzeichen (#
) als visuelle Hilfe zur Verfolgung des Installationsfortschritts angezeigt zu bekommen. Mehrere Parameter können zu einem Parametersatz kombiniert werden, so dass rpm -i -v -h
gleichbedeutend ist wie rpm -ivh
.
Um ein installiertes Paket zu entfernen, übergeben Sie den Parameter -e
(wie in “erase”) an rpm
, gefolgt von dem Namen des Pakets, welches Sie entfernen möchten:
# rpm -e wget
Wenn ein installiertes Paket, vom zu entfernendem Paket abhängt, erhalten Sie folgende Fehlermeldung:
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
Um den Vorgang abzuschließen, müssen Sie zunächst die Pakete entfernen, die von dem Paket abhängen, welches Sie entfernen möchten (im obigen Beispiel file-roller
). Sie können mehrere Paketnamen an rpm -e
übergeben, um mehrere Pakete gleichzeitig zu entfernen.
Umgang mit Abhängigkeiten
In den meisten Fällen kann ein Paket von anderen abhängen, damit dieses wie beabsichtigt funktioniert. Beispielsweise benötigt ein Bildbearbeitungsprogramm Bibliotheken, um JPG-Dateien zu öffnen, oder ein Dienstprogramm benötigt ein Widget-Toolkit wie Qt oder GTK für seine Benutzeroberfläche.
rpm
wird prüfen, ob diese Abhängigkeiten auf Ihrem System installiert sind, und wird das Paket nicht installieren, wenn dies nicht der Fall ist. In diesem Fall wird rpm
auflisten, welche Pakete noch fehlen. Allerdings kann es Abhängigkeiten nicht von selbst auflösen.
Im Beispiel unten versuchte der Benutzer, ein Paket für den GIMP-Bildeditor zu installieren, aber es fehlen einige Abhängigkeiten:
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
Es obliegt dem Benutzer, die .rpm
-Pakete mit den entsprechenden Abhängigkeiten zu finden und zu installieren. Paketmanager wie yum
, zypper
und dnf
haben Werkzeuge, welche erkennen können, welches Paket eine bestimmte Datei zur Verfügung stellt. Diese werden später in dieser Lektion besprochen.
Installierte Pakete auflisten
Um eine Liste aller installierten Pakete auf Ihrem System zu erhalten, benutzen Sie rpm -qa
(denken Sie an “query all”).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Erhalten von Paketinformationen
Um Informationen über ein installiertes Paket zu erhalten, wie seine Versionsnummer, Architektur, Installationsdatum, Paketersteller, Zusammenfassung usw., benutzen Sie rpm
mit den Parametern -qi
(denken Sie an “query info”), gefolgt vom Paketnamen. Beispielsweise wie folgt:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Install the unzip package if you need to list, test or extract files from a zip archive.
Um eine Liste zu erhalten, welche Dateien sich in einem installierten Paket befinden, benutzen Sie die -ql
Parameter (denken Sie an “query list”) gefolgt vom Paketnamen:
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Wenn Sie Informationen oder eine Dateiliste von einem Paket erhalten möchten, welches noch nicht installiert wurde, fügen Sie einfach den Parameter -p
zum obigen Befehlen hinzu, gefolgt vom Namen der RPM-Datei (FILENAME
). So wird rpm -qi PACKAGENAME
zu rpm -qip FILENAME
, und rpm -ql PACKAGENAME
wird zu rpm -qlp FILENAME
, wie unten gezeigt.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (listing goes on)
Herausfinden, welches Paket eine bestimmte Datei besitzt
Um herauszufinden, welches installierte Paket eine Datei besitzt, verwenden Sie -qf
(denken Sie an “query file”), gefolgt vom vollständigen Pfad zur Datei:
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
Im obigen Beispiel gehört die Datei /usr/bin/unzip
zum Paket unzip-6.0-19.el7.x86_64
.
YellowDog Updater Modified (YUM)
yum
wurde ursprünglich als Yellow Dog Updater (YUP) entwickelt, ein Werkzeug zur Paketverwaltung auf der Linux-Distribution Yellow Dog. Mit der Zeit entwickelte diese sich weiter, um Pakete auf anderen RPM-basierten Systemen wie Fedora, CentOS, Red Hat Enterprise Linux und Oracle Linux zu verwalten.
Funktionell ähnelt es dem apt
-Dienstprogramm auf Debian-basierten Systemen, da es in der Lage ist, Pakete zu suchen, zu installieren, zu aktualisieren und zu entfernen sowie Abhängigkeiten automatisch zu behandeln. yum
kann verwendet werden, um ein einzelnes Paket zu installieren, oder um ein ganzes System auf einmal zu aktualisieren.
Suche nach Paketen
Um ein Paket installieren zu können, muss dessen Namen bekannt sein. Dazu können Sie eine Suche mittels yum search PATTERN
durchführen, wobei PATTERN
den zu suchenden Paketnamen darstellt. Das Ergebnis ist eine Liste von Paketen, deren Name oder deren Beschreibung das angegebene Suchmuster enthält. Wenn Sie zum Beispiel ein Dienstprogramm zur Handhabung von 7Zip-komprimierten Dateien (mit der Erweiterung .7z
) benötigen, gehen Sie wie folgt vor:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Name and summary matches only, use "search all" for everything.
Installieren, Aktualisieren und Entfernen von Paketen
Um ein Paket mit yum
zu installieren, verwenden Sie den Befehl yum install PACKAGENAME
, wobei PACKAGENAME
dem Namen des Pakets entspricht. yum
lädt das entsprechende Paket und die entsprechenden Abhängigkeiten aus einem Onlinerepository und installiert alles auf dem System.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Um ein installiertes Paket zu aktualisieren, verwenden Sie yum update PACKAGENAME
, wobei PACKAGENAME
dem Namen des zu akualisierenden Pakets entspricht. Beispielsweise:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Wenn Sie den Namen eines Pakets weglassen, können Sie jedes Paket auf dem System aktualisieren, für das eine Aktualisierung verfügbar ist.
Um zu überprüfen, ob eine Aktualisierung für ein bestimmtes Paket verfügbar ist, verwenden Sie yum check-update PACKAGENAME
. Wie zuvor, wenn Sie den Paketnamen weglassen, wird yum
für jedes installierte Paket auf dem System nach Aktualisierungen suchen.
Um ein installiertes Paket zu entfernen, benutzen Sie yum remove PACKAGENAME
, wobei PACKAGENAME
der Name des Pakets ist, das es zu entfernen gilt.
Finden, welches Paket eine bestimmte Datei bereitstellt
In einem früheren Beispiel haben wir einen Versuch gezeigt, den gimp
Imageeditor zu installieren, der wegen unerfüllter Abhängigkeiten scheiterte. Allerdings zeigt rpm
die fehlten Dateien an, listete aber nicht die Paketenamen auf, welche diese zur Verfügung stellen.
Eine der fehlenden Abhängigkeiten war zum Beispiel libgimpui-2.0.so.0
. Um zu sehen, welches Paket die fehlende Datei zur Verfügung stellt, können Sie yum whatprovides
verwenden, gefolgt vom Namen der Datei, nach der Sie suchen:
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
Die Antwort lautet gimp-libs-2.8.22-1.el7.i686
. Sie können das Paket dann mit dem Befehl yum install gimp-libs
installieren.
Dies funktioniert auch für Dateien, die sich bereits in Ihrem System befinden. Wenn Sie z.B. wissen wollen, woher die Datei /etc/hosts
stammt, können Sie wie folgt vorgehen:
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
Die Antwort lautet setup-2.8.71-10.el7.noarch
.
Informationen über ein Paket abrufen
Um Informationen über ein Paket zu erhalten, wie z.B. seine Version, Architektur, Beschreibung, Größe und so weiter, benutzen Sie yum info PACKAGENAME
, wobei PACKAGENAME
den Namen des Pakets darstellt, für das Informationen benötigen werden:
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
Verwaltung von Softwarerepositories
Für yum
werden die “Repos” im Verzeichnis /etc/yum.repos.d/
abgelegt. Jedes Repository wird durch eine .repo
-Datei repräsentiert, wie z.B. CentOS-Base.repo
.
Zusätzliche Repositories können vom Benutzer hinzugefügt werden, indem er eine .repo
-Datei im oben genannten Verzeichnis oder am Ende von /etc/yum.conf
hinzufügt. Der empfohlene Weg, Repositories hinzuzufügen oder zu verwalten, ist jedoch das yum-config-manager
Werkzeug.
Um ein Repository hinzuzufügen, verwenden Sie den Parameter --add-repo
, gefolgt von der URL der entsprechenden .repo
-Datei.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Um eine Liste aller verfügbaren Repositories zu erhalten, benutzen Sie yum repolist all
. Sie erhalten eine ähnliche Ausgabe wie die Folgende:
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
disabled
Repositories werden bei der Installation oder Aktualisierung von Software ignoriert. Um ein Repository zu aktivieren oder zu deaktivieren, benutzen Sie das Dienstprogramm yum-config-manager
, gefolgt von der Repository-ID.
In der obigen Ausgabe wird die Repository-ID in der ersten Spalte (repo id
) jeder Zeile angezeigt. Verwenden Sie nur den Teil vor dem ersten /
, so dass die ID für das CentOS-7 - Updates
Repo updates
lautet und nicht updates/7/x86_64
.
# yum-config-manager --disable updates
Der obige Befehl deaktiviert das updates
-Repo. Um es wieder zu aktivieren, nutzen Sie:
# yum-config-manager --enable updates
Note
|
Yum speichert heruntergeladene Pakete und zugehörige Metadaten in einem Cacheverzeichnis (normalerweise |
DNF
dnf
ist das Paketverwaltungswerkzeug, welches auf Fedora verwendet wird, und eine Abspaltung von yum
ist. Als solche sind viele der Befehle und Parameter ähnlich. Dieser Abschnitt wird nur einen kurzen Überblick über dnf
behandeln.
- Suche nach Paketen
-
dnf search PATTERN
, wobeiPATTERN
Ihrem Suchgebriff entspricht. Zum Beispiel wirddnf search unzip
alle Pakete anzeigen, die das Wortunzip
im Namen oder in der Beschreibung enthalten. - Informationen über ein Paket erhalten
-
dnf info PACKAGENAME
- Pakete installieren
-
dnf install PACKAGENAME
, wobeiPACKAGENAME
dem Paketnamen des zu installierenden Pakets entspricht. Sie können den Namen durch eine entprechende Suche in Erfahrung bringen. - Entfernen von Paketen
-
dnf remove PACKAGENAME
- Aktualisieren von Paketen
-
dnf upgrade PACKAGENAME
, um nur ein Paket zu aktualisieren. Ohne die Angabe des Paketnamens werden alle Pakete im System aktualisieren. - Herausfinden, welches Paket eine bestimmte Datei enthält
-
dnf provides FILENAME
- Auflistung aller im System installierten Pakete
-
dnf list --installed
- Auflistung des Inhalts eines Pakets
-
dnf repoquery -l PACKAGENAME
Note
|
|
Verwaltung von Softwarerepositories
Genau wie yum
und zypper
arbeitet dnf
mit Softwarerepositories (Repos). Jede Distribution hat eine Liste von Standardrepositories, und Administratoren können je nach Bedarf Repositories hinzufügen oder entfernen.
Um eine Liste aller verfügbaren Repositories zu erhalten, benutzen Sie dnf repolist
. Um nur aktivierte Repositories aufzulisten, fügen Sie die Option --enabled
hinzu. Um nur deaktivierte Repositories aufzulisten, fügen Sie die Option --disabled
hinzu.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Um ein Repository hinzuzufügen, verwenden Sie dnf config-manager --add_repo URL
, wobei URL
die vollständige URL des Repositories darstellt. Um ein Repository zu aktivieren, verwenden Sie dnf config-manager --set-enabled REPO_ID
.
Um ein Repository zu deaktivieren, verwenden Sie dnf config-manager --set-disabled REPO_ID
. In beiden Fällen steht REPO_ID
für die eindeutige ID des Repository, die Sie mit dnf repolist
erhalten können. Hinzugefügte Repositories sind standardmäßig aktiviert.
Repositories werden in .repo
-Dateien im Verzeichnis /etc/yum.repos.d/
gespeichert, mit genau der gleichen Syntax, welche für yum
verwendet wird.
Zypper
zypper
ist das Paketverwaltungswerkzeug, welches unter SUSE Linux und OpenSUSE verwendet wird. Vom Funktionsumfang her ähnelt es apt
und yum
, da es in der Lage ist, Pakete zu installieren, zu aktualisieren und aus einem System zu entfernen, einschließlich der Funktionalität Abhängigkeiten automatisch aufzulösen.
Aktualisieren des Paketindex
Wie andere Paketverwaltungswerkzeuge arbeitet zypper
mit Repositories, die Pakete und Metadaten enthalten. Diese Metadaten müssen von Zeit zu Zeit aktualisiert werden, um das Dienstprogramm über die neuesten verfügbaren Pakete zu informieren. Um eine Aktualisierung durchzuführen, geben Sie einfach folgendes ein:
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
zypper
hat eine automatische Aktualisierungsfunktion, die für jedes Repository einzeln aktiviert werden kann, was bedeutet, dass einige Repositories vor einer Abfrage oder Paketinstallation automatisch aktualisiert werden können, während andere manuell aktualisiert werden müssen. Sie werden in Kürze erfahren, wie Sie diese Funktion steuern können.
Suche nach Paketen
Um nach einem Paket zu suchen, verwenden Sie den Operator search
(oder se
), gefolgt vom Paketnamen:
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
Der Suchoperator kann auch verwendet werden, um eine Liste aller im System installierten Pakete zu erhalten. Verwenden Sie dazu den Parameter -i
ohne die Angabe eines Paketnamens, wie in zypper se -i
.
Um zu sehen, ob ein bestimmtes Paket installiert ist, fügen Sie den Paketnamen dem obigen Befehl hinzu. Der folgende Befehl sucht zum Beispiel unter den installierten Paketen nach Paketen, welche “firefox” im Namen enthalten:
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Um nur unter nicht installierten Paketen zu suchen, fügen Sie den Parameter -u
zum Operator se
hinzu.
Installieren, Aktualisieren und Entfernen von Paketen
Um ein Softwarepaket zu installieren, verwenden Sie den Operator install
(oder in
), gefolgt vom Paketnamen. Wie hier:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
zypper
kann auch verwendet werden, um ein RPM-Paket zu installieren, während versucht wird, seine Abhängigkeiten mit Paketen aus den Repositories zu erfüllen. Um dies zu bewerkstelligen, benutzen Sie einfach den vollständigen Paketpfad, anstatt den Paketnamen, wie in zypper in /home/john/newpackage.rpm
.
Um auf dem System installierte Pakete zu aktualisieren, verwenden Sie zypper update
. Wie beim Installationsprozess zeigt dies eine Liste der zu installierenden/aktualisierenden Pakete an, bevor Sie gefragt werden, ob Sie fortfahren möchten.
Wenn Sie nur die verfügbaren Updates auflisten möchten, ohne etwas zu installieren, können Sie zypper list-updates
verwenden.
Um ein Paket zu entfernen, verwenden Sie den Operator remove
(oder rm
), gefolgt vom Paketnamen:
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Denken Sie daran, dass das Entfernen eines Pakets auch alle anderen Pakete entfernt, die von diesem Paket abhängen. Zum Beispiel:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... Die folgenden 6 Pakete werden ENTFERNT: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Finden, welche Pakete eine bestimmte Datei enthalten
Um zu sehen, welche Pakete eine bestimmte Datei enthalten, verwenden Sie den Suchoperator, gefolgt vom Parameter --provides
und dem Namen der Datei (oder dem vollständigen Pfad zu dieser). Wenn Sie zum Beispiel wissen wollen, welche Pakete die Datei libgimpmodule-2.0.so.0
in /usr/lib64/
enthalten, dann verwenden Sie folgende Suchoperation:
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Erhalten von Paketinformationen
Um die zu einem Paket gehörenden Metadaten anzuzeigen, verwenden Sie den Operator info
gefolgt vom Paketnamen. Dadurch erhalten Sie das Ursprungsrepository, den Paketnamen, die Version, die Architektur, den Ersteller, die installierte Größe, ob es installiert ist oder nicht, den Status (wenn es aktuell ist), das Quellpaket und eine Beschreibung.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Verwaltung von Softwarerepositories
zypper
kann auch zur Verwaltung von Softwarerepositories verwendet werden. Um eine Liste aller derzeit in Ihrem System registrierten Repositories zu sehen, verwenden Sie zypper repos
:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
In der Spalte Enabled
ist ersichtlich welche Repositories aktiviert sind und welche nicht. Sie können dies mit dem modifyrepo
-Operator ändern, gefolgt von den Optionen -e
(enable) oder -d
(disable) und dem Repositoryalias (die zweite Spalte in der obigen Ausgabe).
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
Zuvor haben wir erwähnt, dass zypper
eine automatische Aktualisierungsfunktion hat, die auf Repositorybasis aktiviert werden kann. Wenn dieses Flag aktiviert ist, veranlasst es zypper
, eine Aktualisierungsoperation auszuführen (dasselbe wie zypper refresh
), bevor es mit dem angegebenen Repo arbeitet. Dies kann mit den Parametern -f
und -F
des modifyrepo
-Operators gesteuert werden:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Hinzufügen und Entfernen von Repositories
Um ein neues Softwarerepository für zypper
hinzuzufügen, verwenden Sie den Operator addrepo
, gefolgt von der Repository-URL und dem Repositorynamen, wie unten beschrieben:
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Während Sie ein Repository hinzufügen, können Sie mit dem Parameter -f
automatische Aktualisierungen aktivieren. Hinzugefügte Repositories sind standardmäßig aktiviert, aber Sie können ein Repository gleichzeitig hinzufügen und deaktivieren, indem Sie den Parameter -d
verwenden.
Um ein Repository zu entfernen, verwenden Sie den Operator removerepo
, gefolgt vom Repositorynamen (Alias). Um das im obigen Beispiel hinzugefügte Repository zu entfernen, lautet der Befehl:
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Geführte Übungen
-
Wenn Sie
rpm
auf einem Red Hat Enterprise Linux System verwenden, wie wird das Paketfile-roller-3.28.1-2.el7.x86_64.rpm
installiert, samt Anzeige eines Fortschrittsbalkens während der Installation? -
Finden Sie mit
rpm
heraus, welches Paket die Datei/etc/redhat-release
enthält. -
Wie würden Sie
yum
benutzen, um nach Aktualisierungen für alle Pakete im System zu suchen? -
Wie würden Sie mit
zypper
ein Repository namens repo-extras deaktivieren? -
Wenn Sie eine
.repo
-Datei haben, die ein neues Repository beschreibt, wo sollte diese Datei abgelegt werden, damit sie vom DNF erkannt wird?
Offene Übungen
-
Wie würden Sie
zypper
benutzen, um herauszufinden, welchem Paket die Datei/usr/sbin/swapon
gehört? -
Wie können Sie mit
dnf
eine Liste aller im System installierten Pakete erhalten? -
Wie lautet der Befehl, mit dem
dnf
ein Repository unterhttps://www.example.url/home:reponame.repo
dem System hinzufügt? -
Wie können Sie
zypper
benutzen, um zu überprüfen, ob das Paketunzip
installiert ist? -
Finden Sie mit
yum
heraus, welches Paket die Datei/bin/wget
zur Verfügung stellt.
Zusammenfassung
In dieser Lektion haben Sie gelernt:
-
Wie man
rpm
benutzt, um Pakete zu installieren, zu aktualisieren und zu entfernen. -
Wie man
yum
,zypper
unddnf
verwendet. -
Wie Sie Informationen über ein Paket erhalten.
-
Wie Sie eine Liste der Paketinhalte erhalten.
-
Wie Sie herausfinden können, aus welchem Paket eine Datei stammt.
-
Wie man Softwarerepositories auflistet, hinzufügt, entfernt sowie aktiviert oder deaktiviert.
Die folgenden Befehle wurden diskutiert:
-
rpm
-
yum
-
dnf
-
zypper
Lösungen zu den geführten Übungen
-
Wenn Sie
rpm
auf einem Red Hat Enterprise Linux System verwenden, wie wird das Paketfile-roller-3.28.1-2.el7.x86_64.rpm
installiert, samt Anzeige eines Fortschrittsbalkens während der Installation?Verwenden Sie den Parameter
-i
, um ein Paket zu installieren, und die Option-h
, um “Hashmarkierungen” zu aktivieren, die den Fortschritt der Installation anzeigen. Die Antwort lautet also:rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
Finden Sie mit
rpm
heraus, welches Paket die Datei/etc/redhat-release
enthält.Sie fragen Informationen über eine Datei ab, also benutzen Sie den
-qf
-Parameter:rpm -qf /etc/redhat-release
. -
Wie würden Sie
yum
benutzen, um nach Aktualisierungen für alle Pakete im System zu suchen?Verwenden Sie die Operation
check-update
ohne einen Paketnamen:yum check-update
. -
Wie würden Sie mit
zypper
ein Repository namens repo-extras deaktivieren?Benutzen Sie den Befehl
modifyrepo
und die Option-d
, um das Repo zu deaktivieren:zypper modifyrepo -d repo-extras
. -
Wenn Sie eine
.repo
-Datei haben, die ein neues Repository beschreibt, wo sollte diese Datei abgelegt werden, damit sie vom DNF erkannt wird?.repo
-Dateien für DNF sollten an der gleichen Stelle abgelegt werden, wie jene die von YUM benutzt werden und zwar innerhalb von/etc/yum.repos.d/
.
Lösungen zu den offenen Übungen
-
Wie würden Sie
zypper
benutzen, um herauszufinden, welchem Paket die Datei/usr/sbin/swapon
gehört?Verwenden Sie den Operator
se
(search) und die Option--provides
:zypper se --provides /usr/sbin/swapon
. -
Wie können Sie mit
dnf
eine Liste aller im System installierten Pakete erhalten?Verwenden Sie den Operator
list
, gefolgt von der Option--installed
:dnf list --installed
. -
Wie lautet der Befehl, mit dem
dnf
ein Repository unterhttps://www.example.url/home:reponame.repo
dem System hinzufügt?Die Arbeit mit Repositories ist eine “Konfigurationsänderung”, also benutzen Sie den
config-manager
und die--add_repo
Option:dnf config-manager --add_repo https://www.example.url/home:reponame.repo
. -
Wie können Sie
zypper
benutzen, um zu überprüfen, ob das Paketunzip
installiert ist?Sie müssen eine Suche (
se
) betreffend der installierten (-i
) Paketen durchführen:zypper se -i unzip
. -
Finden Sie mit
yum
heraus, welches Paket die Datei/bin/wget
zur Verfügung stellt.Um herauszufinden, was eine Datei bereitstellt, verwenden Sie
whatprovides
und den Dateinamen:yum whatprovides /bin/wget
.