Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
admin_grundlagen:paketverwaltung [2012/01/17 14:20] stefan_hofmann [apt und yum] |
admin_grundlagen:paketverwaltung [2024/01/19 09:52] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Paketverwaltung ====== | ||
- | Bei der Paketverwaltung kann man zwei Sorten von Programmen unterscheiden: die Tools zur lokalen Paketverwaltung und die Repository-Tools. | ||
- | ===== lokale Paketverwaltung ===== | ||
- | ==== dpkg und rpm ==== | ||
- | |Funktion |Debian und Ubuntu|RedHat, Fedora und SuSE (( OK, rpm ist auch für debian verfügbar, aber sollte da nur in besonderen Fällen eingesetzt werden )) | | ||
- | |Anzeigen welche Pakete installiert sind: | | ||
- | dpkg -l | ||
- | COLUMNS=150 dpkg -l | ||
- | | | ||
- | rpm -qa | ||
- | | | ||
- | |Anzeigen zu welchem Paket eine Datei gehoert: | | ||
- | dpkg -S /usr/share/yelp/toc.xml | ||
- | | | ||
- | rpm -qf /verzeichnis/datei | ||
- | | | ||
- | |Beschreibung zu einem Paket anzeigen: | | ||
- | dpkg -s yelp | ||
- | | | ||
- | rpm -qi paket | ||
- | | | ||
- | |Anzeigen welche Dateien zu einem Paket gehoeren: | | ||
- | dpkg -L yelp | ||
- | | | ||
- | rpm -ql paket | ||
- | | | ||
- | |Paket installieren (( das macht man normalerweise mit 'apt-get', 'yum' oder 'yast' )): | | ||
- | dpkg -i xskat_4.0-1_i386.deb | ||
- | | | ||
- | rpm -i datei.rpm | ||
- | | | ||
- | |Paket loeschen: (( auch das geht mit 'apt-get' )) | | ||
- | dpkg --remove paket | ||
- | dpkg --purge paket | ||
- | | | ||
- | rpm -e <paket> | ||
- | | | ||
- | |Pakete nach Groesse sortiert ausgeben: | | ||
- | dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -n | ||
- | | | ||
- | rpm -qa --queryformat '%{SIZE} %{NAME}\n' | sort -n | ||
- | | | ||
- | |Geaenderte Dateien suchen | | ||
- | debsums -e <paket> | ||
- | | | ||
- | rpm -V <paket> | ||
- | | | ||
- | | Geänderte Konfigurationsdateien suchen | | ||
- | debsums -ec | ||
- | | | ||
- | rpm -qac --dump | perl -naF'\s+' -e 'print $F[0], $/ if -f $F[0] and not -l $F[0] and (split /\s+/, `md5sum $F[0]`)[0] ne $F[3]' | ||
- | | | ||
- | | Zuletzt installierte Pakete anzeigen: | | ||
- | grep 'status installed' /var/log/dpkg.log | less | ||
- | | | ||
- | rpm -qa --last | tac | ||
- | | | ||
- | | Datenverzeichnis für Dienst finden: | | ||
- | dpkg -S var/ | grep apache | ||
- | | | ||
- | | | ||
- | |||
- | ===== Repository basierte Paketverwaltung ===== | ||
- | |||
- | |||
- | ==== apt und yum ==== | ||
- | |Funktion|Debian, SuSE((Seit SuSE 10.0 zusätzlich installierbar )), Fedora | Fedora, RedHat, SuSE((Seit SuSE 10.0 zusätzlich installierbar )) | | ||
- | | Repositories einbinden | | ||
- | apt-setup | ||
- | ''/etc/apt/sources.list'' | ''/etc/yum.repos.d/*.repo''\\ ''/etc/zypp/repos.d/*.repo'' | | ||
- | |Repository-Daten aktualisieren| | ||
- | aptitude update | ||
- | | | ||
- | yum check-update | ||
- | | | ||
- | |Updates einspielen | | ||
- | aptitude safe-upgrade | ||
- | | | ||
- | yum update | ||
- | | | ||
- | |Nach Paketen suchen| | ||
- | aptitude search suchwort | ||
- | apt-cache search suchwort | ||
- | | | ||
- | yum search suchwort | ||
- | yum list | grep paketname | ||
- | | | ||
- | |Beschreibung zu einem Paket anzeigen:| | ||
- | aptitude show paketname | ||
- | | | ||
- | yum info paketname | ||
- | | | ||
- | |Paket installieren| | ||
- | aptitude install paketname | ||
- | | | ||
- | yum install paketname | ||
- | | | ||
- | |Paket entfernen| | ||
- | aptitude remove paketname | ||
- | aptitude purge paketname | ||
- | | | ||
- | yum remove paketname | ||
- | | | ||
- | |Datei aus noch nicht installiertem Paket suchen| | ||
- | apt-file update; apt-file search | ||
- | | | ||
- | | | ||
- | |||
- | ==== Dokumentation der Distributoren ==== | ||
- | [[ http://docs.fedoraproject.org/yum/en/ | Fedora ]] | ||
- | [[ http://www.debian.org/doc/manuals/apt-howto/index.de.html | Debian ]] | ||
- | [[ http://de.opensuse.org/Paketverwaltung | openSuSE ]] | ||
- | |||
- | ==== yast, y2pmsh, rug und zypper ==== | ||
- | YaST, y2pmsh, rug und zypper sind nur für SuSE verfügbar. | ||
- | |||
- | |Funktion| y2pmsh ( SuSE 9.2 bis 10.1 / SLES 9 & 10 ) (( nicht offiziell unterstützt - aber brauchbar )) | rug ( SuSE 10.1 bis 10.2 / SLES 10 ) | zypper ( ab SuSE 10.2) | | ||
- | | Repositories einbinden | | ||
- | y2pmsh source --add http://suse/i386/update/10.1 | ||
- | oder | ||
- | y2pmsh source -a http://suse/i386/update/10.1 | ||
- | | | ||
- | rug service-add -t zypp http://suse/i386/update/10.1 | ||
- | oder | ||
- | rug sa -t zypp http://suse/i386/update/10.1 | ||
- | | | ||
- | zypper service-add http://suse/i386/update/10.3 | ||
- | oder | ||
- | zypper service-add http://suse/i386/update/10.3 | ||
- | | | ||
- | |Repository-Daten aktualisieren| | ||
- | | ||
- | | | ||
- | rug refresh | ||
- | | | ||
- | zypper refresh | ||
- | | | ||
- | |Updates einspielen | | ||
- | y2pmsh upgrade | ||
- | y2pmsh commit | ||
- | | | ||
- | rug update | ||
- | | | ||
- | zypper update | ||
- | | | ||
- | |Nach Paketen suchen| | ||
- | y2pmsh search suchwort | ||
- | | | ||
- | rug search suchwort | ||
- | | | ||
- | zypper search suchwort | ||
- | | | ||
- | |Paketbeschreibung anzeigen:| | ||
- | y2pmsh show paketname | ||
- | | | ||
- | rug info paketname | ||
- | | | ||
- | zypper info paketname | ||
- | | | ||
- | |Paket installieren| | ||
- | y2pmsh isc paketname | ||
- | oder | ||
- | y2pmsh install paketname | ||
- | y2pmsh solve | ||
- | y2pmsh commit | ||
- | | | ||
- | rug install paketname | ||
- | | | ||
- | zypper install paketname | ||
- | | | ||
- | |Paket entfernen| | ||
- | y2pmsh remove paketname | ||
- | y2pmsh solve | ||
- | y2pmsh commit | ||
- | | | ||
- | rug remove paketname | ||
- | | | ||
- | zypper remove paketname | ||
- | | | ||
- | |Datei aus noch nicht installiertem Paket suchen (ungetestet)((alternativ , http://packages.opensuse-community.org/))| | ||
- | webpin | ||
- | | | ||
- | | | ||
- | |||
- | Die Paketverwaltung von YaST baut bis SuSE 10.0 / SLES 9 auf dem Programm ''y2pmsh'' auf, daß man hier auch an Stelle von yast benutzen kann. ''y2pmsh'' hat auch einen interaktiven Modus: einfach starten, und die oben angegebenen Befehle funktionieren incl. Tab-Completion | ||
- | |||
- | y2pmsh/YaST/rug/zypper bietet die Möglichkeit verschiedene Repositories einzubinden. Eine Liste verfügbarer Repositories findet sich hier: http://www.opensuse.org/Additional_YaST_Package_Repositories | ||
- | |||
- | Hier ist beschrieben, wie man ein lokales Repository für YaST erstellt: http://en.opensuse.org/Network_Installation_Source | ||
- | |||
- | |||
- | |||
- | ==== Zusätzliche Repositories ==== | ||
- | === Debian === | ||
- | * http://backports.org - neuere Versionen vieler Pakete für Debian stable | ||
- | * http://debian-multimedia.org/ - Software und Codecs für Multimedia | ||
- | * http://www.dotdeb.org/ - aktueller LAMP Stack ( PHP, Mysql, ... ) | ||
- | |||
- | === Ubuntu === | ||
- | * http://getdeb.net | ||
- | * http://www.medibuntu.org/ | ||
- | |||
- | === RedHat / Centos / Scientific Linux === | ||
- | * http://wiki.centos.org/Repositories | ||
- | * http://packages.atrpms.net/name/atrpms-repo | ||
- | |||
- | === openSuSE === | ||
- | * [[http://dewiki.opensuse.org/Paket_Repositories]] | ||
- | |||
- | ===== Vermischtes ===== | ||
- | ==== debconf ==== | ||
- | debconf ist nur für debian und ubuntu verfügbar | ||
- | |||
- | Anzeigen, welche Einstellungen bei der Installation des Paketes ''exim4-config'' vorgenommen wurden: | ||
- | debconf-show exim4-config | ||
- | |||
- | Nur die mit * gekennzeichneten Einträge sind vom Benutzer erfragt worden. | ||
- | |||
- | Man kann die von debconf gestellten Fragen vorab mit dem dem Befehl ''debconf-set-selections'' beantworten: | ||
- | <code bash> | ||
- | debconf-set-selections <<DEBCONF | ||
- | # Other destinations for which mail is accepted: | ||
- | exim4-config exim4/dc_other_hostnames string notebook01.linuxhotel.de | ||
- | # General type of mail configuration: | ||
- | exim4-config exim4/dc_eximconfig_configtype select local delivery only; not on a network | ||
- | # Root and postmaster mail recipient: | ||
- | exim4-config exim4/dc_postmaster string | ||
- | # System mail name: | ||
- | exim4-config exim4/mailname string notebook01.linuxhotel.de | ||
- | # Split configuration into small files? | ||
- | exim4-config exim4/use_split_config boolean false | ||
- | # IP-addresses to listen on for incoming SMTP connections: | ||
- | exim4-config exim4/dc_local_interfaces string 127.0.0.1 | ||
- | DEBCONF | ||
- | </code> | ||
- | |||
- | Der Befehl ''debconf-get-selections'' aus dem Paket ''debconf-utils'' erzeugt eine Ausgabe, die man leicht als Eingabe für den Befehlt ''debconf-set-selections'' verwenden kann: | ||
- | debconf-get-selections | grep -B 1 ^exim4-config | ||
- | //Achtung: die Ausgabe von ''debconf-get-selections'' enthält ein Tabulatorzeichen zwischen den 4 Feldern, daß in Terminals uU. als mehrere Leerzeichen dargestellt wird. Die Eingabe von ''debconf-set-selections'' darf aber immer nur genau 1 Whitespace-Zeichen enthalten.// | ||
- | |||
- | ==== Debian Versionen mischen ==== | ||
- | http://jaqque.sbih.org/kplug/apt-pinning.html | ||
- | |||
- | |||
- | ==== Secure Apt ==== | ||
- | === Schlüssel über Paket beziehen === | ||
- | Für Debian gültige Schlüssel finden sich im Paket ''debian-archive-keyring'' und können nachträglich mit folgenden Befehlen geladen werden: | ||
- | aptitude install debian-archive-keyring | ||
- | apt-key update | ||
- | |||
- | Paketliste aktualisieren - sollte jetzt ohne Fehlermeldung klappen: | ||
- | aptitude update | ||
- | |||
- | Schlüssel für das Debian-Archiv finden sich auch unter http://ftp-master.debian.org/ | ||
- | |||
- | === Schlüssel über Datei beziehen === | ||
- | Im Fall von debian-volatile ( http://www.debian.org/volatile ) gibt es kein Paket, sondern man muß den Schlüssel von Hand runterladen und dann importieren: | ||
- | wget http://www.debian.org/volatile/etch-volatile.asc | ||
- | apt-key add etch-volatile.asc | ||
- | apt-key update | ||
- | |||
- | Nachschauen obs geklappt hat: | ||
- | apt-key list | ||
- | |||
- | Paketliste aktualisieren - sollte jetzt ohne Fehlermeldung klappen: | ||
- | aptitude update | ||
- | |||
- | === Schlüssel über Key-Server beziehen === | ||
- | Im Fall von anderen Quellen die nur die PGP Signatur veröffentlichen gilt folgendes Verfahren: | ||
- | gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys DB90D8FC306B6783 | ||
- | gpg --armor --export DB90D8FC306B6783 | apt-key add - | ||
- | |||
- | === Links === | ||
- | * http://wiki.debian.org/SecureApt | ||
- | |||
- | |||
- | ==== aptitude ==== | ||
- | Unter debian steht neben ''apt-get'' auch den Befehl ''aptitude''. | ||
- | |||
- | Was ich persönlich nicht mag: aptitude installiert automatisch empfohlene Pakete mit. Das kann man aber mit der Option ''-R'' oder folgender Konfiguration ändern: | ||
- | ''/etc/apt/apt.conf'': | ||
- | <file> | ||
- | aptitude::Recommends-Important "false"; | ||
- | </file> | ||
- | |||
- | oder im Menu Aptitude/Options/Dependency Handling/ [X] Install Recommended Packages automatically => abwählen | ||
- | |||
- | ==== beschleunigen ==== | ||
- | === yum === | ||
- | ruft man ''yum'' mit der Option ''-C'' auf, werden die Paket-Caches diesmal nicht aktuallisiert. | ||
- | |||
- | === rpm === | ||
- | Defragmentieren der RPM-Datenbank: | ||
- | rpm --rebuilddb | ||
- | |||
- | === zypper === | ||
- | SQLite-Datenbanken lassen sich mit dem VACUUM-Kommando aufräumen: | ||
- | sqlite3 /var/cache/zypp/zypp.db vacuum | ||
- | |||
- | === Links === | ||
- | * [[ http://de.opensuse.org/SDB:Paketverwaltungsstapelspeicher_beschleunigen#Extern_defragmentieren | Tips zu rpm und zypper ]] | ||
- | |||
- | ==== bash_completion ==== | ||
- | Pakete: | ||
- | |||
- | ''bash_completion'' ( SuSE ) | ||
- | |||
- | ''bash'' ( Debian ) | ||
- | |||
- | Hilfreich beim Eingeben der Befehle, Optionen und Paketnamen | ||
- | |||
- | Aktivieren über den Befehl: | ||
- | . /etc/bash_completion | ||
- | |||
- | |||
- | |||
- | ==== Einzelne Dateien aus einem .rpm-Paket rausfischen ==== | ||
- | Anzeigen welche Dateien drin sind: ((mehr zu [[cpio]])) | ||
- | rpm2cpio nxclient-1.5.0-113.i386.rpm | cpio -i -t | ||
- | |||
- | Datei extrahieren: | ||
- | rpm2cpio nxclient-1.5.0-113.i386.rpm | cpio -id ./usr/NX/share/keys/server.id_dsa.key | ||
- | |||
- | ==== Dateien aus einem .deb-Paket rausfischen ==== | ||
- | Alle Dateien aus einem Paket ins aktuelle Verzeichnis kopieren | ||
- | dpkg-deb --vextract /var/cache/apt/archives/xen-utils-common_3.0.3-0-2_all.deb . | ||
- | |||
- | |||
- | ==== rug nicht-interaktiv ==== | ||
- | |||
- | Wie kann ich rug in Skripten laufen lassen? Keine Ahnung, aber SuSE selbst ruft rug bei der Installation wie folgt auf: | ||
- | TERM=dumb rug ... | ||
- | |||
- | ===== Quellpakete ===== | ||
- | ==== Quellpakete installieren ==== | ||
- | |||
- | wget http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-1.0pre7try2.tar.bz2 | ||
- | tar xjf MPlayer-1.0pre7try2.tar.bz2 | ||
- | cd MPlayer-1.0pre7try2 | ||
- | ./configure | ||
- | Fehlermeldungen beachten und fehlende Pakete ( enthalten meist "lib" und "devel" im Namen ) nachinstallieren. | ||
- | make | ||
- | Wenn ''make'' erfolgreich durchgelaufen ist, dann als Benutzer root | ||
- | make install | ||
- | oder | ||
- | checkinstall | ||
- | ausführen. | ||
- | |||
- | |||
- | |||
- | |||
- | ==== rpm Pakete aus Source-RPMs bauen ==== | ||
- | getestet unter CentOS 5.2 | ||
- | |||
- | Als root: | ||
- | yum install rpm-build autoconf automake libselinux-devel libacl-devel | ||
- | Als Nutzer: | ||
- | mkdir -p $HOME/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS} | ||
- | echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros | ||
- | rpm -ihv http://wftp.tu-chemnitz.de/pub/linux/centos/5.2/os/SRPMS/tar-1.15.1-23.0.1.el5.src.rpm | ||
- | cd rpm/SPECS | ||
- | rpmbuild -ba tar.spec | ||
- | |||
- | === Links === | ||
- | * [[ http://www.rpm.org/max-rpm/ | rpm Buch online]] | ||
- | * [[ http://www.rpm.org | rpm Homepage ]] | ||
- | |||
- | ==== deb Pakete aus Source-DEBs bauen ==== | ||
- | Als root: | ||
- | apt-get install fakeroot | ||
- | apt-get build-dep tar | ||
- | Als Nutzer: | ||
- | apt-get source tar | ||
- | cd tar-1.14 | ||
- | dpkg-buildpackage -rfakeroot -uc -b |