Smart Package Manager/Anleitung

aus openSUSE, der freien Wissensdatenbank

Inhaltsverzeichnis

Diese Anleitung bezieht sich auf die Kommandozeilenversion von Smart. Die grafische Oberfläche sollte mit diesen Informationen auch bedient werden können. Für alle Aktionen sind die Rechte des Systemverwalters (root) erforderlich.
Smart ist auf den Installationsmedien von openSUSE erhalten und lässt sich so schon bei der Installation des Systems auswählen und kann natürlich auch nachträglich mit den Standardpaketverwaltern von openSUSE wie Zypper oder YaST installiert werden.

Konfigurationsdateien

Smart speichert sein Konfiguration binär in der Datei /var/lib/smart/config. Der Inhalt dieser Datei ist nicht direkt lesbar und kann nur mit Smart verändert und angezeigt werden. Eine Übersicht über die zur Verfügung stehenden Optionen erhalten Sie hier . Die heruntergeladenen Pakete speichert Smart unter /var/lib/smart/packages, sie werden nach einer erfolgreichen Installation wieder gelöscht. Die Metadaten der Kanäle und Pakete speichert Smart unter /var/lib/smart/channels in XML-Dateien.

Unterstützte Depottypen

Smart unterstützt eine große Anzahl von Paketdepots, von denen die folgenden drei für die openSUSE-Distributionen relevant sind:

  • YaST2
    Dieses von Novell/SuSE entwickelte Format wird vor allem auf Installationsmedien verwendet. Sie finden es deshalb auch in den Basisdepots im Internet. Darüberhinaus findet es in Depots für Distributionen Anwendung, die älter sind als SUSE Linux 10.0, zur Zeit also vor allem noch für SUSE Linux 9.3. Diese Depots sind am vorhandensein bestimmter Dateien und Verzeichnisse erkennbar, darunter das Verzeichnis media.1. Genaueres erfahren Sie auf den dazugehörigen Seiten.
  • RPM MetaData
    Dieser Depottyp ist weit verbreitet und wird von den neueren openSUSE Distributionen für die Internetdepots verwendet. Es wird oft auch als Yum oder repomd bezeichnet und ist an einem Ordner namens repodata erkennbar.
  • APT-RPM
    Dieser Depottyp ist eine Adaption der Paketverwaltung von Debian. openSUSE selbst setzt diesen Typ nicht ein, jedoch gibt es diese Depottypen für APT-RPM mit dem gleichen Inhalt wie die anderen Depots ihn haben. Sie finden diese Depots bspw. hier.

Depots einbinden

Paketdepots werden in der Smart-Terminologie channels/Kanäle genannt, egal, welcher Typ es eigentlich ist. Um einen neuen Kanal zu definieren bedarf es einiger grundlegender Informationen darüber. Zusätzlich gibt es noch optionale Informationen und solche, die spezifisch für einen Depottyp sind. Die Angaben dürfen keine Zeichen enthalten, die nicht nicht im ASCII-Zeichensatz vorkommen, also bspw. keine deutschen Umlaute.

  • Erforderliche Informationen
    • Kanal-ID
      Hierbei handelt es sich um eine eindeutige Bezeichnung für den Kanal, ohne Lehrzeichen. Wird in Kanallisten in eckige Klammern gesetzt.
    • Typ/type
      Der verwendete Depottyp
    • Basisadresse/baseurl
      Die zum Depot führende Internetadresse, unterstützt werden die Protokolle HTTP, FTP und FILE.
  • Optionale Informationen
    • Name/name
      Ein frei wählbarer Kanalname, der auch Leerzeichen enthalten kann und den Kanal beschreiben sollte.
    • Spiegelserver/mirror
      Ein oder mehrere Spiegelserver für diesen Kanal.
    • Priorität/priority
      Priorität dieses Kanals, welche auf alle enthaltenen Pakete übertragen werden kann.
    • Manuelle Aktualisierung/manual
      Wenn dies auf ja (yes) gesetzt ist, wird der Kanal bei einer allgemeinen Aktualisierung übersprungen und lediglich aktualisiert, wenn er explizit aufgerufen wird. Dies ist sehr nützlich für große Depots, deren Inhalt sich aber voraussichtlich nicht mehr ändert, wie bspw. bei den Basisdepots.
    • Deaktiviert/disabled
      Falls dies auf ja (yes) gesetzt ist, wird dieser Kanal nicht verwendet.
  • Depotspezifische Informationen
    • Komponenten/components
      Hiermit werden bei APT-RPM-Depots die Komponenten angegeben, die verwendet werden sollen.

