MRW

OpenSuse mit Smart

Smart ist ein Programm zur Verwaltung von Software-Paketen und Repositories. Es funktioniert mit RPM, aber auch mit Debian Paketen. Im Prinzip ersetzt Smart die Paketinstallation mit YaST. Dabei können die verschiedenen Mechanismen wie Smart, YaST, APT und Kommandozeilen-RPM nebeneinander verwendet werden, da alle mit der original RPM-Datenbank arbeiten.

Meiner Meinung nach ist Smart das beste Programm, um die Software-Installationen zu verwalten.

Kurzanleitung für Smart/Linux-Anfänger

Vorbereitung

Als root1) in der Shell:

smart channel --remove-all
smart channel -y --add http://divine160281.di.funpic.de/channel/suse102x86.txt
smart update

Nun sollte man in regelmässigen Abständen (z.B. wöchentlich) die lokale Paketliste zu aktualisieren. Das geht mit neu-laden-Knopf der grafischen Oberfläche (s.u.), oder per Kommandozeile mittels:

smart update

Für 64bit-Prozessoren lauten die Kommandos:

smart channel --remove-all
smart channel -y --add http://divine160281.di.funpic.de/channel/suse102x86_64.txt
smart update

Grafische Benutzeroberfläche

Für die grafische Benutzeroberfläche muss das Paket smart-gui installiert sein. Dies geht mittels YaST, oder wenn smart bereits installiert ist, mittels smart install smart-gui.

Im KDE-Menu unter Anwendungen-System-Konfiguration-Paketmanager (Smart) starten, root-Passwort eingeben, schon arbeitet man mit dem grafischen Smart. Man kann auch aus der Kommandozeile starten (als Benutzer root):

smart --gui

Kommandozeile

Installation eines Pakets (als ''root'')
smart install paketname
Suche nach einem Paket
smart search suchtext
System erneuern (Update aller installierten Pakete)
smart upgrade
Alle bestehenden Einträge in den Kanälen löschen
smart channel –remove-all

Kurztipps

Einstieg

Eine gute Einstiegsseite in Smart:

Fehlermeldung: «Alias 'X' wird bereits verwendet»

Falls ein Repository doppelt vorhanden ist, muss man entweder alle Einträge erst löschen, bevor man die neuen installiert, oder es kommt halt aus zwei Kanälen derselbe Name. Dann vergibt man einfach einen anderen. Beispiel:

Channel Alias 'mozilla' wird bereits verwendet.
Channel Alias: mozilla2

SuSE 10.2

Gut gewartete Kanalliste

Kanalliste für OpenSuSE 10.2 32bit:

Profis: Erweitere Kanäle aus dem SuSE

Das folgende erzeugt ein potentiell instabiles System, bringt aber viele zusätzliche Pakete:

Alle Projekte aus dem SuSE-Build-Service laden: - Dieses Skript habe ich bei mir unter smart-add-susebuild.sh gespeichert. - Es muss mit chmod ugo+x smart-add-susebuild.sh ausführbar gemacht werden. - Es muss unter root gestartet werden: sudo ./smart-add-susebuild.sh

#!/bin/bash
 
function ftp-list() {
    wget --quiet -O - "http://software.opensuse.org/download/$1" \
        | sed -n \
        -e 's#^.*<a href="\([^/"]*\)/".*$#\1#pg' \
        -e 's#^.*<a href="\./\([^/"]*\)/".*$#\1#pg'
}
function get-repo() {
    wget --quiet -O - "http://software.opensuse.org/download/$1" \
        | sed -n \
        -e 's#^.*<a href="\([^/"]*.repo\)".*$#\1#pg' \
        -e 's#^.*<a href="\./\([^/"]*.repo\)".*$#\1#pg'
}
 
