Smart Package Manager (SmartPM)
Was wird eingesetzt?
Da, das bisher verwendete APT nicht mehr weiterentwickelt wird, greift das RRZE in Zukunft auf den neuen Paketmanager SmartPM zurück. SmartPM arbeitet mit fast allen Distributionen (APT, APT-RPM, YUM, URPMI, usw.) zusammen und kann mit DEB- und RPM-Pakete umgehen. Neben einer Kommandozeilen-Version liefert SmartPM auch eine GUI (Benutzeroberfläche) mit.
Warum ausgerechnet das?
SmartPM kann wie APT vollkommen von der Kommandozeile aus bedient werden und ermöglicht dadurch die vollautomatische Installation von Paketen und Patches. Erklärtes Ziel des Projektes war es die Auflösung von Abhängigkeiten zwischen Paketen noch besser als im Vorbild APT zu realisieren.
Letztendlich ist es ihnen überlassen, ob sie diese Update-Möglichkeit nutzen, oder ob sie die distributionseigenen Mechanismen verwenden - aber Updates sollten in jedem Fall regelmäßig (und wenn möglich automatisiert) eingespielt werden.
Wie funktioniert SmartPM?
Je nach verwendetem Repository-Typ liegen die Informationen über vorhandene Pakete und Patches in unterschiedlicher Form auf den Servern. SmartPM lädt diese Daten in einen lokalen Cache um diesen in einem weiteren Schritt auf das Vorhandensein neuerer Pakete oder Patches zu analysieren. Smart ermöglicht den Transfer der Pakete mit FTP, HTTP, HTTPS und SCP. Falls ein weiteres Paket installiert ist (Pycurl), dann können die Pakete auch via FTPS, Telnet, Dict und LDAP übertragen werden.
Wo bekomme ich SmartPM her?
Fertige RPMs gibt's hier:
-
Externer Link: FTP-Server:
smart-packages für SuSE
Sie benötigen nur eine der dort verfügbaren Dateien um den Patch-Dienst nutzen zu können:
- smart-
version.arch.rpm
Für das graphische Frontend benötigen sie noch folgende Datei:
- smart-gui-
version.arch.rpm
Diese werden einfach mit
linux~ # rpm -ihv smart-version.arch.rpm
bzw.
linux~ # rpm -ihv smart-gui-version.arch.rpm
installiert.
Das restlichen Paket
- smart-debuginfo-
version.arch.rpm
wird nur von Entwicklern (smart-debuginfo-version.arch.rpm) benötigt.
Das andere Paket
- ksmarttray-
version.arch.rpm
dient zum Einbinden eines Icons in den Desktopmanager KDE.
Und woher nimmt Smart die Patches?
Die Patches werden von SuSE bereitgestellt und auf unserem FTP-Server gespiegelt
um aus dem Universitätsnetz einen schnelleren Zugriff zu ermöglichen.
Der Zugriff ist nicht beschränkt, d.h. auch Heimanwender können mit der
gleichen Konfiguration diese Updates auf ihrem Rechner einspielen.
Was muß ich wo konfigurieren?
Eine Möglichkeit SmartPM zu konfigurieren besteht, darin vordefinierte Kanäle
in /etc/smart/channels/*.channel bereitzustellen. Beim Aufruf von Smart
fragt dieses dann nach, ob die dort aufgelisteten Kanäle aktiviert werden sollen.
Hier eine Beispiel-Konfiguration:
[openSuSE-10.0-inst-source] name = Installationsquellen für OpenSuSE 10.0 baseurl = ftp://ftp.rrze.uni-erlangen.de/pub/mirrors/opensuse/distribution/SL-10.0-OSS/inst-source/ type = yast2
Dazu noch eine kurze Erläuterung:
In der ersten Zeile wird ein Alias definiert, unter der der Channel definiert wird.
Die zweite Zeile enthält den eigentlichen Namen des Channels.
Unter baseurl steht der Pfad auf dem FTP-Server.
Der Punkt type definiert die Art des Repositories und
nach welchen Metadaten Smart im Netz sucht.
Hier sind Beispielkonfigurationen. Diese Konfiguration funktioniert für x86- und x86_64-Architektur
Via FTP/HTTP
Der Zugriff über FTP bzw. HTTP Protokoll ist sehr einfach zu konfigurieren, da auf dem Client nur eine korrekte Netzkonfiguration vorhanden sein muss.
Eine Kleinigkeit sollte man jedoch bei diesen beiden Zugriffsmethoden bedenken: Weder FTP noch HTTP bieten die Möglichkeit direkt auf Dateien zuzugreifen. Bevor Smart damit arbeiten kann, müssen diese auf der lokalen Platte zwischengelagert werden, was unter Umständen erheblich Plattenplatz beanspruchen kann. Nach einem erfolgreichen Update sollte man deswegen dafür sorgen, dass zumindest die alten Update-Pakete wieder gelöscht werden. Das erledigt das Kommando:
linux~ # smart clean
Wie komme ich an die Updates?
Mit Hilfe von
linux~ # smart update
wird zuerst die lokale Datenbank der verfügbaren Pakete auf den aktuellen Stand gebracht. Anschließend können Sie mit
linux~ # smart upgrade
evtl. vorhandene neuere Pakete einspielen.
Bestimmte Pakete nicht updaten
In manchen Fällen ist es sinnvoll oder nötig einige Pakete nicht zu aktualisieren. Bei Smart kann man solche Pakete mit dem folgenden Befehl von allen Updates ausnehmen:
linux~ # smart flag --set lock pkgname
Bestimmte Paketversionen installieren
Mit Hilfe des folgenden Kommandos lassen sich die verschiedenen verfügbaren Versionen eines Pakets anzeigen:
linux~ # smart info paketname | grep ^Version
Anschließend kann dann die gewünschte Version installiert werden:
linux~ # smart install paketname-versionsnummer
Smart kann auch RPM-Pakete installieren, die noch nicht heruntergeladen wurden. Hierfür einfach die URL angeben.
linux~ # smart install http://some.url/some/path/somepackage.rpm
Mehrere Mirrors verwenden
Um den Ausfall eines Patch-Servers zu überbrücken, kann man sich Mirrors einrichten. Bei smart erfolgt das auf Basis der URLs, die in den Channels verwendet werden:
linux~ # smart mirror --add http://ftp.uni-erlangen.de/pub/mirrors/opensuse/ http://ftp5.gwdg.de/pub/opensuse/
Migration von apt zu smart
Der Umstieg beim Client von apt zu smart ist relativ einfach. Die Konvertierung der apt Konfiguration hin zu smart erledigt ein kleines Skript aptrpm2smart.
Automatische Updates?
Um den ganzen Prozeß zu vereinfachen bietet es sich an die Updates automatisch
laufen zu lassen. Dafür braucht es nur ein kleines Skript, welches per cron
in regelmäßigen Abständen aufgerufen werden soll. Um es z.B. einmal täglich
laufen zu lassen kopiert man es nach /etc/cron.daily (Skript muss ausführbar sein).
Die Kurzversion sieht etwa so aus:
#!/bin/sh /usr/bin/smart update /usr/bin/smart upgrade -y
Eine ausführliche Version kann hier heruntergeladen werden autosmart.sh.
Vielen Danke geht hier an die EasyLinux-Mailingliste, die das Script weiter verbessert haben.
Der Updatestatus wird via Email verschickt, deswegen sollte die Email-Adresse am Anfang des Skriptes geändert werden.
Die Emails werden nur verschickt, wenn das Mailsystem "mail" konfiguriert ist.
Wenn man einen lokalen SMTP-Server bei "mail" konfiguriert hat, kann man eine lokale Email-Adresse verwenden. Bei Verwendung des FAU-Mailrelays sollte eine globale Email-Adresse verwendet werden.
RPMs von Fremdherstellern
Nicht jede Software ist in den Smart-Channels verfügbar, und so muss man manchmal die RPM Pakete von Fremdherstellern von Hand installieren. Oftmals treten dabei Abhängigkeiten auf, die erst durch die aufwändige Installation der fehlenden Pakete bereinigt werden können.
Einfacher geht es so: Man versucht das Paket ohne Beachtung der Abhängigkeiten
zu installieren (dabei helfen die RPM-Optionen --nodeps und
--force):
linux~ # rpm -ihv --nodeps --force <Paketname>
Ein nachfolgender Aufruf von
linux~ #smart check
installiert danach die fehlenden Pakete (soweit vorhanden) oder deinstalliert das Paket wieder.



