Smart: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Smart installieren: Link angepasst - siehe Diskussion)
 
(68 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
From The Free On-line Dictionary of Computing:
+
{{Infobox_Software|
 +
Name= [[Bild:Smartpm.png]]
 +
|Screenshot= [[Bild:Smart.jpg|240px]]
 +
|Beschreibung= Smart 0.5
 +
|Hersteller= Gustavo Niemeyer
 +
|AktuelleVersion= 0.5
 +
|AktuelleVersionFreigabeDatum= ?
 +
|Betriebssystem= Linux, OS X
 +
|Kategorie= [[Paketmanager]]
 +
|Lizenz= [http://de.wikipedia.org/wiki/GNU_General_Public_License GNU General Public License]
 +
|Deutsch= ja
 +
|Website= [http://labix.org/smart smart-Projektseite]
 +
}}
  
  smart  
+
==Was ist Smart?==
  1. <programming> Said of a program that does the {Right Thing} in a wide variety of complicated circumstances. (...)
+
Der Smart-Package-Manager ist eine Software, mit der man unter Linux die Softwarepakete verwaltet. Da es rpm, deb, yum, apt, urpmi, slackware und noch weitere Quellen verwalten kann, sind die Entwickler bestrebt, Smart plattformunabhängig einsetzbar zu machen.
 +
Smart löst eigenständig Abhängigkeiten auf. Updates und Upgrades werden auf Knopfdruck eingespielt.
 +
   
 +
===Smart installieren===
 +
Smart wird nicht standardmäßig bei der Suse-Installation installiert. Die entsprechenden Pakete werden zwar auf den Installationsmedien mitgeliefert, aber diese Versionen bringen Probleme mit sich, die bei der aktuellen Version nicht mehr vorhanden sind. Daher holen wir uns die aktuellen Pakete von [http://download.opensuse.org/repositories/smart/ hier], wobei man die für die [http://de.wikipedia.org/wiki/Linux-Distribution Distribution] und [[I386 i586 i686 was heisst/bedeutet das?|Architektur]] richtigen Pakete nehmen sollte. Anschließend wechseln wir auf der Konsole in das Verzeichnis, in das die Pakete gespeichert wurden, und führen
 +
  su -c "rpm -i *"
 +
aus. Bei der Passwortabfrage geben wir das root-Passwort ein und drücken die ENTER-Taste.
 +
 
 +
===Smart einrichten===
 +
Wenn Smart frisch installiert ist, stehen noch keine Installationsquellen (sogenannte Channels) zur Verfügung. Diese müssen erst noch eingerichtet werden. Im Internet kursieren etliche Channel-Listen als txt-Datei, die man herunterladen kann und an der Konsole mit root-Rechten (also su, Return, Root-Paßwort (Achtung, es wird blind eingegeben!), Return) mit dem Befehl
 +
smart channel --add /Speicherort/Datei
 +
in Smart einlesen kann. Smart fragt jetzt bei jedem in der Textdatei gefundenen Channel, ob er eingebunden werden soll. Wenn man eine vernünftige Channel-Liste hat, kann man getrost mit „J“ und Return bestätigen.
  
smart ist ein Paket Manager, der mit allen möglichen Distributionsformaten zusammenarbeiten soll (APT, APT-RPM, YUM, URPMI, etc), und bietet eine "bessere" Paket-Verwaltung an. Smart enthält auch eine GUI.
+
Channels für openSUSE findet man unter: [[Smart-Channels für openSUSE]]
  
'''Warum ist smart besser als apt/YUM/URPMI etc ?'''
+
und eine Bespiel-Konfiguration unter [[Smart_Musterkonfigurationen|smart-Musterkonfiguration]].
  
hier die Antwort aus der FAQ:
+
===Das Update===
 +
Wenn man nun eine geeignete Channel-Liste eingelesen hat, sollte man mit
 +
smart update
 +
die Smart-Paketinformationen aktualisieren. Damit werden die neuen Channels eingelesen und die Informationen aktualisiert. Diesen Vorgang sollte man vor jeder Aktion, die man mit smart durchführen will, vollziehen, da nur dann smart auch auf aktuelle Informationen zurückgreifen kann.
  
Smart supports several repository formats, including those used by APT, YUM and URPMI.
+
Das Upgrade des Systems startet man ganz einfach mit
   
+
  smart upgrade
Smart has an easily-extensible, clean architecture. It is written in Python with some C code in performance-critical areas.
+
So einfach hat man Smart eingerichtet und alle verfügbaren Aktualisierungen auf sein System gespielt. Wenn das Upgrade beendet ist, kann man in der Konsole mit dem Befehl
   
+
  exit
Smart has the smartest algorithm of all package managers. It can handle inconsistent states, downgrade packages when necessary and do
+
smart beenden. Der Exit-Befehl ist deshalb wichtig, weil durch das bloße Schließen der Konsole Smart weiter ausgeführt wird. Das kann zu Problemen führen, wenn man später Smart wieder auf der Konsole oder als GUI ausführen möchte.
better dependency-checking. See the README for some situations where Smart outperforms APT's and YUM's dependency-checking systems.
 
 
Smart is able to handle broken systems: if you have unsatisfied dependencies, Smart won't force you to fix the problem unless it is
 
absolutely necessary to perform the operation you are requesting. Of course, if you really want Smart to fix the problem, you could
 
run smart fix or choose "Fix all problems" in the GUI.  
 
  
Sehr interessant sind auch die case-studies von smart. Sie befinden sich leider nicht mehr auf der Homepage von smart. Aber in der mitgelieferten Dokumentation von smart in /usr/share/doc/packages/smart/README.html sind sie noch enthalten.  
+
===Die GUI===
 +
Die Grafische Benutzeroberfläche ist gerade für Anfänger wesentlich komfortabler. Möchte man mittels GUI eine Channel-Liste einlesen, wählt man
 +
K-Menü ->System ->Konfiguration ->smart  
 +
Auch hier muss wieder das root-Passwort eingegeben werden.  
 +
Im Smart-Hauptfenster wählt man dann
 +
Bearbeiten ->Channel ->Neu ->Lese Channel-Beschreibung vom Lokalem Pfad
 +
Hier wählt man dann die gespeicherte Textdatei.  
  
smart bietet nette Features
 
*es ist möglich lokale Verzeichnisse von RPMs einfach einzubinden !
 
  
*die DVD/CDs lassen sich sehr einfach in smart integrieren.  
+
Die dann aufpoppenden Fenster beinhalten nochmals die Channel-Informationen. Zum Bestätigen klickt man jeweils auf OK. Teilweise kann es passieren, dass sich dieses Fenster immer weiter vergrößert, so dass der „OK“-Button nicht mehr zu sehen ist. Die Tastenkombination „Alt“ und „O“ hat den selben Effekt.  
  
*das kernel-update Problem ist IMHO besser gelöst
 
  
"kernel" should be one of the packages marked with a "multi-version" tag. You can check this by running this:
+
Sind alle Channel eingelesen, klickt man im Channel-Fenster auf „Schließen“ und landet wieder in der Hauptmaske von Smart, wobei man alternativ auch die Tastenkombination „Alt“ und „C“ verwenden kann. Das Channel-Update erreicht man, indem man auf den Kreispfeil klickt, das Upgrade, indem man auf den nach oben zeigenden Pfeil klickt.  
 
$ smart flag --show multi-version
 
multi-version
 
    kernel
 
    kernel-doc
 
    kernel-smp
 
 
Or through Edit->Flags in the GUI, where you can also add your own multi-version packages. (or using smart flag --set multi-version
 
<package> in the command line)
 
 
   
 
   
When you install a new kernel, Smart may display a dialog saying the new package "upgrades" your old packages. But unless those
 
packages have as their icon they won't be removed. Installation of new multi-version packages does not imply the previous packages
 
will be removed, even if they satisfy the requirements for an "upgrade" operation.
 
  
*smart unterstüzt mirrors Code:
+
Möchte man ein neues Paket installieren, kann man einfach auf „Suche“ klicken, den Namen des zu installierenden Pakets eingeben und auf Return klicken. Wenn in einem der angegebenen Channel das Paket liegt, wird es gefunden. Angezeigt werden allerdings die Paketrubriken, nicht die Pakete selbst. Das heißt, man muss die einzelnen Rubriken durch einen Klick auf das kleine Dreieck vor der Rubrik öffnen und nachschauen.  
In the GUI, go to Edit->Mirrors, click "New" and set your Origin URL and Mirror URL. Most likely you will be using whatever it is
 
that you used as Base URLs for your repositories as Origin URLs. You may add as many Mirror URLs to an Origin URL as you wish, and
 
you shouldn't worry too much about slow mirrors and mirrors going out of date. Smart automatically handles bad/inefficient mirrors
 
and avoids them in the future.
 
 
 
*Pakete aus unterschiedlichen Quellen können gewichtet werden Code:
 
All channels are created equal. Smart will attempt to upgrade to the newest package. If you wish to override that, you may assign
 
priorities to channels and packages. To configure your channel priorities, go to Edit->Channels, pick a channel, click "Properties"
 
and set a value in "Priority". Or you can use the CLI equivalent:
 
 
 
# smart channel --set <mychannel> priority=10
 
 
Highest numbers imply higher priority.
 
 
If you want more granularity, you can define priorities for individual packages in individual channels. To do that, right-click the
 
package and select "Priority". This setting overrides channel priorities. Also, on the CLI you can:
 
 
   
 
   
# smart priority --set <packagename> <mychannel> 10
+
Wenn man beispielsweise den Email-Client „Evolution“ installieren möchte, sollte man dementsprechend die Rubrik „Productivity/Networking/Emails/Clients“ wählen.  
# smart priority --set <otherpackage> <otherchannel> -- -20
+
Hat man das Paket dann gefunden, wählt man es zur Installation aus, indem man auf das Icon vor dem Namen klickt. Danach werden noch zusätzlich zu installierende Pakete angezeigt. Dieses Fenster kann man mit „OK“ schließen. Um die Installation zu starten, klickt man auf das Zahnrad, und schon beginnt der Download der Pakete und deren Installation.
 
As you can see, it's possible to use negative priorities, given that they should be preceded by '--' (two dashes), otherwise they
 
will be interpreted as command line options. Negative priorities are no different than positive ones, they it's just a matter of
 
taste to use them or not.
 
 
If you are familiar with packaging, think of Priorities as user-defined "epochs".
 
 
While priorities are powerful, they are also dangerous. A channel with higher priority will always have precedence over other
 
channels, including your local package database. It is easy to get in a situation where your system has to downgrade packages because
 
a remote, out-of-date channel has higher priority than your installed packages. If all you want to do is be sure that your vendor's
 
packages are preferred over third-party packages, it may be easier and safer to lower the third-party channel to a priority below
 
zero (zero being the default) rather than increasing other priorities.
 
 
(In fact, priorities are more complicated than this, and in some situations Smart may choose a package in a channel with a lower
 
priority. Priorities influence the weight each possible transaction is given, so it does make a difference whether a priority is set
 
to -1, -5 or -100. The exact way this works is, for now, undocumented.)
 
 
 
*smart kann gezielt das installieren von einzelnen Paketen verhindern
 
 
 
Right-click them in the GUI and choose "Lock this version" or "Lock all versions", as you wish. Or use smart flag --set lock
 
<package>. Notice that you may lock even packages that are not currently installed. In this case, Smart will never install the locked
 
package.
 
 
 
'''Smart unterstützt die folgenden Formate: '''
 
 
 
*RPM repositories
 
 
 
RPM System Database (locally installed packages)
 
APT repositories for .rpm
 
RPM-MD (used by YUM)
 
Red Carpet (used by Ximian/Novell)
 
RPM Header List (used by RedHat and Conectiva installation CDs, probably others)
 
RPM Directory (a directory with a bunch of RPMs in it, no indexing required)
 
URPMI (used by Mandriva)
 
 
 
*DEB repositories
 
 
 
DEB System Database (locally installed packages)
 
APT repositories for .deb
 
DEB Directory (a directory with a bunch of DEBs in it, no indexing required)
 
 
 
*Slackware
 
 
 
Slackware installed packages database
 
Slackware repositories
 
 
 
*Mirrors
 
 
 
up2date (used by RedHat/Fedora)
 
Conectiva-style mirror description formats
 
 
 
'''Installation von smart '''
 
 
 
Die neuesten smart Pakete für SuSE kann man hier finden: http://linux01.gwdg.de/~pbleser/rpm-navigation.php?cat=/System/smart
 
 
 
Bei manueller Installation sollte man die aktuellen gtk2 and python-gtk von hier verwenden: ftp://ftp.suse.com/pub/suse/i386/supplementary/GNOME
 
 
 
Die 64bit Versionen werden von suser-drcux erstellt und sind hier zu finden: http://ftp.gwdg.de/pub/linux/misc/suser-drcux/100/x86_64/
 
 
 
Ab der Version 0.40-12 ist smart in ZWEI Pakete aufgeteilt (smart und smart-gui)
 
Wer apt nutzt kann smart einfach mit "apt install smart smart-gui" installieren (Repository suser-guru bzw suser-drcux sollte aktiviert sein)
 
 
 
Nach erfolgreicher Installation sollte sich im KDE-Menu, unter System->Konfiguration->Smart ein Menü-Eintrag befinden um die GUI zu starten.
 
Achtung: In smart-Paketen <=0.40-9 ist ein kleiner Bug im Desktop File, der aber einfach behoben werden kann: in der Datei /usr/share/applications/smart.desktop folgendes anpassen:
 
 
 
Exec=kdesu -c "/usr/bin/smart --gui"
 
 
 
dann sollte der Menüeintrag funktionieren. Oder folgende smart.desktop verwenden:
 
 
 
[Desktop Entry]
 
X-SuSE-translate=true
 
Categories=System;PackageManager;System;
 
Encoding=UTF-8
 
MultipleArgs=false
 
Terminal=false
 
Icon=smart
 
Exec=smart --gui
 
Type=Application
 
StartupNotify=true
 
Name=Smart Package Manager
 
GenericName=Package Manager
 
Comment=Install packages from various sources
 
X-KDE-SubstituteUID=true
 
X-KDE-Username=root
 
X-SuSE-translate=true
 
 
 
==>In den aktuellen Versionen ist dieser "Bug" behoben. Thx to suser-guru.
 
 
 
Es gibt auch eine kleine Extension ksmarttray - ein Systray-Applet, das über ausstehende Updates informiert. Dieses Paket gibt es ebenfalls auf der oben genannten Downloadlink oder besser
 
 
 
smart install smart-ksmarttray
 
 
 
Um smart etwas zu beschleunigen sollte unbedingt python-psyco installiert werden.
 
 
 
Smart uses the Psyco JIT for Python, that aims to make apps run faster. It should improve Smart speed in most systems, and internal
 
benchmarks proved that. But there's a documented problem: "Drawbacks: Psyco currently uses a lot of memory". There are some specific
 
cases where the problem that makes Smart slow resides on the memory consumption, not the optimizations. Disabling it, could make
 
smart run a little faster because it could avoid memory swapping. If want to try it, run smart -o psyco=0, and if you want to make it
 
permanent, do smart config --set psyco=0.
 
 
 
Um die gpg-Prüfung zu aktivieren ist der folgende Befehl zu verwenden:
 
 
 
smart config --set rpm-check-signature=true
 
 
 
Per default löscht smart heruntergeladene und installierte Pakete aus dem Cache /var/lib/smart/packages. Diese Option kann deaktiviert werden mit
 
  
 +
==Allgemeine Hinweise==
 +
===smart cache===
 +
Smart speichert die ausgeführten Aktionen in einem sogenannten Cache. Da dieser Cache einerseits für Smart wichtig ist, andererseits eine beachtliche Größe erreichen kann, gibt es einen Schalter, mit dem man einstellen kann, was mit dem Cache passiert. Wenn man auf der Konsole (mit root- Rechten, siehe oben!)
 
  smart config --set remove-packages=false
 
  smart config --set remove-packages=false
 +
eingibt (gefolgt von Return), dann wird der Cache nicht gelöscht. Möchte man allerdings den Cache doch löschen, dann gibt man in der Konsole
 +
smart config --set remove-packages=true
 +
ein.
 +
 +
===Signaturprüfung===
 +
Wie schon unter apt gibt es auch unter Smart eine Signaturprüfung für die Paketinstallation. Diese aktiviert man mit
 +
smart config --set rpm-check-signatures=true
 +
auf der Konsole. Ersetzt man "true" durch "false", ist die Signaturprüfung abgeschaltet. Das Abschalten der Prüfung wird aber ausdrücklich nicht empfohlen.
  
'''Kurze Befehlsübersicht:'''
+
Entsprechende Schlüssel kann sich smart auch direkt besorgen. Dazu trägt man mit
 +
smart config --set keyserver="subkeys.pgp.net"
 +
einen Schlüsselserver ein und smart holt sich dann automatisch die Schlüssel dort ab.
  
smart update entspricht apt-get update
+
===Pakete sperren===
 
+
Möchte man verhindern, dass bestimmte Pakete erneuert werden, geht das folgendermaßen:
smart install entspricht apt-get install <packetname>
+
smart flag --set lock ''Paketname''
 
+
Im GUI sucht man einfach nach dem Paket, macht einen Rechtsklick auf die installierte Version (die mit grünem Kästchen) und wählt "Sperre diese Version".
smart upgrade entspricht apt-get upgrade
+
 
+
Um die Sperrung aufzuheben, wählt man im GUI einfach "Ensperre diese Version"; auf der Konsole erledigen das die Befehle
smart --gui startet die GUI für smart, ähnlich zu bedienen wie synaptic
+
smart flag --remove lock ''Paketname''
 
 
smart remove deinstalliert Pakete
 
 
 
smart channel --help  weitere "Channels" zu smart hinzuzufügen, bitte die sehr ausführliche Hilfe lesen
 
 
 
smart channel --add /media/dvd  SuSE-DVD zu den channels hinzufügen
 
 
 
in /etc/smart/channels finden sich die Channel-Definitionen.
 
 
 
Eine einfache Variante um Channels hinzuzufügen:
 
 
 
a) kopiere eine vorhandene channel Datei
 
  
  cp suser-guru-gwdg.channel suser-oc2pus-gwd.channel
+
Möchte man eine bestimmte Version eines Paketes sperren, geht das folgendermaßen:
 +
  smart flag --set lock "paket=version"
 +
("paket=version" sind natürlich Platzhalter für Paketname und Versionsnummer und werden ohne Anführungszeichen eingegeben!)
  
b) editiere diese
+
===Kanäle priorisieren===
  [oc2pus-apt]
+
Wenn man Pakete aus einem bestimmten Kanal bevorzugt, wie es z.B. im Falle von Packman meist gewünscht ist, kann man diesen Kanälen einen Vorrang einräumen.
  name = suser-oc2pus 3rd party package repository for SUSE Linux on ftp.gwdg.de
+
  smart channel --set packman-i686-101-apt priority=2
baseurl = http://ftp4.gwdg.de/pub/linux/suse/apt/SuSE/9.3-i386
+
  smart channel --set packman-101-apt priority=1
type = apt-rpm
+
würde die i686-Pakete von Packman den nicht auf i686-optimierten Paketen gegenüber vorziehen. Die nicht optimierten Pakete von Packman würden aber noch den Suse-Paketen gegenüber vorgezogen. Die normale Priorität der Kanäle ist auf 0 eingestellt. Die Skala der Prioritäten reicht dabei von -100 bis 100. Diese Einstellungen können auch über die smart Oberfläche unter ''Bearbeiten - Channel - Eigenschaften des Channels'' vorgenommen werden.
components = suser-oc2pus
 
  
c) einfügen des Channels in die Konfiguration
+
====Bei bestimmten Paketen Channel auf andere Prioritäten setzen====
 +
Möchte man für bestimmte Pakete irgendwelche Channel auf andere Prioritäten setzen, um die Updates für diese Paktete aus diesen Channels auszuschließen, geht das folgendermaßen:
 +
smart priority --set ''pkgname mychannel'' 100
  
smart channel --add /etc/smart/channels/suser-oc2pus-gwd.channel
+
''pkgname'' steht natürlich für den Namen des Paketes und ''mychannel'' für den des Channels.
  
d) smart update
+
===Kernel-Updates===
 +