Kanalinformationen von Hand eingeben

Um einen Kanal von Hand direkt über die Kommandozeile einzubinden benötigt man die oben genannten Informationen. Der Befehl um einen Kanal einzubinden lautet smart channel --add Parameter.... Die Syntax sieht wie folgt aus, optionale Angaben stehen in eckigen Klammern:

smart channel --add Kanal-ID type=Depottyp [name="Irgendein Depot"] baseurl=http://irgendwo.org/pub/repos \
[components=extra] [mirror=ftp://irgendeinspiegel.org/pub/repos]

Beispiele

Im folgenden wird jeder Depottyp anhand eines Beispiels vorgestellt, welches sich auf das Basisdepot für SUSE Linux 10.1 bezieht.

YaST2

Kommando als normaler Nutzer

erde:~ # smart channel --add Basis type=yast2 name="Basispaketdepot (SUSE_Linux_10.1)" \ baseurl=http://download.opensuse.org/distribution/SL-10.1/inst-source/

RPM MetaData

Kommando als normaler Nutzer

erde:~ # smart channel --add Basis type=rpm-md name="Basispaketdepot (SUSE_Linux_10.1)" \ baseurl=http://download.opensuse.org/distribution/SL-10.1/inst-source/suse/

APT-RPM

Kommando als normaler Nutzer

erde:~ # smart channel --add Basis type=apt-rpm name="Basispaketdepot (SUSE_Linux_10.1)" \ baseurl=http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/10.1-i386/ components=base

Kanalinformationen in einer Textdatei ablegen

Eine komfortable Möglichkeit, Kanäle in Smart zu definieren besteht darin, die notwendigen Informationen in einer Textdatei abzulegen und diese dann einzulesen. Diese Textdatei kann man aufbewahren und weitergeben und ist so davor gefeit, mühevolle zusammengetragene Informationen durch eine Fehlbedienung von Smart zu verlieren.
In der Datei werden die selben Informationen benötigt wie beim 'manuellen' Anlegen von Kanälen. Jede Information belegt eine Zeile, ein Kanal beginnt mit der Kanal-ID in eckigen Klammern. Eine Textdatei kann beliebig viele Kanäle mit beliebigen, unterstützten Depottypen enthalten.

Beispiel

Im folgenden Beispiel enthält die Datei für jede Depotart einen Eintrag für das Basisdepot. Im Normalfall ergibt das natürlich keinen Sinn und dient hier lediglich Zwecken der Verdeutlichung. Kanal-ID und Name enthalten hier zur Verdeutlichung nochmals den verwendeten Depottyp. Verwendet werden auch noch weitere Einstellungen.

[Basis:YaST2]
type = yast2
name = Basispaketdepot (SUSE Linux 10.1 YaST2)
manual = yes
baseurl = http://download.opensuse.org/distribution/SL-10.1/inst-source/

[Basis:RPM_Metadata]
type = rpm-md
name = Basispaketdepot (SUSE Linux 10.1 RPM MetaData)
baseurl = http://download.opensuse.org/distribution/SL-10.1/inst-source/suse/
mirror = http://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source/suse/
mirror = ftp://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source/suse/

[Basis:APTRPM]
type = apt-rpm
name = Basispaketdepot (SUSE Linux 10.1 APT-RPM)
disbaled = yes
baseurl = http://ftp.gwdg.de/pub/linux/suse/apt/SuSE/10.1-i386/
components = base

Der erste Kanal ein auf manuelle Aktualisierung eingestelltes YaST2-Depot, der zweite ein RPM-MataData-Depot mit zusätzlichen Spiegelservern, der dritte ein deaktiviertes APT-RPM-Depot. Ein weiteres Beispiel für eine Kanalliste für 10.1 finden Sie hier.

Kanalinformationen aus einer Textdatei einlesen

Wenn Sie nun eine Datei mit Kanalinformationen haben, müssen Sie diese noch von Smart einlesen lassen. Es spielt dabei keine Rolle, ob sich diese Datei lokal auf ihrem Rechner oder auf einem HTTP- oder FTP-Server befindet. Wenn Sie Kanäle aus einer Datei einlesen, wird sie Smart bei jedem Kanal fragen, ob sie diesen einbinden möchten.

Kommando als normaler Nutzer

erde:~ # smart channel --add /home/nutzer/kanalliste.txt erde:~ # smart channel --add http://www.irgendwo.org/smart/listen/kanalliste.txt

Kanalinformationen in eine Textdatei exportieren

Genauso wie es möglich ist, Informationen aus einer Datei einzulesen, kann man auch schon vorhandene Informationen direkt in eine Datei schreiben lassen. Dafür verwendet man die Möglichkeit, sich die aktuelle Kanalliste von Smart anzeigen zu lassen und leitet die Ausgabe einfach in eine Datei um. Möglich ist dies mit smart channel --show.

Kommando als normaler Nutzer erde:~ # smart channel --show > kanalliste.txt

Build Service

Die Depots im Build Service von openSUSE enthalten alle eine .repo-Datei für das jeweilige Depot. Diese Datei enthält alle wichtigen Informationen für Smart, so dass Sie diese Datei einfach nur noch von Smart einlesen lassen müssen, und schon verfügt es über die nötigen Informationen. Folgendes Beispiel nutzt das Mozilla-Depot für openSUSE 10.2.

Kommando als normaler Nutzer erde:~ # smart channel --add http://software.opensuse.org/download/mozilla/openSUSE_10.2/mozilla.repo

Kanäle aktualisieren, bearbeiten, entfernen, deaktivieren

Kanäle aktualisieren

Mit dem Befehl smart update werden alle Kanalinformationen aktualisiert, also alle Metadaten der Kanäle erneuert, sofern sie nicht mit manual=yes von der allgemeinen Aktualisierung ausgenommen sind. Wenn zusätzlich eine oder mehrere Kanal-ID angegeben werden, werden nur die genannten Kanäle aktualisiert, womit sich dann auch die Kanäle aktualisieren lassen, die von der allgemeinen Aktualisierung ausgenommen sind. Wenn Sie also prüfen wollen, ob es neue oder aktuelle Pakete in den Paketdepots gibt, ist dies ihr Befehl.

Kommando als normaler Nutzer

erde:~ # smart update erde:~ # smart update Kanal1 Kanal2 Kanal3

Kanalinformationen bearbeiten

Mit dem Befehl smart channel --edit lassen sich alle Kanalinformationen bearbeiten. Es ist nicht möglich einen einzelnen Kanal auszuwählen. Smart exportiert die Kanäle dabei in eine temporäre Datei, öffnet diese mit einem Standardeditor und ließt sie zum Schluss wieder ein.

Kommando als normaler Nutzer erde:~ # smart channel --edit

Kanal löschen

Um einen Kanal zu löschen, verwenden Sie den Befehl smart channel --remove Kanal-ID, wobei Sie mehrere Kanäle durch Leerzeichen getrennt angeben können. Mit smart channel --remove-all können Sie auch alle Kanäle mit einem Mal löschen.

Kommando als normaler Nutzer erde:~ # smart channel --remove Basis

Kanäle deaktivieren und aktivieren

Um einen Kanal zu deaktivieren gibt es das Kommando smart channel --disable Kanal-ID, wobei auch mehrere Kanäle durch Leerzeichen getrennt, angegeben werden können. Mit smart channel --enable Kanal-ID lassen sie sich dann wieder aktivieren.

Kommando als normaler Nutzer

erde:~ # smart channel --disable Basis erde:~ # smart channel --enable Basis

Spiegelserver

Smart kann nicht nur Spiegelserver verwenden, die direkt bei den Kanalinformationen angegeben sind, sondern auch über eine Spiegelserverliste einen passenden Spiegelserver auswählen. Diese Liste ist so aufgebaut, dass einem Grundserver samt Pfadangabe eine Anzahl von Spiegelserver zugeordnet wird, aus welcher Smart dann auswählt. Der Gurndserver sollte dabei derjenige sein, welcher auch für die Pfadangabe in der baseurl der Kanäle verwendet wird. Folgendes Beispiel würde download.opensuse.org als Grundserver und ftp.gwdg.de als Spiegelserver verwenden, man achte dabei auf die Pfadangabe: http://download.opensuse.org/distribution/ ftp://ftp.gwdg.de/pub/opensuse/distribution/. Die Pfadangabe muss bis zu dem Punkt erfolgen, an dem die exakte Spiegelung beginnt. Mit smart mirror --show lassen sich die aktuell verwendeten Spiegelserver anzeigen, womit sie sich auch mittels smart mirror --show > spiegelserverliste.txt in eine Textdatei exportieren lassen.

Spiegelserver hinzufügen

Mit smart mirror --add Ursprungsserver Spiegelserver lassen sich Spiegelserver hinzufügen. Dies funktioniert natürlich auch, um weitere Spiegelserver hinzuzufügen, es muss dabei nur jeweils der Ursprungsserver angegeben werden.

Kommando als normaler Nutzer erde:~ # smart mirror --add http://download.opensuse.org/distribution/ ftp://ftp.gwdg.de/pub/opensuse/distribution/

Spiegelserverliste aus Datei einlesen

Wie anfangs geschrieben, lassen Sie die Spiegelserver auch in einer Datei abspeichern, aus welcher sie dann auch wieder eingelesen werden können. Diese Datei kann sich sowohl lokal auf dem eigenen Rechner, als auch auf entfernten Systemen bspw. im Internet befinden. In der Datei werden die Ursprungsserver genannt, gefolgt von den Spiegelservern, wobei die Spiegelserver um einige Leerzeichen eingerückt sind. Eine solche Datei könnte etwa so aussehen:

http://download.opensuse.org/distribution/
    http://ftp.gwdg.de/pub/opensuse/distribution/
    ftp://ftp.gwdg.de/pub/opensuse/distribution/

http://software.opensuse.org/download/
    http://ftp.gwdg.de/pub/opensuse/repositories/

http://packman.iu-bremen.de/
    ftp://ftp.mb3.tu-chemnitz.de/mirrors/packman.iu-bremen.de/
    ftp://ftp.cesnet.cz/MIRRORS/packman.iu-bremen.de/
Kommando als normaler Nutzer

erde:~ # smart mirror --add ./spiegelserver.txt erde:~ # smart mirror --add http://www.irgendeinserver.de/pfad/zur/spiegelserver.txt

Spiegelserver entfernen

Spiegelserver lassen sich auch wieder entfernen, wobei die Syntax der des Hinzufügens ähnelt, es müssen also der Ursprungsserver und der zu entfernende Spiegelserver angegeben werden.

Kommando als normaler Nutzer erde:~ # smart mirror --remove http://download.opensuse.org/distribution/ ftp://ftp.gwdg.de/pub/opensuse/distribution/

Pakete verarbeiten

Wenn Sie Kanäle angelegt haben und die Kanalinformationen aktualisiert haben, können Sie nun Pakete aus diesen Depots installieren oder schon installierte Pakete entfernen oder aktualisieren. Sie können in den Depots nach Paketen suchen, oder sich Informationen über Pakete anzeigen lassen. Zu jedem Befehl lässt sich eine eigene Hilfe anzeigen, welche sich folgendermaßen aufrufen lässt: smart Befehl --help bspw.: smart install --help

Namenskonventionen

Man kann mit dem richtigen Paketnamen ganz gezielt eine bestimme Paketversion verarbeiten.

  • name
    Wenn nur der Paketname angegeben wird, wird dieses Paket in der höchsten verfügbaren Version verarbeitet. Bspw.: kernel-default
  • name.arch
    Sie können gezielt eine bestimmte Architektur auswählen. Bspw.: kernel-default.x86_64
  • name-ver
    Auch einer ganz bestimmten Version steht natürlich nichts im Weg. Bspw.: kernel-default-2.6.18.2
  • name-ver-rel
    Außerdem kann auch noch nach einer bestimmten Ausgabe (release) verlangt werden. Bspw.: kernel-default-2.6.18.2-34
  • name-ver-rel.arch
    Auf die Spitze kann man es auch treiben ;-). Bspw.: kernel-default-2.6.18.2-34.x86_64

