7.1 Verwenden von zypper

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.

Geben Sie für weitere Informationen zur Verwaltung von Software zypper help oder zypper help Kommandozeile ein oder rufen Sie die man-Seite zypper(8) auf. Unter http://en.opensuse.org/Zypper/Usage finden Sie eine vollständige und detaillierte Kommandoreferenz.

7.1.1 Allgemeine Verwendung

Die allgemeine Syntax für zypper lautet:

zypper [global-options] command [command-options] [arguments] ...

Die Komponenten in Klammern sind nicht erforderlich. 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 den Systemtyp das Folgende ein:

zypper patch

Zusätzlich können Sie aus einer oder mehreren globalen Optionen wählen, indem Sie sie direkt vor dem Kommando eingeben. Beispielspielsweise führt --non-interactive das Kommando ohne Eingabeaufforderungen aus (und wendet automatisch die Standardantworten an):

zypper --non-interactive patch

Um die spezifischen Optionen für ein bestimmtes Kommando zu benutzen, geben Sie sie direkt nach dem Kommando ein. Beispielsweise werden mit --auto-agree-with-licenses alle erforderlichen Patches auf das System angewendet, ohne eine Bestätigung von Lizenzen anzufordern (sie werden automatisch akzeptiert):

zypper patch --auto-agree-with-licenses

Einige Kommandos erfordern ein oder mehrere Argumente. Bei der Verwendung des Installationskommandos z. B. müssen Sie angeben, welche Pakete zu installieren sind:

zypper install mplayer

Einige Optionen erfordern auch ein Argument. Das folgende Kommando listet alle bekannten Muster auf:

zypper search -t pattern

Sie können alle obigen Optionen kombinieren. Beispielsweise werden mit dem folgenden Kommando mplayer- und amarok-Pakete nur mithilfe des factory-Repositorys installiert und ausführlich angegeben:

zypper -v install --repo factory mplayer amarok

Die meisten Zypper-Kommandos besitzen eine dry-run-Option, die eine Simulation des angegebenen Kommandos ausführt. Sie kann für Tests verwendet werden.

zypper remove --dry-run MozillaFirefox

7.1.2 Installieren und Entfernen von Software mit zypper

Verwenden Sie zur Installation oder Löschung von Paketen die folgenden Kommandos:

zypper install package
zypper remove package

Zypper kennt verschiedene Möglichkeiten, Pakete für die Installations- und Löschkommandos anzugeben:

nach dem exakten Paketnamen
zypper in MozillaFirefox
nach dem Repository-Alias und Paketnamen
zypper in mozilla:MozillaFirefox

Dabei ist mozilla der Alias des Repositorys, aus dem installiert werden soll.

nach Paketname mit Platzhalterzeichen

Das folgende Kommando installiert alle Pakete, deren Name mit Moz beginnt. Verwenden Sie diese Möglichkeit mit äußerster Umsicht, vor allem beim Entfernen von Paketen.

zypper in Moz*
nach Funktion

Wenn Sie beispielsweise ein perl-Modul installieren möchten, ohne den Namen des Pakets zu kennen, sind Funktionen praktisch:

zypper in 'perl(Time::ParseDate)'
nach Funktion und/oder Architektur und/oder Version