Bei Kernel-Updates mit Smart gibt es einiges zu beachten. Einerseits kann die Situation eintreten, dass der alte Kernel nicht entfernt wird und man dadurch mehrere Kernel-Versionen auf dem System hat. Das ist generell unproblematisch, da es einem erlaubt, den neuen Kernel zu testen ohne bereits den alten weggeworfen zu haben. Natürlich wird dadurch etwas mehr Plattenplatz belegt. (Dieses Problem sollte durch die Installation der aktuellen Version eliminiert sein. Ansonsten muss man die alte Version eben noch explizit entfernen.)<br />
 +
Eine andere Sache ist, dass einige Channels wie z.B. ''suser-jengelh'' und ''jacklab'' Kernel-Pakete anbieten, die von unerfahrenen Anfängern nicht installiert werden sollten. Daher sind sie in den [[Smart_Musterkonfigurationen|Musterkonfigurationen hier im Wiki]] zwar enthalten, aber nicht aktiviert.
  
Wer apt schon im Einsatz hatte, kann sich das Leben weiter vereinfachen. Es gibt hier im Forum ein Script, welches aus einer apt sources.list die entsprechenden smart-Channel-Dateien erstellt. Das Script und eine kurze Dokumentation findet ihr hier: http://www.linux-club.de/viewtopic.php?t=45241
+
Als erstes müssen wir natürlich wissen, welche Kernel-Pakete installiert sind. Daher führen wir
 +