Pakete suchen und finden, Informationen anzeigen lassen

Smart verfügt über verschiedene Funktionen, nach Paketen zu suchen oder sich vielfältige Informationen über Pakete und Anbhängigkeiten anzeigen zu lassen.

search

Mit dem search-Kommando lassen sich sowohl die Paketnamen als auch die Zusammenfassungen und Beschreibungen der Pakete nach bestimmten Ausdrücken durchsuchen. Dabei können Platzhalter (*) und Zusammenfassungen (' ') verwendet werden.

Kommando als normaler Nutzer

erde:~ # smart search kerry erde:~ # smart search 'ke*y' erde:~ # smart search 'beagle desktop'

query

Mit query lassen sich viele Paketinformationen abfragen, darunter bspw. die Abhängigkeiten und Konflikte. Alle Optionen lassen sich mit smart query --help anzeigen.

Kommando als normaler Nutzer

erde:~ # smart query kerry-0.2.2-3.3 --show-requires erde:~ # smart query kerry-0.2.2 --show-provides erde:~ # smart query kerry.x86_64 --show-channels

info

Mit info kann eine Zusammenfassung über ein Paket angezeigt werden. Diese enthält unter anderem die Beschreibung, die bereitstellenden Paketdepots, Prioritäten und vieles mehr.

