systemdjournalctl: Abfragen des systemd-Journalsudev
Dieses Kapitel behandelt zypper und RPM, zwei Kommandozeilen-Tools zum Verwalten von Software. Eine Definition der in diesem Kontext verwendeten Terminologie (beispielsweise Repository, Patch oder Update) finden Sie unter Abschnitt 8.1, „Definition der Begriffe“.
Zypper ist ein Kommandozeilen-Paketmanager für Installation, Aktualisierung und Löschung von Paketen sowie zum Verwalten von Repositorys. Damit können Sie Software per Fernzugriff oder mithilfe von Shell-Skripten verwalten.
Die allgemeine Syntax von Zypper sieht wie folgt aus:
tux >zypper[--global-options]command[--command-options][arguments]
Die Komponenten in Klammern sind nicht erforderlich. Eine Liste der allgemeinen Optionen und aller Befehle erhalten Sie mit zypper help. Wenn Sie Hilfe zu einem bestimmten Befehl abrufen möchten, geben Sie zypper help Befehl ein.
Am einfachsten führen Sie Zypper aus, indem Sie seinen Namen gefolgt von einem Kommando eingeben. Geben Sie z. B. für das Anwenden aller erforderlichen Patches auf das System Folgendes ein:
tux > sudo zypper patchZusätzlich können Sie aus einer oder mehreren globalen Optionen wählen, indem Sie sie direkt vor dem Kommando eingeben:
tux > sudo zypper --non-interactive patch
Im Beispiel oben bedeutet die Option --non-interactive, dass das Kommando ausgeführt wird, ohne nach Informationen zu fragen (die Standardantworten werden automatisch angewendet).
Um die spezifischen Optionen für ein bestimmtes Kommando zu verwenden, geben Sie sie direkt nach dem Kommando ein.
tux > sudo zypper patch --auto-agree-with-licenses
Im Beispiel oben wird --auto-agree-with-licenses verwendet, um alle erforderlichen Patches auf ein System anzuwenden, ohne dass Sie aufgefordert werden, Lizenzen zu bestätigen. Stattdessen wird die Lizenz automatisch akzeptiert.
Einige Kommandos erfordern ein oder mehrere Argumente. Wird beispielsweise das Kommando install verwendet, müssen Sie angeben, welches Paket oder welche Pakete Sie installieren möchten:
tux > sudo zypper install mplayerManche Optionen erfordern auch ein einzelnes Argument. Das folgende Kommando listet alle bekannten Muster auf:
tux > zypper search -t pattern
Sie können alle obigen Optionen kombinieren. Beispielsweise werden durch das folgende Kommando die Pakete
aspell-de
und
aspell-fr
aus dem factory-Repository im Verbose-Modus installiert:
tux > sudo zypper -v install --from factory aspell-de aspell-fr
Mit der Option --from bleiben alle Repositorys aktiviert (damit alle Abhängigkeiten aufgelöst werden können), wenn das Paket aus dem angegebenen Repository abrufen wird.
Die meisten Zypper-Kommandos besitzen eine dry-run-Option, die eine Simulation des angegebenen Kommandos ausführt. Sie kann für Tests verwendet werden.
tux > sudo zypper remove --dry-run MozillaFirefox
Zypper unterstützt die globale Option --userdata Zeichenkette. Bei dieser Option können Sie eine Zeichenkette angeben, die dann in die Protokolle und Plugins von Zypper geschrieben wird (z. B. in das Btrfs-Plugin). Hiermit können Sie Transaktionen in Protokolldateien kennzeichnen.
tux > sudo zypper --userdata string patchVerwenden Sie zur Installation oder Löschung von Paketen die folgenden Kommandos:
tux >sudo zypper install package_nametux >sudo zypper remove package_name
Entfernen Sie keine obligatorischen Systempakete, wie glibc , zypper , kernel . Werden diese Pakete entfernt, kann das System instabil werden oder aufhören zu funktionieren.
Es gibt verschiedene Methoden, Pakete mit den Kommandos zypper install und zypper remove zu adressieren.
tux > sudo zypper install MozillaFirefoxtux > sudo zypper install MozillaFirefox-3.5.3tux > sudo zypper install mozilla:MozillaFirefox
Dabei ist mozilla der Alias des Repositorys, aus dem installiert werden soll.
Sie können alle Pakete mit Namen auswählen, die mit einer bestimmten Zeichenfolge anfangen oder enden. Verwenden Sie Platzhalter mit äußerster Umsicht, vor allem beim Entfernen von Paketen. Das folgende Kommando installiert alle Pakete, deren Name mit „Moz“ beginnt:
tux > sudo zypper install 'Moz*'-debuginfo -Pakete
Beim Debuggen eines Problems müssen Sie unter Umständen zahlreiche -debuginfo-Pakete temporär installieren, mit denen Sie weitere Informationen zu den ausgeführten Prozessen erhalten. Nach Abschluss der Debugging-Sitzung bereinigen Sie die Umgebung wie folgt:
tux > sudo zypper remove '*-debuginfo'Wenn Sie beispielsweise ein Perl-Modul installieren möchten, ohne den Namen des Pakets zu kennen, sind Funktionen praktisch:
tux > sudo zypper install firefoxZusammen mit einer Funktion können Sie eine Hardware-Architektur und eine Version angeben:
Der Name der gewünschten Hardware-Architektur wird nach einem Punkt an die Funktion angefügt. Um beispielsweise die AMD64-/Intel 64-Architekturen anzugeben (die in Zypper x86_64 heißen), verwenden Sie Folgendes:
tux > sudo zypper install 'firefox.x86_64'
Versionen müssen am Ende der Zeile angefügt werden und ein Operator muss vorangestellt sein: < (kleiner als), <= (kleiner oder gleich), = (gleich), >= (größer oder gleich), > (größer als).
tux > sudo zypper install 'firefox>=3.5.3'Sie können auch eine Hardware-Architektur und eine Versionsanforderung kombinieren:
tux > sudo zypper install 'firefox.x86_64>=3.5.3'Sie können einen lokalen oder entfernten Pfad zu einem Paket angeben:
tux >sudo zypper install /tmp/install/MozillaFirefox.rpmtux >sudo zypper install http://download.opensuse.org/repositories/mozilla/SLE_12/x86_64/MozillaFirefox-45.0.2-1.1.x86_64.rpm
Zum gleichzeitigen Installieren und Entfernen von Paketen verwenden Sie die Modifikatoren +/-. Um
emacs
zu installieren und gleichzeitig
vim
zu entfernen, verwenden Sie Folgendes:
tux > sudo zypper install emacs -vimUm emacs zu entfernen und gleichzeitig vim zu installieren, verwenden Sie Folgendes:
tux > sudo zypper remove emacs +vim
Um zu vermeiden, dass der mit - beginnende Paketname als Kommandooption interpretiert wird, verwenden Sie ihn stets als das zweite Argument. Falls dies nicht möglich ist, stellen Sie ihm -- voran:
tux >sudo zypper install -emacs +vim # Wrongtux >sudo zypper install vim -emacs # Correcttux >sudo zypper install -- -emacs +vim # same as abovetux >sudo zypper remove emacs +vim # same as above
Wenn (zusammen mit einem bestimmten Paket) automatisch alle Pakete entfernt werden sollen, die nach dem Entfernen dieses Pakets nicht mehr erforderlich sind, verwenden Sie die Option --clean-deps:
tux > sudo zypper rm package_name --clean-deps
Standardmäßig verlangt Zypper eine Bestätigung, bevor ein ausgewähltes Paket installiert oder entfernt wird oder wenn ein Problem auftritt. Mit der Option --non-interactive können Sie dieses Verhalten deaktivieren. Die Option muss jedoch vor dem tatsächlich auszuführenden Kommando (install, remove oder patch) angegeben werden, wie im Folgenden erkennbar:
tux >sudo zypper--non-interactiveinstall package_name
Mit dieser Option kann Zypper auch in Skripten und Cron-Aufträgen verwendet werden.
Wenn Sie das entsprechende Quellpaket eines Pakets installieren möchten, verwenden Sie:
tux > zypper source-install package_name
Wird das Kommando als root ausgeführt, ist der Standardspeicherort der Quellpakete /usr/src/packages/ und ~/rpmbuild, wenn es als Benutzer ausgeführt wird. Diese Werte können in Ihrer lokalen rpm-Konfiguration geändert werden.
Dieses Kommando installiert auch die Build-Abhängigkeiten des angegebenen Pakets. Wenn Sie dies nicht wünschen, fügen Sie den Schalter -D hinzu. Um nur die Build-Abhängigkeiten zu installieren, verwenden Sie -d.
tux >sudo zypper source-install -D package_name # source package onlytux >sudo zypper source-install -d package_name # build dependencies only
Natürlich gelingt dies nur, wenn das Repository mit den Quellpaketen in Ihrer Repository-Liste aktiviert ist (es wird standardmäßig hinzugefügt, aber nicht aktiviert). Details zur Repository-Verwaltung finden Sie unter Abschnitt 5.1.5, „Verwalten von Repositorys mit Zypper“.
Eine Liste aller Quellpakete, die in Ihren Repositorys verfügbar sind, können Sie wie folgt abrufen:
tux > zypper search -t srcpackageWenn Sie möchten, können Sie die Quellpakete für alle installierten Pakete in ein lokales Verzeichnis herunterladen. Zum Herunterladen von Quellpaketen verwenden Sie:
tux > zypper source-download
Das Standardverzeichnis für heruntergeladene Dateien lautet /var/cache/zypper/source-download. Mit der Option --directory können Sie dieses Verzeichnis ändern. Sollen nur fehlende oder überzählige Pakete angezeigt werden, ohne Pakete herunterzuladen oder zu löschen, verwenden Sie die Option --status. Zum Löschen überzähliger Pakete verwenden Sie die Option --delete. Soll das Löschen deaktiviert werden, verwenden Sie die Option --no-delete.
In der Regel können Sie nur Pakete aus aktivierten Repositorys installieren. Mit der Option --plus-content tag können Sie bestimmte Repositorys aktualisieren, temporär während der aktuellen Zypper-Sitzung aktivieren und nach Abschluss der Sitzung wieder deaktivieren.
Sollen beispielsweise Repositorys mit zusätzlichen -debuginfo- oder -debugsource-Paketen aktiviert werden, geben Sie --plus-content debug ein. Diese Option kann mehrfach angegeben werden.
Sollen diese „Debug“-Repositorys vorübergehend aktiviert werden, damit Sie ein bestimmtes -debuginfo-Paket installieren können, geben Sie die Option wie folgt an:
tux > sudo zypper --plus-content debug install "debuginfo(build-id)=eb844a5c20c70a59fc693cd1061f851fb7d046f4"
Die Zeichenkette build-id wird von gdb für fehlende debuginfo-Pakete zurückgegeben.
Wenn Sie prüfen möchten, ob alle Abhängigkeiten noch erfüllt sind, und fehlende Abhängigkeiten reparieren möchten, verwenden Sie:
tux > zypper verifyZusätzlich zu Abhängigkeiten, die erfüllt sein müssen, „empfehlen“ einige Pakete andere Pakete. Diese empfohlenen Pakete werden installiert, wenn sie aktuell verfügbar und installierbar sind. Falls empfohlene Pakete erst nach der Installation des empfehlenden Pakets (durch Hinzufügen zusätzlicher Pakete oder zusätzlicher Hardware) zur Verfügung steht, verwenden Sie das folgende Kommando:
tux > sudo zypper install-new-recommendsDieses Kommando ist nach dem Anschließen einer Webcam oder eines WLAN-Geräts äußerst nützlich. Hiermit werden Treiber für das Gerät und die zugehörige Software installiert, sofern verfügbar. Die Treiber und die zugehörige Software sind nur dann installierbar, wenn bestimmte Hardware-Abhängigkeiten erfüllt sind.
Es gibt drei verschiedene Möglichkeiten, Software mithilfe von Zypper zu installieren: durch Installation von Patches, durch Installation einer neuen Version eines Pakets oder durch Aktualisieren der kompletten Distribution. Letzteres wird mit zypper dist-upgrade erreicht. Die Aufrüstung von SUSE Linux Enterprise Desktop wird im Kapitel 14, Aufrüsten von SUSE Linux Enterprise erläutert.
Um alle offiziell herausgegebenen Patches für Ihr System zu installieren, führen Sie Folgendes aus:
tux > sudo zypper patch
Alle verfügbaren Patches aus den auf Ihrem Computer konfigurierten Repositorys werden auf Relevanz für Ihre Installation überprüft. Sind sie relevant (und nicht als optional oder feature klassifiziert), werden sie sofort installiert. Beachten Sie, dass das offizielle Aktualisierungs-Repository erst verfügbar ist, nachdem Sie Ihre SUSE Linux Enterprise Desktop-Installation registriert haben.
Umfasst ein zu installierendes Patch Änderungen, die einen System-Reboot erfordern, werden Sie zuvor benachrichtigt.
Um auch optionale Patches zu installieren, verwenden Sie Folgendes:
tux > sudo zypper patch --with-optionalUm alle Patches zu installieren, die zu einem bestimmten Bugzilla-Problem gehören, verwenden Sie Folgendes:
tux > sudo zypper patch --bugzilla=numberUm alle Patches zu installieren, die zu einem bestimmten CVE-Datenbankeintrag gehören, verwenden Sie Folgendes:
tux > sudo zypper patch --cve=number
Zum Installieren eines Sicherheits-Patches mit der CVE-Nummer CVE-2010-2713 führen Sie beispielsweise Folgendes aus:
tux > sudo zypper patch --cve=CVE-2010-2713Um nur Patches zu installieren, die Auswirkungen auf Zypper und die Paketverwaltung an sich haben, verwenden Sie Folgendes:
tux > sudo zypper patch --updatestack-onlyUm herauszufinden, ob Patches verfügbar sind, erlaubt Zypper das Anzeigen der folgenden Informationen:
Um die Anzahl der erforderlichen Patches aufzulisten (Patches, die für Ihr System gelten, aber noch nicht installiert sind), verwenden Sie patch-check:
tux > zypper patch-check
Loading repository data...
Reading installed packages...
5 patches needed (1 security patch)
Dieses Kommando kann mit der Option --updatestack-only kombiniert werden, um nur Patches aufzulisten, die Auswirkungen auf Zypper und die Paketverwaltung an sich haben.
Um alle erforderlichen Patches aufzulisten (Patches, die für Ihr System gelten, aber noch nicht installiert sind), verwenden Sie list-patches:
tux > zypper list-patches
Loading repository data...
Reading installed packages...
Repository | Name | Version | Category | Status | Summary
---------------+-------------+---------+----------+---------+---------
SLES12-Updates | SUSE-2014-8 | 1 | security | needed | openssl: Update for OpenSSL
Um alle für SUSE Linux Enterprise Desktop verfügbaren Patches aufzulisten, unabhängig davon, ob sie bereits installiert sind oder für Ihre Installation gelten, verwenden Sie zypper patches.
Sie können auch Patches für bestimmte Probleme auflisten und installieren. Dazu geben Sie das Kommando zypper list-patches mit den folgenden Optionen ein:
Um alle Patches mit Bezug zu Bugzilla-Problemen aufzulisten, verwenden Sie die Option --bugzilla.
Um Patches für einen bestimmten Fehler aufzulisten, können Sie auch eine Fehlernummer angeben: --bugzilla=Nummer. Fügen Sie Kommas zwischen den Fehlernummern hinzu, um nach Patches mit Bezug zu mehreren Bugzilla-Problemen zu suchen, z. B.:
tux > zypper list-patches --bugzilla=972197,956917
Um alle erforderlichen Patches aufzulisten, die Bezug zu einem Eintrag in der CVE-Datenbank (Common Vulnerabilities and Exposures) haben, verwenden Sie die Option --cve.
Um Patches für einen bestimmten CVE-Datenbankeintrag aufzulisten, können Sie auch eine CVE-Nummer angeben: --cve=Nummer. Fügen Sie Kommas zwischen den CVE-Nummern hinzu, um nach Patches mit Bezug zu mehreren CVE-Datenbankeinträgen zu suchen, z. B.:
tux > zypper list-patches --bugzilla=CVE-2016-2315,CVE-2016-2324
Um alle Patches aufzulisten, unabhängig davon, ob sie erforderlich sind, verwenden Sie zusätzlich die Option --all. Um beispielsweise alle Patches aufzulisten, denen eine CVE-Nummer zugewiesen ist, verwenden Sie Folgendes:
tux > zypper list-patches --all --cve
Issue | No. | Patch | Category | Severity | Status
------+---------------+-------------------+-------------+-----------+----------
cve | CVE-2015-0287 | SUSE-SLE-Module.. | recommended | moderate | needed
cve | CVE-2014-3566 | SUSE-SLE-SERVER.. | recommended | moderate | not needed
[...]
Wenn ein Repository neue Pakete enthält, aber keine Patches zur Verfügung stellt, zeigt zypper patch keinerlei Wirkung. Zum Aktualisieren aller installierten Pakete mit verfügbaren neuen Versionen (unter Beibehaltung der Systemintegrität) verwenden Sie Folgendes:
tux > sudo zypper updateZum Aktualisieren einzelner Pakete geben Sie das Paket mit dem Aktualisierungs- oder Aktualisierungskommando an:
tux >sudo zypper update package_nametux >sudo zypper install package_name
Mit dem Kommando kann eine Liste mit allen neuen installierbaren Paketen abgerufen werden.
tux > zypper list-updatesDieses Kommando listet ausschließlich Pakete auf, die die folgenden Kriterien erfüllen:
stammt von demselben Hersteller wie das bereits installierte Paket,
umfasst Repositorys mit mindestens derselben Priorität wie das bereits installierte Paket,
ist installierbar (alle Abhängigkeiten wurden erfüllt).
Eine Liste aller neuen verfügbaren Pakete (unabhängig davon, ob diese Pakete installierbar sind oder nicht) erhalten Sie mit Folgendem:
tux > sudo zypper list-updates --all
Um festzustellen, warum ein neues Paket nicht installiert werden kann, verwenden Sie das Kommando zypper install oder zypper update, wie oben beschrieben.
Immer, wenn Sie ein Repository aus Zypper entfernen oder Ihr System aktualisieren, erhalten manche Pakete den Status „Verwaist“. Diese verwaisten Pakete gehören zu keinem aktiven Repository mehr. Mit dem folgenden Kommando erhalten Sie eine entsprechende Liste:
tux > sudo zypper packages --orphanedAnhand dieser Liste können Sie entscheiden, ob ein Paket noch benötigt wird oder sicher entfernt werden kann.
Beim Anwenden von Patches, beim Aktualisieren oder beim Entfernen von Paketen können auf dem System Prozesse aktiv sein, die weiterhin Dateien verwenden, die durch die Aktualisierung oder das Entfernen gelöscht wurden. Verwenden Sie zypper ps, um Prozesse aufzulisten, die gelöschte Dateien verwenden. Falls der Prozess zu einem bekannten Dienst gehört, wird der Dienstname aufgelistet und der Dienst kann leicht neu gestartet werden. Standardmäßig zeigt zypper ps eine Tabelle an:
PID | PPID | UID | User | Command | Service | Files
------+------+-----+-------+--------------+--------------+-------------------
814 | 1 | 481 | avahi | avahi-daemon | avahi-daemon | /lib64/ld-2.19.s->
| | | | | | /lib64/libdl-2.1->
| | | | | | /lib64/libpthrea->
| | | | | | /lib64/libc-2.19->
[...]| PID: ID des Prozesses |
| PPID: ID des übergeordneten Prozesses |
| UID: ID des Benutzers, der den Prozess ausführt |
| Login: Anmeldename des Benutzers, der den Prozess ausführt |
| Command: Kommando, das zum Ausführen des Prozesses verwendet wird |
| Service: Dienstname (nur, wenn das Kommando einem Systemdienst zugewiesen ist) |
| Files: Liste der gelöschten Dateien |
Das Ausgabeformat von zypper ps kann wie folgt gesteuert werden:
zypper ps-s
Kurze Tabelle ohne gelöschte Dateien erstellen.
PID | PPID | UID | User | Command | Service ------+------+------+---------+--------------+-------------- 814 | 1 | 481 | avahi | avahi-daemon | avahi-daemon 817 | 1 | 0 | root | irqbalance | irqbalance 1567 | 1 | 0 | root | sshd | sshd 1761 | 1 | 0 | root | master | postfix 1764 | 1761 | 51 | postfix | pickup | postfix 1765 | 1761 | 51 | postfix | qmgr | postfix 2031 | 2027 | 1000 | tux | bash |
zypper ps-ss
Nur Prozesse anzeigen, die einem Systemdienst zugewiesen sind.
PID | PPID | UID | User | Command | Service ------+------+------+---------+--------------+-------------- 814 | 1 | 481 | avahi | avahi-daemon | avahi-daemon 817 | 1 | 0 | root | irqbalance | irqbalance 1567 | 1 | 0 | root | sshd | sshd 1761 | 1 | 0 | root | master | postfix 1764 | 1761 | 51 | postfix | pickup | postfix 1765 | 1761 | 51 | postfix | qmgr | postfix
zypper ps-sss
Nur Systemdienste anzeigen, die gelöschte Dateien verwenden.
avahi-daemon irqbalance postfix sshd
zypper ps--print "systemctl status %s"
Kommandos zum Abrufen von Statusinformationen für Dienste anzeigen, die einen Neustart erfordern könnten.
systemctl status avahi-daemon systemctl status irqbalance systemctl status postfix systemctl status sshd
Weitere Informationen zum Handhaben von Diensten finden Sie unter Kapitel 14, Der Daemon systemd.
Sämtliche Installations- und Patch-Kommandos von Zypper sind von der Liste der bekannten Repositorys abhängig. Um alle dem System bekannten Repositorys aufzulisten, verwenden Sie das Kommando:
tux > zypper reposDas Ergebnis ist der folgenden Ausgabe ähnlich:
# | Alias | Name | Enabled | Refresh --+--------------+---------------+---------+-------- 1 | SLEHA-12-GEO | SLEHA-12-GEO | Yes | No 2 | SLEHA-12 | SLEHA-12 | Yes | No 3 | SLES12 | SLES12 | Yes | No
Bei der Angabe von Repositorys kann in verschiedenen Kommandos ein Alias, URI oder eine Repository-Nummber aus der Ausgabe des Kommandos zypper repos verwendet werden. Ein Repository-Alias ist eine Kurzform des Repository-Namens, der in Repository-Kommandos verwendet wird. Beachten Sie dabei, dass sich die Repository-Nummern nach dem Bearbeiten der Repository-Liste ändern können. Der Alias ändert sich nie von alleine.
Standardmäßig werden Details wie URI oder Priorität des Repositorys nicht angezeigt. Verwenden Sie das folgende Kommando, um alle Details aufzulisten:
tux > zypper repos -dZum Hinzufügen eines Repository, führen Sie Folgendes aus:
tux > sudo zypper addrepo URI aliasURI kann ein Internet-Repository, eine Netzwerkressource, ein Verzeichnis oder eine CD oder DVD sein (für Details siehe http://en.opensuse.org/openSUSE:Libzypp_URIs). Der Alias ist ein Kürzel und eine eindeutige Kennung für das Repository. Sie können ihn frei wählen, vorausgesetzt, er ist eindeutig. Zypper gibt eine Warnung aus, wenn Sie einen Alias angeben, der bereits verwendet wird.
Wenn ein Repository von der Liste entfernt werden soll, verwenden Sie das Kommando zypper removerepo zusammen mit dem Alias oder der Nummer des zu löschenden Repositorys. Um beispielsweise das Repository SLEHA-12-GEO aus Beispiel 5.1, „Zypper – Liste der bekannten Repositorys“ zu entfernen, verwenden Sie eines der folgenden Kommandos:
tux >sudo zypper removerepo 1tux >sudo zypper removerepo "SLEHA-12-GEO"
Aktivieren oder deaktivieren von Repositorys mit zypper modifyrepo. Mit diesem Kommando können Sie auch die Eigenschaften des Repositorys (z. B. Aktualisierungsverhalten, Name oder Priorität) ändern. Das folgende Kommando aktiviert das Repository mit dem Namen updates, aktiviert die automatische Aktualisierung und stellt seine Priorität auf 20 ein:
tux > sudo zypper modifyrepo -er -p 20 'updates'Das Ändern von Repositorys ist nicht auf ein einziges Repository beschränkt – Sie können auch Gruppen bearbeiten:
-a: alle Repositorys |
-l: lokale Repositorys |
-t: entfernte Repositorys |
-m TYPE: Repositorys eines bestimmten Typs (wobei TYPE eines der folgenden sein kann: http, https, ftp, cd, dvd, dir, file, cifs, smb, nfs, hd, iso) |
Zum Umbenennen eines Repository-Alias verwenden Sie das Kommando renamerepo. Das folgende Beispiel ändert den Alias von Mozilla Firefox in firefox:
tux > sudo zypper renamerepo 'Mozilla Firefox' firefoxZypper bietet zahlreiche Methoden zur Abfrage von Repositorys oder Paketen. Verwenden Sie die folgenden Kommandos, um eine Liste aller verfügbaren Produkte, Muster, Pakete oder Patches zu erhalten:
tux >zypper productstux >zypper patternstux >zypper packagestux >zypper patches
Zur Abfrage aller Repositorys auf bestimmte Pakete verwenden Sie search. Es gilt für Paketnamen oder optional für Paketzusammenfassungen und -beschreibungen. Zeichenketten, die mit / umschlossen sind, werden als reguläre Ausdrücke behandelt. Standardmäßig unterscheidet der Suchvorgang keine Groß- und Kleinschreibung.
fire
tux > zypper search "fire"MozillaFirefox
tux > zypper search --match-exact "MozillaFirefox"tux > zypper search -d firetux > zypper search -u firefir enthalten, nicht gefolgt von e
tux > zypper se "/fir[^e]/"
Verwenden Sie zur Suche nach Paketen, die eine spezielle Funktion bieten, das Kommando what-provides. Wenn Sie beispielsweise wissen möchten, welches Paket das Perl-Modul SVN::Core bereitstellt, verwenden Sie das folgende Kommando:
tux > zypper what-provides 'perl(SVN::Core)'
Um einzelne Pakete abzufragen, verwenden Sie info mit einem exakten Paketnamen als Argument. Damit werden detaillierte Informationen zu einem Paket angezeigt. Um auch die Elemente abzurufen, die für das Paket erforderlich/empfohlen sind, verwenden Sie die Optionen --requires und --recommends:
tux > zypper info --requires MozillaFirefox
Das what-provides-Paket ähnelt dem rpm -q --whatprovides-Paket; RPM kann jedoch nur Abfragen für die RPM-Datenbank (Datenbank mit allen installierten Paketen) durchführen. zypper informiert Sie auf der anderen Seite über Anbieter der Möglichkeit von einem beliebigen Repository, nicht nur von denen, die installiert sind.
Zypper ist nunmehr mit einer Konfigurationsdatei ausgestattet, in der Sie die Arbeitsweise von Zypper dauerhaft verändern können (wahlweise systemweit oder benutzerspezifisch). Für systemweite Änderungen bearbeiten Sie /etc/zypp/zypper.conf. Für benutzerspezifische Änderungen bearbeiten Sie ~/.zypper.conf. Falls ~/.zypper.conf noch nicht vorhanden ist, können Sie /etc/zypp/zypper.conf als Schablone verwenden. Kopieren Sie diese Datei in ~/.zypper.conf, und passen Sie sie nach Ihren Anforderungen an. Weitere Informationen zu den verfügbaren Optionen finden Sie in den Kommentaren in der Datei.
Falls Probleme beim Zugriff auf Pakete von konfigurierten Repositorys auftreten (beispielsweise kann Zypper ein bestimmtes Paket nicht finden, obwohl Sie wissen, dass sich dieses Paket in einem der Repositorys befindet), kann schon das Aktualisieren der Repositorys Abhilfe bringen:
tux > sudo zypper refreshFalls das nicht wirkt, probieren Sie Folgendes:
tux > sudo zypper refresh -fdbDamit wird eine vollständige Aktualisierung und ein kompletter Neuaufbau der Datenbank erzwungen, außerdem ein erzwungener Download von Roh-Metadaten.
Wenn das Btrfs-Dateisystem in der Stammpartition verwendet wird und Snapper installiert ist, ruft Zypper automatisch Snapper (über ein von Snapper installiertes Skript) auf, wenn an das Dateisystem Änderungen übermittelt werden, um entsprechende Dateisystem-Snapshots zu erstellen. Diese Snapshots können verwendet werden, um alle durch Zypper vorgenommenen Änderungen rückgängig zu machen. Weitere Informationen finden Sie in Kapitel 6, Systemwiederherstellung und Snapshot-Verwaltung mit Snapper.
Wenn Sie weitere Informationen zur Verwaltung von Software benötigen, geben Sie den Befehl zypper help in die Befehlszeile ein oder rufen Sie die man-Seite zypper(8) auf. Eine ausführliche Kommandoreferenz mit Tricks zu den wichtigsten Kommandos sowie Informationen zur Verwendung von Zypper in Skripten und Anwendungen finden Sie unter http://en.opensuse.org/SDB:Zypper_usage. Eine Liste der Software-Änderungen in der aktuellen SUSE Linux Enterprise Desktop-Version finden Sie unter http://en.opensuse.org/openSUSE:Zypper versions.
RPM (RPM Package Manager) wird für die Verwaltung von Softwarepaketen verwendet. Seine Hauptbefehle lauten rpm und rpmbuild. In der leistungsstarken RPM-Datenbank können Benutzer, Systemadministratoren und Paketersteller ausführliche Informationen zur installierten Software abfragen.
Im Wesentlichen hat rpm fünf Modi: Installieren/Deinstallieren (oder Aktualisieren) von Software-Paketen, Neuaufbauen der RPM-Datenbank, Abfragen der RPM-Basis oder individuellen RPM-Archive, Integritätsprüfung der Pakete und Signieren von Paketen. rpmbuild ermöglicht das Aufbauen installierbarer Pakete von Pristine-Quellen.
Installierbare RPM-Archive sind in einem speziellen binären Format gepackt. Diese Archive bestehen aus den zu installierenden Programmdateien und aus verschiedenen Metadaten, die bei der Installation von rpm benutzt werden, um das jeweilige Softwarepaket zu konfigurieren, oder die zu Dokumentationszwecken in der RPM-Datenbank gespeichert werden. RPM-Archive haben für gewöhnlich die Dateinamenserweiterung .rpm.
Für mehrere Pakete wurden die erforderlichen Komponenten für die Software-Entwicklung (Bibliotheken, Header, Include-Dateien usw.) in separate Pakete verpackt. Diese Entwicklungspakete werden nur benötigt, wenn Sie Software selbst kompilieren möchten (beispielsweise die neuesten GNOME-Pakete). Solche Pakete sind am Namenszusatz - zu erkennen, z. B. die Pakete alsa-devel und gimp-devel.
RPM-Pakete sind mit GPG signiert. Verwenden Sie zum Verifizieren der Signatur eines RPM-Pakets das Kommando rpm --checksig package-1.2.3.rpm. So können Sie feststellen, ob das Paket von SUSE oder einer anderen verbürgten Einrichtung stammt. Dies ist insbesondere bei Update-Paketen aus dem Internet zu empfehlen.
Zum Beheben von Problemen im Betriebssystem müssen Sie ggf. einen PTF (Problem Temporary Fix, temporäre Fehlerbehebung) in einem Produktionssystem installieren. Die Pakete von SUSE sind mit einem besonderen PTF-Schlüssel signiert. Im Gegensatz zu SUSE Linux Enterprise 11 wird dieser Schlüssel jedoch nicht standardmäßig von SUSE Linux Enterprise 12-Systemen importiert. Importieren Sie den Schlüssel mit dem folgenden Befehl:
rpm --import /usr/share/doc/packages/suse-build-key/suse_ptf_key.asc
Nach dem Importieren des Schlüssels können Sie PTF-Pakete auf dem System installieren.
In der Regel kann ein RPM-Archiv einfach installiert werden: rpm -i package.rpm. Mit diesem Kommando wird das Paket aber nur dann installiert, wenn seine Abhängigkeiten erfüllt sind und keine Konflikte mit anderen Paketen bestehen. rpmfordert per Fehlermeldung die Pakete an, die zum Erfüllen der Abhängigkeiten installiert werden müssen. Im Hintergrund wacht die RPM-Datenbank darüber, dass keine Konflikte entstehen: Eine spezifische Datei darf nur zu einem Paket gehören. Durch die Wahl anderer Optionen können Sie rpm zwingen, diese Standards zu ignorieren, jedoch ist dies nur für Spezialisten gedacht. Andernfalls wird damit die Integrität des Systems gefährdet und möglicherweise die Update-Fähigkeit aufs Spiel gesetzt.
Die Optionen -U oder --upgrade und -F oder --freshen können für das Update eines Pakets benutzt werden (z. B.: rpm -F paket.rpm). Dieser Befehl entfernt die Dateien der alten Version und installiert sofort die neuen Dateien. Der Unterschied zwischen den beiden Versionen besteht darin, dass mit -U auch Pakete installiert werden, die vorher nicht im System vorhanden waren, wohingegen mit -F nur zuvor installierte Pakete aktualisiert werden. Bei einem Update verwendet rpm zur sorgfältigen Aktualisierung der Konfigurationsdateien die folgende Strategie:
Falls eine Konfigurationsdatei vom Systemadministrator nicht geändert wurde, installiert rpm die neue Version der entsprechenden Datei. Es sind keine Eingriffe seitens des Administrators nötig.
Falls eine Konfigurationsdatei vom Systemadministrator vor dem Update geändert wurde, speichert rpm die geänderte Datei mit der Erweiterung .rpmorig oder .rpmsave (Sicherungsdatei) und installiert nur dann die Version aus dem neuen Paket, wenn sich die ursprünglich installierte Datei und die neue Version unterscheiden. Vergleichen Sie in diesem Fall die Sicherungsdatei (.rpmorig oder .rpmsave) mit der neu installierten Datei und nehmen Sie Ihre Änderungen erneut in der neuen Datei vor. Löschen Sie anschließend unbedingt alle .rpmorig- und .rpmsave-Dateien, um Probleme mit zukünftigen Updates zu vermeiden.
.rpmnew-Dateien erscheinen immer dann, wenn die Konfigurationsdatei bereits existiert und wenn die Kennung noreplace mit der .spec-Datei angegeben wurde.
Im Anschluss an ein Update sollten alle .rpmsave- und .rpmnew-Dateien nach einem Abgleich entfernt werden, damit sie bei zukünftigen Updates nicht stören. Die Erweiterung .rpmorig wird zugewiesen, wenn die Datei zuvor nicht von der RPM-Datenbank erkannt wurde.
Andernfalls wird .rpmsave verwendet. Mit anderen Worten: .rpmorig entsteht bei einem Update von einem Fremdformat auf RPM. .rpmsave entsteht bei einem Update aus einem älteren RPM auf einen neueren RPM. .rpmnew informiert nicht darüber, ob der Systemadministrator die Konfigurationsdatei geändert hat. Eine Liste all dieser Dateien ist in /var/adm/rpmconfigcheck verfügbar. Einige Konfigurationsdateien (wie /etc/httpd/httpd.conf) werden nicht überschrieben, um den weiteren Betrieb zu ermöglichen.
Der Schalter -U ist nicht einfach gleichbedeutend mit der Deinstallation mit der Option -e und der Installation mit der Option -i. Verwenden Sie -U, wann immer möglich.
Zum Entfernen eines Pakets geben Sie rpm -e Paket ein. Dieses Kommando löscht das Paket nur, wenn keine ungelösten Abhängigkeiten vorhanden sind. Theoretisch ist es unmöglich, beispielsweise Tcl/Tk zu löschen, solange eine andere Anwendung Tcl/Tk noch benötigt. Auch in diesem Fall nutzt RPM die Datenbank zur Unterstützung. Falls in einem Ausnahmefall ein solcher Löschvorgang nicht möglich ist (selbst wenn keine Abhängigkeiten mehr bestehen), kann es nützlich sein, die RPM-Datenbank mit der Option --rebuilddb neu aufzubauen.
Delta-RPM-Pakete enthalten die Unterschiede zwischen einer alten und einer neuen Version eines RPM-Pakets. Wenn Sie ein Delta-RPM auf ein altes RPM anwenden, ergibt dies ein ganz neues RPM. Es ist nicht erforderlich, dass eine Kopie des alten RPM vorhanden ist, da ein Delta-RPM auch mit einem installierten RPM arbeiten kann. Die Delta-RPM-Pakete sind sogar kleiner als Patch-RPMs, was beim Übertragen von Update-Paketen über das Internet von Vorteil ist. Der Nachteil ist, dass Update-Vorgänge mit Delta-RPMs erheblich mehr CPU-Zyklen beanspruchen als normale oder Patch-RPMs.
Die Binärdateien makedeltarpm und applydelta sind Teil der Delta-RPM-Suite (Paket deltarpm) und helfen Ihnen beim Erstellen und Anwenden von Delta-RPM-Paketen. Mit den folgenden Befehlen erstellen Sie ein Delta-RPM mit dem Namen new.delta.rpm. Der folgende Befehl setzt voraus, dass old.rpm und new.rpm vorhanden sind:
makedeltarpm old.rpm new.rpm new.delta.rpm
Mit applydeltarpm können Sie den neuen RPM aus dem Dateisystem rekonstruieren, wenn das alte Paket bereits installiert ist:
applydeltarpm new.delta.rpm new.rpm
Um es aus dem alten RPM abzuleiten, ohne auf das Dateisystem zuzugreifen, verwenden Sie die Option -r:
applydeltarpm -r old.rpm new.delta.rpm new.rpm
Technische Details finden Sie in /usr/share/doc/packages/deltarpm/README.
Mit der Option -q initiiert rpm Abfragen und ermöglicht es, ein RPM-Archiv zu prüfen (durch Hinzufügen der Option -p) und die RPM-Datenbank nach installierten Paketen abzufragen. Zur Angabe der benötigten Informationsart stehen mehrere Schalter zur Verfügung. Weitere Informationen hierzu finden Sie unter Tabelle 5.1, „Die wichtigsten RPM-Abfrageoptionen“.
|
|
Paketinformation |
|
|
Dateiliste |
|
|
Abfrage nach Paket, das die Datei FILE enthält. (FILE muss mit dem vollständigen Pfad angegeben werden.) |
|
|
Dateiliste mit Statusinformation (impliziert |
|
|
Nur Dokumentationsdateien auflisten (impliziert |
|
|
Nur Konfigurationsdateien auflisten (impliziert |
|
|
Dateiliste mit vollständigen Details (mit |
|
|
Funktionen des Pakets auflisten, die ein anderes Paket mit |
|
|
Fähigkeiten, die das Paket benötigt |
|
|
Installationsskripten (preinstall, postinstall, uninstall) |
Beispielsweise gibt der Befehl rpm -q -i wget die in Beispiel 5.2, „rpm -q -i wget“ gezeigte Information aus.
rpm -q -i wget #Name : wget Relocations: (not relocatable) Version : 1.11.4 Vendor: openSUSE Release : 1.70 Build Date: Sat 01 Aug 2009 09:49:48 CEST Install Date: Thu 06 Aug 2009 14:53:24 CEST Build Host: build18 Group : Productivity/Networking/Web/Utilities Source RPM: wget-1.11.4-1.70.src.rpm Size : 1525431 License: GPL v3 or later Signature : RSA/8, Sat 01 Aug 2009 09:50:04 CEST, Key ID b88b2fd43dbdc284 Packager : http://bugs.opensuse.org URL : http://www.gnu.org/software/wget/ Summary : A Tool for Mirroring FTP and HTTP Servers Description : Wget enables you to retrieve WWW documents or FTP files from a server. This can be done in script files or via the command line. [...]
Die Option -f funktioniert nur, wenn Sie den kompletten Dateinamen mit dem vollständigen Pfad angeben. Sie können beliebig viele Dateinamen angeben. Beispielsweise führt der folgende Befehl
rpm -q -f /bin/rpm /usr/bin/wget
zum Ergebnis:
rpm-4.8.0-4.3.x86_64 wget-1.11.4-11.18.x86_64
Wenn nur ein Teil des Dateinamens bekannt ist, verwenden Sie ein Shell-Skript, wie in Beispiel 5.3, „Skript für die Suche nach Paketen“ gezeigt. Übergeben Sie den partiellen Dateinamen als Parameter beim Aufruf des Skripts.
#! /bin/sh
for i in $(rpm -q -a -l | grep $1); do
echo "\"$i\" is in package:"
rpm -q -f $i
echo ""
done
Der Befehl rpm -q --changelog Paket zeigt eine detaillierte Liste der Änderungsinformationen zu einem bestimmten Paket nach Datum sortiert.
Mit der installierten RPM-Datenbank sind Überprüfungen möglich. Initiieren Sie sie mit -V oder --verify. Mit dieser Option zeigt rpm alle Dateien in einem Paket an, die seit der Installation geändert wurden. rpm verwendet acht verschiedene Zeichen als Hinweis auf die folgenden Änderungen:
|
|
MD5-Prüfsumme |
|
|
Dateigröße |
|
|
Symbolischer Link |
|
|
Änderungszeit |
|
|
Major- und Minor-Gerätenummern |
|
|
Eigentümer |
|
|
Gruppe |
|
|
Modus (Berechtigungen und Dateityp) |
Bei Konfigurationsdateien wird der Buchstabe c ausgegeben. Beispielsweise für Änderungen an /etc/wgetrc (wget-Paket):
rpm -V wget S.5....T c /etc/wgetrc
Die Dateien der RPM-Datenbank werden in /var/lib/rpm abgelegt. Wenn die Partition /usr eine Größe von 1 GB aufweist, kann diese Datenbank beinahe 30 MB belegen, insbesondere nach einem kompletten Update. Wenn die Datenbank viel größer ist als erwartet, kann es nützlich sein, die Datenbank mit der Option --rebuilddb neu zu erstellen. Legen Sie zuvor eine Sicherungskopie der alten Datenbank an. Das cron-Skript cron.daily legt täglich (mit gzip gepackte) Kopien der Datenbank an und speichert diese unter /var/adm/backup/rpmdb. Die Anzahl der Kopien wird durch die Variable MAX_RPMDB_BACKUPS (Standard: 5) in /etc/sysconfig/backup gesteuert. Die Größe einer einzelnen Sicherungskopie beträgt ungefähr 1 MB für 1 GB in /usr.
Alle Quellpakete haben die Erweiterung .src.rpm (Source-RPM).
Quellpakete können vom Installationsmedium auf die Festplatte kopiert und mit YaST entpackt werden. Sie werden im Paket-Manager jedoch nicht als installiert ([i]) gekennzeichnet. Das liegt daran, dass die Quellpakete nicht in der RPM-Datenbank eingetragen sind. Nur installierte Betriebssystemsoftware wird in der RPM-Datenbank aufgeführt. Wenn Sie ein Quellpaket „installieren“, wird dem System nur der Quellcode hinzugefügt.
Die folgenden Verzeichnisse müssen für rpm und rpmbuild in /usr/src/packages vorhanden sein (es sei denn, Sie haben spezielle Einstellungen in einer Datei, wie /etc/rpmrc, festgelegt):
SOURCES
für die originalen Quellen (.tar.bz2 oder .tar.gz files, etc.) und für die distributionsspezifischen Anpassungen (meistens .diff- oder .patch-Dateien)
SPECS
für die .spec-Dateien, die ähnlich wie Meta-Makefiles den build-Prozess steuern
BUILD
Alle Quellen in diesem Verzeichnis werden entpackt, gepatcht und kompiliert.
RPMS
Speicherort der fertigen Binärpakete
SRPMS
Speicherort der Quell-RPMs
Wenn Sie ein Quellpaket mit YaST installieren, werden alle erforderlichen Komponenten in /usr/src/packages installiert: die Quellen und Anpassungen in SOURCES und die relevante .spec-Datei in SPECS.
Experimentieren Sie nicht mit Systemkomponenten (glibc, rpm usw.), da Sie damit die Stabilität Ihres Systems riskieren.
Das folgende Beispiel verwendet das wget.src.rpm-Paket. Nach der Installation des Quellpakets sollten Dateien wie in der folgenden Liste vorhanden sein:
/usr/src/packages/SOURCES/wget-1.11.4.tar.bz2 /usr/src/packages/SOURCES/wgetrc.patch /usr/src/packages/SPECS/wget.spec
Mit rpmbuild -bX /usr/src/packages/SPECS/wget.spec wird die Kompilierung gestartet. X ist ein Platzhalter für verschiedene Stufen des build-Prozesses (Einzelheiten siehe in --help oder der RPM-Dokumentation). Nachfolgend wird nur eine kurze Erläuterung gegeben:
-bp
Bereiten Sie Quellen in /usr/src/packages/BUILD vor: entpacken und patchen.
-bc
Wie -bp, jedoch zusätzlich kompilieren.
-bi
Wie -bp, jedoch zusätzlich die erstellte Software installieren. Vorsicht: Wenn das Paket die Funktion BuildRoot nicht unterstützt, ist es möglich, dass Konfigurationsdateien überschrieben werden.
-bb
Wie -bi, jedoch zusätzlich das Binärpaket erstellen. Nach erfolgreicher Kompilierung sollte das Binärpaket in /usr/src/packages/RPMS sein.
-ba
Wie -bb, jedoch zusätzlich den Quell-RPM erstellen. Nach erfolgreicher Kompilierung sollte dieses in /usr/src/packages/RPMS liegen.
--short-circuit
Einige Schritte überspringen.
Der erstellte Binär-RPM kann nun mit rpm -i oder vorzugsweise mit rpm -U erstellt werden. Durch die Installation mit rpm wird er in die RPM-Datenbank aufgenommen.
Beachten Sie, dass die Direktive BuildRoot in der Spezifikationsdatei ab SLE12 veraltet ist. Benötigen Sie die Funktion weiterhin, verwenden Sie die Option --buildroot als Alternative. Weitere Hintergrundinformationen finden Sie in der Support-Datenbank unter https://www.suse.com/support/kb/doc?id=7017104.
Bei vielen Paketen besteht die Gefahr, dass während der Erstellung ungewollt Dateien in das laufende System kopiert werden. Um dies zu vermeiden, können Sie build verwenden, das eine definierte Umgebung herstellt, in der das Paket erstellt wird. Zum Aufbau dieser chroot-Umgebung muss dem build-Skript ein kompletter Paketbaum zur Verfügung stehen. Dieser kann auf Festplatte, über NFS oder auch von DVD bereitgestellt werden. Legen Sie die Position mit build --rpms verzeichnis fest. Im Unterschied zu rpm sucht das Kommando build die -spec-Datei im Quellverzeichnis. Wenn Sie, wie im obigen Beispiel, wget neu erstellen möchten und die DVD unter /media/dvd im System eingehängt ist, verwenden Sie als Benutzer root folgende Kommandos:
cd /usr/src/packages/SOURCES/ mv ../SPECS/wget.spec . build --rpms /media/dvd/suse/ wget.spec
Anschließend wird in /var/tmp/build-root eine minimale Umgebung eingerichtet. Das Paket wird in dieser Umgebung erstellt. Danach befinden sich die resultierenden Pakete in /var/tmp/build-root/usr/src/packages/RPMS.
Das Skript build bietet mehrere zusätzliche Optionen. Beispielsweise können Sie das Skript veranlassen, Ihre eigenen RPMs bevorzugt zu verwenden, die Initialisierung der build-Umgebung auszulassen oder das Kommando rpm auf eine der oben erwähnten Stufen zu beschränken. Weitere Informationen erhalten Sie über build --help oder die man-Seite build.
Midnight Commander (mc) kann den Inhalt von RPM-Archiven anzeigen und Teile daraus kopieren. Archive werden als virtuelle Dateisysteme dargestellt und bieten alle üblichen Menüoptionen von Midnight Commander. Zeigen Sie den HEADER mit F3 an. Zeigen Sie die Archivstruktur mit den Cursortasten und der Eingabetaste an. Kopieren Sie Archivkomponenten mit F5.
Ein Paket-Manager mit allen Funktionen ist als YaST-Modul verfügbar. Weitere Informationen finden Sie unter Kapitel 8, Installieren bzw. Entfernen von Software.