SDB:Smart Package Manager benutzen
Dieser Artikel/Abschnitt benötigt Aufmerksamkeit! Mehr Informationen sollten auf der Diskussionsseite des Artikels zu finden sein. |
Inhaltsverzeichnis
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 . 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.
- 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
RPM MetaData
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.
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.
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.
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.
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.
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.
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.
smart> install beagle-0.2.15.1-3.1
smart> install kerry
smart> remove beagle-gui
smart> status
smart> commit
smart> quit