Kommando als normaler Nutzer erde:~ # smart info kerry-0.2.2-3.3.x86_64

Pakete aktualisieren, installieren und entfernen

Die Hauptaufgabe einer Paketverwaltung besteht natürlich im Installieren, Entfernen und Aktualisieren von Paketen. Bevor eine Aktion ausgeführt wird, werden jeweils die Abhängigkeiten berechnet, um dem Benutzer vor der endgültigen Bestätigung der Aktion(en) eine Übersicht über die durchzuführenden Änderungen anzuzeigen.

install

Mit install lassen sich Pakete installieren, ist das Paket schon installiert, wird gegebenenfalls eine aktuellere Version installiert. Mehrere Pakete lassen sich durch Leerzeichen getrennt angeben.

Kommando als normaler Nutzer

erde:~ # smart install kerry erde:~ # smart install 'ke*y' beagle-0.2.14.x86_64

reinstall

Mit reinstall lassen sich schon installierte Pakete erneut installieren.

Kommando als normaler Nutzer erde:~ # smart reinstall kerry

remove

Mit remove lassen sich Pakete entfernen, wobei auch Pakete entfernt werden, die von den zu entfernenden Paketen abhängen, weshalb bei diesem Befehl genau auf die Zusammenfassung geachtet werden sollte.