function ftp-subdirs() {
    for file in $(ftp-list $1); do
        if [[ $file =~ ':$' ]]; then
            ftp-subdirs $1/$file
        else
            if ftp-list $1/$file | grep openSUSE_10.2 > /dev/null; then
                reponame="$(get-repo $1/$file/openSUSE_10.2)"
                if [ -n "$reponame" ]; then
                    echo "#### Installiere: $1/$file/openSUSE_10.2/$reponame"
                    # remove non-ascii characters from repositories
                    # otherwise smart fails
                    wget --quiet -O - \
                         "http://software.opensuse.org/download/$1/$file/openSUSE_10.2/$reponame" \
                         | perl -pe 's/[^[:ascii:]]+//'g \
                         > "/var/tmp/susebuild-repositories/$reponame"
                    if ! smart channel -y --add \
                               "/var/tmp/susebuild-repositories/$reponame"; then
                        echo "**** Installation von $reponame ist fehlgeschlagen"
                    fi
                else
                    echo "*    Kein Reponame in $1/$file/openSUSE_10.2"
                fi
            else
                echo "*    Kein SuSE 10.2 Repo für $1/$file"
            fi
        fi
    done
}
 
rm -rf /var/tmp/susebuild-repositories
mkdir /var/tmp/susebuild-repositories
ftp-subdirs .

NVidia 3D Grafiktreiber

Kommerzielle NVidia-Treiber installieren (z.B. für 3D-Spiele oder Compiz/Beryl):

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.konvenientsuse.backup
smart channel -y --add nvidia2 type=rpm-md name='nvidia2' baseurl=http://download.nvidia.com/opensuse/10.2
smart update nvidia2
if echo `uname -r` | grep 'default'; then \
  smart install -y x11-video-nvidia nvidia-gfx-kmp-default; \
else \
  smart install -y x11-video-nvidia nvidia-gfx-kmp-bigsmp; \
fi
sax2 -r

Dieser Treiber hat allerdings mein X11 zerstört. Daher kann ich ihn nicht empfehlen.

ATI 3D Grafiktreiber

Kommerzielle ATI-Treiber installieren (z.B. für 3D-Spiele oder Compiz/Beryl):

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.konvenientsuse.backup
smart channel -y --add ati type=rpm-md name='ati' baseurl=http://www2.ati.com/suse/10.2
smart update ati
smart install x11-video-fglrxG01 ati-fglrxG01-kmp-`uname -r | awk -F"-" '{print $NF}'`
sax2 -r

Problem mit Schlüssel

Problem bei mir:

Committing transaction...
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID a4466aa9
Trying to import the key 6fe0042ca4466aa9 from pgp.mit.edu...
gpg: requesting key A4466AA9 from hkp server pgp.mit.edu
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
error: gpg failed to import keyid 6fe0042ca4466aa9, please make sure that gpg is installed, that the keyserver pgp.mit.edu is working and that the package /var/lib/smart/packages/ati-fglrxG01-kmp-default-8.36.5_2.6.18.8_0.3-2.1.x86_64.rpm has a valid signature.
error: ati-fglrxG01-kmp-default-8.36.5_2.6.18.8_0.3-2.1.x86_64.rpm: public key not available
Saving cache...

Lösung: Die zwei RPM-Pakete in /var/lib/smart/packages/ von Hand installieren.

rpm -Uvh /var/lib/smart/packages/*fglrxG01*.rpm

SuSE 10.1

Ich hielt mein SuSE 10.1 mit folgendem Skript aktuell: smart-mrw.sh

Info: smart-mrw.sh -h

Zuerst installiert man smart mit dem YaST. Danach kann man es mit meinem Skript konfigurieren, z.B. für SuSE 10.1:

smart-mrw.sh -i extra -i 10.1 -s 10.1
smart update
smart-mrw.sh -k

Danach kann man mit smart search Stichwort etwas suchen, und mit smart install Paketname Pakete installieren.

Ganze Betriebssystemaktualisierungen mit smart upgrade sind etwas gefährlich und für Anfänger nicht empfehlenswert.

Undokumentierter Parameter: -64 oder –64 schaltet um auf ein 64bit Linux. Die Option muss ganz am Anfang stehen.

1) Benutzer root wird man mit dem Kommando sux -