SDB:Smart Package Manager benutzen

Wechseln zu: Navigation, Suche
Icon-cleanup.png Dieser Artikel/Abschnitt benötigt Aufmerksamkeit!
Mehr Informationen sollten auf der Diskussionsseite des Artikels zu finden sein.
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 Package Manager

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 Flagge-Vereinigtes Koenigreich.png . 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über hinaus 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 vorhanden sein bestimmter Dateien und Verzeichnisse erkennbar, darunter das Verzeichnis media.1. Genaueres erfahren Sie auf den dazugehörigen Seiten.
  • RPM MetaData|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.

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

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

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/


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/

Der erste Kanal ein auf manuelle Aktualisierung eingestelltes YaST2-Depot, der zweite ein RPM-MataData-Depot mit zusätzlichen Spiegelservern.

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.

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.

erde:~ # smart channel --show > kanalliste.txt


Build Service

Die Depots im Portal: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.


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.

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.

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.

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.

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.


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/

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.


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 Abhä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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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