Kommando als normaler Nutzer

erde:~ # smart remove kerry erde:~ # smart install 'ke*y' beagle-0.2.14.x86_64

upgrade

Mit upgrade lassen sich ein oder mehrere Pakete explizit aktualisieren. Ist kein Paket angegeben, werden alle Pakete aktualisiert, für die neuere Versionen in den Depots bereitstehen. Mit diesem Befehl lässt sich somit auch eine ganze Distribution aktualisieren, was allerdings besser bei YaST aufgehoben ist. Wird der Befehl ohne Parameter ausgeführt und somit alle Pakete aktualisiert, sollte genau auf die Zusammenfassung geachtet werden.

Kommando als normaler Nutzer

erde:~ # smart upgrade erde:~ # smart upgrade kerry erde:~ # smart upgrade 'ke*y' beagle-0.2.15-3.1

Wartung

clean

Mit clean können Überreste nicht vollständig heruntergeladener Pakete im Verzeichnis /var/lib/smart/packages beseitigt werden.

Kommando als normaler Nutzer erde:~ # smart clean

fix

Mi fix werden alle Abhängigkeiten der angegebenen, installierten Pakete überprüft und gegebenenfalls gelöst. Ist kein Paket angegeben, werden alle installierten Pakete überprüft.

Kommando als normaler Nutzer

erde:~ # smart fix erde:~ # smart fix kerry erde:~ # smart fix 'ke*y' beagle-0.2.15-3.1

check

Mit check lassen sich die Abhängigkeiten der angegeben Pakete überprüfen, wobei es auch möglich ist, nur Pakete bestimmter Kanäle zu prüfen. wobei mehrere Kanäle durch Kommata getrennt werden. Ist nicht angegeben, werden alle Pakete geprüft.

Kommando als normaler Nutzer

erde:~ # smart check erde:~ # smart check 'ke*y' beagle-0.2.15-3.1 erde:~ # smart check --channels=Basis,Home:Beineri kerry

Die Smart-Shell

Smart verfügt über eine eigene, integrierte Kommandozeile in welcher sich Smart-Operationen durchführen lassen, ohne dass Smart bei jedem Befehl neu gestartet werden muss. In die Shell gelangen Sie mit smart --shell. Sie können dort die gleichen Befehle ausführen wie auf einer gewöhnlichen Kommandozeile mit smart. Durch die Eingabe von help erhalten Sie einen Hilfetext, mit quit können Sie die Shell wieder verlassen. In der Shell werden die Befehle allerdings nicht sofort ausgeführt, sondern erst in eine Warteschlange eingestellt. Um die Befehle ausführen zu können, geben Sie commit ein. Mit status können Sie sich anschauen, welche Aktionen ausgeführt würden.

Kommando als normaler Nutzer erde:~ # smart --shell

smart> install beagle-0.2.15.1-3.1 smart> install kerry smart> remove beagle-gui smart> status smart> commit smart> quit