rpm -qa "kernel-*"
 +
auf der Konsole aus. Die Ausgabe sagt uns, welche Kernel-Pakete installiert sind. Normalerweise sollte das ''kernel-default'' und eventuell ''kernel-source'' (bei welchem wir das ganze nicht machen müsssen) sein.<br />
 +
Danach weisen wir dem Update-Channel (dort liegen Sicherheits-Updates von opensuse) und dem Base-Channel (Inhalt der Installationsmedien) für die installierten Kernel-Pakete die höchste Priorität zu. Wenn man '''opensuse 10.1''' hat und diese [[Channels_OpenSUSE10_1_32|Channel-Liste]] verwendet geht das folgendermaßen:
  
Smart FAQ: http://labix.org/smart/faq
+
smart priority --set kernel-default suse-101-apt-base 100
 +
smart priority --set kernel-default suse-101-apt-update 100
  
Smart WIKI: http://de.susewiki.org/index.php?title=Smart
+
Falls eine der Bedingungen nicht zutrifft muß man eventuell anpassen. Weitere Information dazu stehen auch im Abschnitt [[Smart#Bei bestimmten Pakten Channel auf andere Prioritäten setzen|"Bei bestimmten Pakten Channel auf andere Prioritäten setzen"]].
  
Diese Infos wurden zusammengestellt von der smartpm Homepage:
+
===Channel-Vorschläge von Smart===
 +
Es kann vorkommen, dass Smart vorschlägt, bestimmmte Channels hinzuzufügen. Es wird geraten, solche Vorschläge aus folgenden Gründen abzulehnen: Einerseits kann es sein, dass der Channel schon in der Liste ist. Dadurch wäre der Channel dann doppelt vorhanden, was nur den Updatevorgang verlangsamt. Andererseits besteht die Möglichkeit, dass Channels vorgeschlagen werden, die man außen vor lassen sollte. Es ist besser, wenn man weiß, was für Channel man sich da an Land zieht.
  
http://labix.org/smart
+
==smart Fehlermeldungen==
 
+
smart gibt gelegentlich bei Upgrades Fehler nach folgendem Muster aus:
da es leider noch keine man-page für smart gibt, habe ich ein kleines script geschrieben um mir die Kommandosyntax von smart ausgeben zu lassen.  
+
Übermittle Transaktion ...
 
+
Bereite vor ...                ######################################## [  0%]
  #!/bin/bash
+
  FEHLER!: file /usr/lib/libmad.so.0.2.1 from install of mad-0.15.1b-1.pm.5 conflicts with file from package libmad-0.15.1b-2.4
if [ -e smart-cmd.txt ]; then
+
Der Grund dafür ist meistens, dass ein Paket in unterschiedlichen Channel vorliegt und smart dann tatsächlich Konflikte sieht, weil das installierte Paket aus einem anderen Channel kommt. Hier ist es meistens am einfachsten, das installierte Paket zu deinstallieren,
    rm -f smart-cmd.txt
+
  smart update  
fi
+
und
+
  smart upgrade
smart --help >> smart-cmd.txt
+
auszuführen und das "Problempaket" wieder zu installieren.  
echo "----------------" >> smart-cmd.txt
 
  echo "----------------" >> smart-cmd.txt
 
 
for i in update install reinstall upgrade remove check fix download \
 
    search query info stats \
 
    channel priority mirror flag; do
 
    smart $i --help >> smart-cmd.txt
 
    echo "----------------" >> smart-cmd.txt
 
    echo "----------------" >> smart-cmd.txt
 
done
 
  
diesen Code-Schnipsel speichern als mySmart-cmd.sh und mit chmod +x mySmart-cmd.sh ausführbar machen.  
+
Der ursprüngliche Autor dieses HowTos ist omasenkel. Inzwischen wurde das HowTo aber stark überarbeitet.
  
In der Datei smart-cmd.txt steht dann die Hilfe zu allen Befehlen.
+
== siehe auch ==
 +
* [[Smart/Fehlermeldungen]]
  
Mit einem geeigneten Programm (z.Bsp. txt2man: http://mvertes.free.fr/) kann man sich dann aus dieser Text-Datei eine eigene man-page erstellen.
+
== Quellen ==
 +
* [http://labix.org/smart labix.org/smart] (englisch) - Projektseite
 +
* [http://www.pro-linux.de/news/2005/7668.html Pro-Linux-Bericht über Smart-Package-Manager]
 +
* [http://de.susewiki.org/index.php?title=Smart Umfangreiches WIKI über Smart-Package-Manager]
 +
* [http://de.wikipedia.org/wiki/Smart_Package_Manager smart-Beschreibung in der Wikipedia]
 +
* [http://liquidat.wordpress.com/2005/10/19/set-up-smartpm-on-suse-linux-100-3/ blog Eintrag zum Aufsetzen von Smart unter SUSE LINUX 10.0 (englisch)]
  
 +
----
 +
[[Paketmanager|Zurück zum Paketmanager]]
  
oc2pus
+
[[Smart Musterkonfigurationen | Zu den Smart Musterkonfigurationen und Channellisten]]
  
[[Category:APT und smart]]
+
[[Category:Smart]]
 +
[[Category:Paketmanager]]

Aktuelle Version vom 7. Januar 2008, 14:36 Uhr

Smartpm.png
Smart.jpg
Smart 0.5
Basisdaten
Entwickler: Gustavo Niemeyer
Aktuelle Version: 0.5
letzte Veröffentlichung: ?
Betriebssystem: Linux, OS X
Kategorie: Paketmanager
Lizenz: GNU General Public License
Deutschsprachig: ja
Webseite: smart-Projektseite

Was ist Smart?

Der Smart-Package-Manager ist eine Software, mit der man unter Linux die Softwarepakete verwaltet. Da es rpm, deb, yum, apt, urpmi, slackware und noch weitere Quellen verwalten kann, sind die Entwickler bestrebt, Smart plattformunabhängig einsetzbar zu machen. Smart löst eigenständig Abhängigkeiten auf. Updates und Upgrades werden auf Knopfdruck eingespielt.

Smart installieren

Smart wird nicht standardmäßig bei der Suse-Installation installiert. Die entsprechenden Pakete werden zwar auf den Installationsmedien mitgeliefert, aber diese Versionen bringen Probleme mit sich, die bei der aktuellen Version nicht mehr vorhanden sind. Daher holen wir uns die aktuellen Pakete von hier, wobei man die für die Distribution und Architektur richtigen Pakete nehmen sollte. Anschließend wechseln wir auf der Konsole in das Verzeichnis, in das die Pakete gespeichert wurden, und führen

su -c "rpm -i *"

aus. Bei der Passwortabfrage geben wir das root-Passwort ein und drücken die ENTER-Taste.

Smart einrichten

Wenn Smart frisch installiert ist, stehen noch keine Installationsquellen (sogenannte Channels) zur Verfügung. Diese müssen erst noch eingerichtet werden. Im Internet kursieren etliche Channel-Listen als txt-Datei, die man herunterladen kann und an der Konsole mit root-Rechten (also su, Return, Root-Paßwort (Achtung, es wird blind eingegeben!), Return) mit dem Befehl

smart channel --add /Speicherort/Datei

in Smart einlesen kann. Smart fragt jetzt bei jedem in der Textdatei gefundenen Channel, ob er eingebunden werden soll. Wenn man eine vernünftige Channel-Liste hat, kann man getrost mit „J“ und Return bestätigen.

Channels für openSUSE findet man unter: Smart-Channels für openSUSE

und eine Bespiel-Konfiguration unter smart-Musterkonfiguration.

Das Update

Wenn man nun eine geeignete Channel-Liste eingelesen hat, sollte man mit

smart update

die Smart-Paketinformationen aktualisieren. Damit werden die neuen Channels eingelesen und die Informationen aktualisiert. Diesen Vorgang sollte man vor jeder Aktion, die man mit smart durchführen will, vollziehen, da nur dann smart auch auf aktuelle Informationen zurückgreifen kann.

Das Upgrade des Systems startet man ganz einfach mit

smart upgrade

So einfach hat man Smart eingerichtet und alle verfügbaren Aktualisierungen auf sein System gespielt. Wenn das Upgrade beendet ist, kann man in der Konsole mit dem Befehl

exit

smart beenden. Der Exit-Befehl ist deshalb wichtig, weil durch das bloße Schließen der Konsole Smart weiter ausgeführt wird. Das kann zu Problemen führen, wenn man später Smart wieder auf der Konsole oder als GUI ausführen möchte.

Die GUI

Die Grafische Benutzeroberfläche ist gerade für Anfänger wesentlich komfortabler. Möchte man mittels GUI eine Channel-Liste einlesen, wählt man K-Menü ->System ->Konfiguration ->smart Auch hier muss wieder das root-Passwort eingegeben werden. Im Smart-Hauptfenster wählt man dann

Bearbeiten ->Channel ->Neu ->Lese Channel-Beschreibung vom Lokalem Pfad 

Hier wählt man dann die gespeicherte Textdatei.


Die dann aufpoppenden Fenster beinhalten nochmals die Channel-Informationen. Zum Bestätigen klickt man jeweils auf OK. Teilweise kann es passieren, dass sich dieses Fenster immer weiter vergrößert, so dass der „OK“-Button nicht mehr zu sehen ist. Die Tastenkombination „Alt“ und „O“ hat den selben Effekt.


Sind alle Channel eingelesen, klickt man im Channel-Fenster auf „Schließen“ und landet wieder in der Hauptmaske von Smart, wobei man alternativ auch die Tastenkombination „Alt“ und „C“ verwenden kann. Das Channel-Update erreicht man, indem man auf den Kreispfeil klickt, das Upgrade, indem man auf den nach oben zeigenden Pfeil klickt.


Möchte man ein neues Paket installieren, kann man einfach auf „Suche“ klicken, den Namen des zu installierenden Pakets eingeben und auf Return klicken. Wenn in einem der angegebenen Channel das Paket liegt, wird es gefunden. Angezeigt werden allerdings die Paketrubriken, nicht die Pakete selbst. Das heißt, man muss die einzelnen Rubriken durch einen Klick auf das kleine Dreieck vor der Rubrik öffnen und nachschauen.

Wenn man beispielsweise den Email-Client „Evolution“ installieren möchte, sollte man dementsprechend die Rubrik „Productivity/Networking/Emails/Clients“ wählen. Hat man das Paket dann gefunden, wählt man es zur Installation aus, indem man auf das Icon vor dem Namen klickt. Danach werden noch zusätzlich zu installierende Pakete angezeigt. Dieses Fenster kann man mit „OK“ schließen. Um die Installation zu starten, klickt man auf das Zahnrad, und schon beginnt der Download der Pakete und deren Installation.

Allgemeine Hinweise

smart cache

Smart speichert die ausgeführten Aktionen in einem sogenannten Cache. Da dieser Cache einerseits für Smart wichtig ist, andererseits eine beachtliche Größe erreichen kann, gibt es einen Schalter, mit dem man einstellen kann, was mit dem Cache passiert. Wenn man auf der Konsole (mit root- Rechten, siehe oben!)

smart config --set remove-packages=false

eingibt (gefolgt von Return), dann wird der Cache nicht gelöscht. Möchte man allerdings den Cache doch löschen, dann gibt man in der Konsole

smart config --set remove-packages=true

ein.

Signaturprüfung

Wie schon unter apt gibt es auch unter Smart eine Signaturprüfung für die Paketinstallation. Diese aktiviert man mit

smart config --set rpm-check-signatures=true

auf der Konsole. Ersetzt man "true" durch "false", ist die Signaturprüfung abgeschaltet. Das Abschalten der Prüfung wird aber ausdrücklich nicht empfohlen.

Entsprechende Schlüssel kann sich smart auch direkt besorgen. Dazu trägt man mit

smart config --set keyserver="subkeys.pgp.net"

einen Schlüsselserver ein und smart holt sich dann automatisch die Schlüssel dort ab.

Pakete sperren

Möchte man verhindern, dass bestimmte Pakete erneuert werden, geht das folgendermaßen:

smart flag --set lock Paketname

Im GUI sucht man einfach nach dem Paket, macht einen Rechtsklick auf die installierte Version (die mit grünem Kästchen) und wählt "Sperre diese Version".

Um die Sperrung aufzuheben, wählt man im GUI einfach "Ensperre diese Version"; auf der Konsole erledigen das die Befehle

smart flag --remove lock Paketname

Möchte man eine bestimmte Version eines Paketes sperren, geht das folgendermaßen:

smart flag --set lock "paket=version"

("paket=version" sind natürlich Platzhalter für Paketname und Versionsnummer und werden ohne Anführungszeichen eingegeben!)

Kanäle priorisieren

Wenn man Pakete aus einem bestimmten Kanal bevorzugt, wie es z.B. im Falle von Packman meist gewünscht ist, kann man diesen Kanälen einen Vorrang einräumen.

smart channel --set packman-i686-101-apt priority=2
smart channel --set packman-101-apt priority=1 

würde die i686-Pakete von Packman den nicht auf i686-optimierten Paketen gegenüber vorziehen. Die nicht optimierten Pakete von Packman würden aber noch den Suse-Paketen gegenüber vorgezogen. Die normale Priorität der Kanäle ist auf 0 eingestellt. Die Skala der Prioritäten reicht dabei von -100 bis 100. Diese Einstellungen können auch über die smart Oberfläche unter Bearbeiten - Channel - Eigenschaften des Channels vorgenommen werden.

Bei bestimmten Paketen Channel auf andere Prioritäten setzen

Möchte man für bestimmte Pakete irgendwelche Channel auf andere Prioritäten setzen, um die Updates für diese Paktete aus diesen Channels auszuschließen, geht das folgendermaßen:

smart priority --set pkgname mychannel 100

pkgname steht natürlich für den Namen des Paketes und mychannel für den des Channels.

Kernel-Updates

Bei Kernel-Updates mit Smart gibt es einiges zu beachten. Einerseits kann die Situation eintreten, dass der alte Kernel nicht entfernt wird und man dadurch mehrere Kernel-Versionen auf dem System hat. Das ist generell unproblematisch, da es einem erlaubt, den neuen Kernel zu testen ohne bereits den alten weggeworfen zu haben. Natürlich wird dadurch etwas mehr Plattenplatz belegt. (Dieses Problem sollte durch die Installation der aktuellen Version eliminiert sein. Ansonsten muss man die alte Version eben noch explizit entfernen.)
Eine andere Sache ist, dass einige Channels wie z.B. suser-jengelh und jacklab Kernel-Pakete anbieten, die von unerfahrenen Anfängern nicht installiert werden sollten. Daher sind sie in den Musterkonfigurationen hier im Wiki zwar enthalten, aber nicht aktiviert.

Als erstes müssen wir natürlich wissen, welche Kernel-Pakete installiert sind. Daher führen wir

rpm -qa "kernel-*"

auf der Konsole aus. Die Ausgabe sagt uns, welche Kernel-Pakete installiert sind. Normalerweise sollte das kernel-default und eventuell kernel-source (bei welchem wir das ganze nicht machen müsssen) sein.
Danach weisen wir dem Update-Channel (dort liegen Sicherheits-Updates von opensuse) und dem Base-Channel (Inhalt der Installationsmedien) für die installierten Kernel-Pakete die höchste Priorität zu. Wenn man opensuse 10.1 hat und diese Channel-Liste verwendet geht das folgendermaßen:

smart priority --set kernel-default suse-101-apt-base 100
smart priority --set kernel-default suse-101-apt-update 100

Falls eine der Bedingungen nicht zutrifft muß man eventuell anpassen. Weitere Information dazu stehen auch im Abschnitt "Bei bestimmten Pakten Channel auf andere Prioritäten setzen".

Channel-Vorschläge von Smart

Es kann vorkommen, dass Smart vorschlägt, bestimmmte Channels hinzuzufügen. Es wird geraten, solche Vorschläge aus folgenden Gründen abzulehnen: Einerseits kann es sein, dass der Channel schon in der Liste ist. Dadurch wäre der Channel dann doppelt vorhanden, was nur den Updatevorgang verlangsamt. Andererseits besteht die Möglichkeit, dass Channels vorgeschlagen werden, die man außen vor lassen sollte. Es ist besser, wenn man weiß, was für Channel man sich da an Land zieht.

smart Fehlermeldungen

smart gibt gelegentlich bei Upgrades Fehler nach folgendem Muster aus:

Übermittle Transaktion ...
Bereite vor ...                 ######################################## [  0%]
FEHLER!: file /usr/lib/libmad.so.0.2.1 from install of mad-0.15.1b-1.pm.5 conflicts with file from package libmad-0.15.1b-2.4

Der Grund dafür ist meistens, dass ein Paket in unterschiedlichen Channel vorliegt und smart dann tatsächlich Konflikte sieht, weil das installierte Paket aus einem anderen Channel kommt. Hier ist es meistens am einfachsten, das installierte Paket zu deinstallieren,

smart update 

und

smart upgrade 

auszuführen und das "Problempaket" wieder zu installieren.

Der ursprüngliche Autor dieses HowTos ist omasenkel. Inzwischen wurde das HowTo aber stark überarbeitet.

siehe auch

Quellen


Zurück zum Paketmanager

Zu den Smart Musterkonfigurationen und Channellisten