Smart Package Manager/Anleitung
aus openSUSE, der freien Wissensdatenbank
|
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.
- Kanal-ID
- 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.
- Name/name
- Depotspezifische Informationen
- Komponenten/components
Hiermit werden bei APT-RPM-Depots die Komponenten angegeben, die verwendet werden sollen.
- Komponenten/components
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/ |
|---|
APT-RPM
|
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.
|
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 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.
| 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.
|
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.
| 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/
|
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.
| 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.
|
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 |
|---|