Zusammen mit einer Funktion können Sie eine Architektur (wie i586 oder x86_64) und/oder eine Version angeben. Der Version muss ein Operator vorangehen: < (kleiner als), <= (kleiner oder gleich), = (gleich>, >= (größer oder gleich), > (größer als).

zypper in 'firefox.x86_64'
zypper in 'firefox>=3.5.3'
zypper in 'firefox.x86_64>=3.5.3'
nach Pfad

Sie können einen lokalen oder entfernten Pfad zu einem Paket angeben:

zypper in /tmp/install/MozillaFirefox.rpm
zypper in http://download.opensuse.org/repositories/mozilla/SUSE_Factory/x86_64/MozillaFirefox-3.5.3-1.3.x86_64.rpm

Verwenden Sie zum gleichzeitigen Installieren und Entfernen von Paketen die Modifikatoren +/-:

zypper install emacs -vim
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:

zypper install -emacs +vim       # Wrong
zypper install vim -emacs        # Correct
zypper install -- -emacs +vim    # same as above
zypper remove emacs +vim         # same as above

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 (Installieren, Entfernen oder Patch) angegeben werden, wie im Folgenden:

zypper --non-interactive install package_name

Mit dieser Option kann Zypper auch in Skripten und Cron-Aufträgen verwendet werden.

ACHTUNG: Entfernen Sie keine obligatorischen Systempakete.

Entfernen Sie keine Pakete wie glibc, zypper, kernel oder ähnliche Pakete. Diese Pakete sind obligatorisch für das System. Wenn sie entfernt werden, kann das System instabil werden oder seine Funktion komplett einstellen.

Installation von Quellpaketen

Wenn Sie das entsprechende Quellpaket eines Pakets installieren möchten, verwenden Sie:

zypper source-install package_name
   

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.

zypper source-install -d package_name # source package only
    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 7.1.4, Verwalten von Repositorys mit Zypper.

Eine Liste aller Quellpakete, die in Ihren Repositorys verfügbar sind, können Sie wie folgt abrufen:

zypper search -t srcpackage

Dienstprogramme

Wenn Sie prüfen möchten, ob alle Abhängigkeiten noch erfüllt sind, und fehlende Abhängigkeiten reparieren möchten, verwenden Sie:

zypper verify

Zusä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 sind. Falls empfohlene Pakete erst nach der Installation des empfehlenden Pakets (durch Hinzufügen zusätzlicher Pakete) zur Verfügung steht, verwenden Sie das folgende Kommando:

zypper install-new-recommends

7.1.3 Aktualisieren von Software mit zypper

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. Letzters wird mit dem Kommando zypper dist-upgrade erreicht, das in Abschnitt 14.1, Upgrade des Systems behandelt wird.

Installieren von Patches

Um alle offiziell herausgegebenen Patches für Ihr System zu installieren, führen Sie einfach Folgendes aus:

zypper patch

In diesem Fall werden alle in Ihren Repositorys vorhandenen Patches auf Relevanz überprüft und bei Bedarf installiert. Das obige Kommando ist alles, was Sie brauchen, um sie bei Bedarf anzuwenden.

Zypper kennt drei unterschiedliche Kommandos, um die Verfügbarkeit von Patches abzufragen:

zypper patch-check

Listet die Anzahl der benötigten Patches auf (Patches, die für Ihr System gelten, aber noch nicht installiert sind)

~ # zypper patch-check
Loading repository data...
Reading installed packages...
5 patches needed (1 security patch)
zypper list-patches

Listet alle benötigten Patches auf (Patches, die für Ihr System gelten, aber noch nicht installiert sind)





~ # zypper list-updates
Loading repository data...
Reading installed packages...
S | Repository | Name                          | Current | Available  | Arch
--+------------+-------------------------------+---------+------------+-------
v | Updates    | update-test-interactive       | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-optional          | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-reboot-needed     | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-relogin-suggested | 0-2.35  | 0-9999.1.2 | noarch
v | Updates    | update-test-security          | 0-2.35  | 0-9999.1.2 | noarch
zypper patches

Listet alle für openSUSE verfügbaren Patches auf, unabhängig davon, ob sie bereits installiert sind oder für Ihre Installation gelten.

Installieren von Updates

Wenn ein Repository neue Pakete enthält, aber keine Patches zur Verfügung stellt, zeigt zypper patch keinerlei Wirkung. Verwenden Sie zum Aktualisieren aller installierten Pakete mit neueren verfügbaren Versionen:

zypper update

Zum Aktualisieren einzelner Pakete geben Sie das Paket mit dem Aktualisierungs- oder Aktualisierungskommando an:

zypper update package
zypper install package

Mit dem Kommando kann eine Liste mit allen neu verfügbaren Paketen abgerufen werden:

zypper list-updates

HINWEIS: Unterschiede zwischen zypper update und zypper dist-upgrade

Wählen Sie zypper update, um Pakete auf neuere Versionen zu aktualisieren, die für Ihre Produktversion verfügbar sind, und die Systemintegrität beizubehalten. zypper update richtet sich nach den folgenden Regeln:

  • keine Herstelleränderungen
  • keine Architekturänderungen
  • keine Zurückstufung
  • installierte Pakete behalten

Um Ihre Installation auf eine neue Produktversion zu aktualisieren, verwenden Sie zypper dist-upgrade mit den erforderlichen Repositorys (Details siehe in Abschnitt 7.1.4, Verwalten von Repositorys mit Zypper). Dieses Kommando stellt sicher, dass alle Pakete aus den aktuell aktivierten Repositorys installiert werden. Diese Regel ist erzwungen, d. h. Pakete könnten einen anderen Hersteller oder eine andere Architektur haben oder sogar zurückgestuft werden. Alle Pakete, die nach der Aktualisierung unerfüllte Abhängigkeiten aufweisen, werden deinstalliert.

7.1.4 Verwalten von Repositorys mit Zypper

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:

zypper repos

Das Ergebnis ist der folgenden Ausgabe ähnlich:





# | Alias                 | Name                  | Enabled | Refresh
--+-----------------------+-----------------------+---------+--------
1 | Updates               | Updates               | Yes     | Yes
2 | openSUSE 11.2-0       | openSUSE 11.2-0       | No      | No
3 | openSUSE-11.2-Debug   | openSUSE-11.2-Debug   | No      | Yes
4 | openSUSE-11.2-Non-Oss | openSUSE-11.2-Non-Oss | Yes     | Yes
5 | openSUSE-11.2-Oss     | openSUSE-11.2-Oss     | Yes     | Yes
6 | openSUSE-11.2-Source  | openSUSE-11.2-Source  | No      | Yes

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. Beachten Sie jedoch, dass sich 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:

Hinzufügen von Repositorys

Zum Hinzufügen eines Repository, führen Sie Folgendes aus:

zypper addrepo URI Alias

URI kann ein Internet-Repository, eine Netzwerkressource, ein Verzeichnis oder eine CD oder DVD sein (für Details siehe http://en.opensuse.org/Libzypp/URI). 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. Um das Arbeiten mit Repositorys bequemer zu gestalten, verwenden Sie kurze und einprägsame Aliasbezeichnungen.

Entfernen von Repositorys

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. Zum Entfernen des 3. Eintrags aus dem Beispiel verwenden Sie das folgende Kommando:

zypper removerepo 3

Ändern von Repositorys

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 den Repositorynamen updates, aktiviert die automatische Aktualisierung und stellt seine Priorität auf 20 ein:

zypper mr -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 (TYPE kann eines der folgenden sein: 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:

zypper renamerepo 'Mozilla Firefox' firefox

7.1.5 Abfragen von Repositorys und Paketen mit Zypper

Zypper 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:

zypper products
zypper patterns
zypper packages
zypper patches

Zur Abfrage aller Repositorys auf bestimmte Pakete verwenden Sie search. Es gilt für Paketnamen, Funktionen oder optional Paketzusammenfassungen und -beschreibungen. Verwenden der Platzhalterzeichen * und ? mit dem Suchbegriff ist erlaubt. Standardmäßig unterscheidet der Suchvorgang keine Groß- und Kleinschreibung.

zypper se firefox       # simple search for "firefox"
zypper se *fire*        # using wildcards
zypper se -d fire       # also search in package descriptions and summaries
zypper se -u firefix    # only display packages not already installed

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:

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. Verwenden Sie die Optionen --requires und --recommends, um auch anzuzeigen, was das Paket erfordert/empfiehlt:

zypper info --requires MozillaFirefox

Das what-provides-Paket gleicht dem rpm -q --whatprovides-Paket, aber rpm ist nur für Abfragen der RPM-Datenbank (die Datenbank aller installierten Pakete) möglich. zypper informiert Sie auf der anderen Seite über Anbieter der Möglichkeit von einem beliebigen Repository, nicht nur von denen, die installiert sind.