RPM : (An)sammlung nützlicher oft gebrauchte Befehle
GPG-Schlüssel
Importieren eines GPG-Schlüssels
# rpm --import <GPG-KEY-FILE>
Abfrage aller importierten GPG-Schlüssel
# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
Löschen eines importierten GPG-Schlüssel
# rpm -e gpg-pubkey-e42d547b-459f07a4
Installation
Installation inkl. aller Abhängigkeiten
# yum install <RPM-Paket> -y
lokale Installation ohne PGP-Signaturüberprüfung
# yum localinstall --nogpgcheck <RPM-Paket>
Information
Informationen über ein installiertes Paket
# rpm -qi Paketname
Changelog eines Pakets anzeigen
Mit Hilfe des Paketes/Programmes yum-plugin-changelog kann man sich sehr leicht anzeigen lassen, welche Änderungen bei einem Paket dokumentiert worden sind. Falls noch nicht geschehen, installieren wir das Paket mit Hilfe von yum.
# yum install yum-plugin-changelog
Der Befehl ist weitgehend selbsterklärend, bei Bedarf greift man einfach auf die zugehörige manpage zurück.
# man yum-changelog
Im folgenden Beispiel fragen wir nach dem aktuellen Changelog, also z.B. aus dem Jahr 2013, des Paketes rsyslog.
# yum changelog 2013-01 rsyslog*
Loaded plugins: changelog, fastestmirror, security Repository base-LC is listed more than once in the configuration Repository updates-LC is listed more than once in the configuration Repository extras-LC is listed more than once in the configuration Repository centosplus-LC is listed more than once in the configuration Loading mirror speeds from cached hostfile Listing changelogs since 2013-01-23 ==================== Installed Packages ==================== rsyslog-5.8.10-7.el6_4.x86_64 installed * Mon Aug 26 14:00:00 2013 Tomas Heinrich <theinric@redhat.com> 5.8.10-7 - drop patch 5 which introduced a regression resolves: #996826 reverts: #847568 changelog stats. 7 pkgs, 1 source pkg, 1 changelog
Auch beim Update eines Paketes, können wir uns die Änderungen vor der Aktualisierung ansehen. Hierzu verwenden wir die Option –changelog beim Aufruf von yum.
# yum update --changelog
Abhängigkeiten eines Paketes anzeigen
Die abhängigkeiten eines Paketes fragen wir wie folgt ab:
# rpm -q --requires $Paketname
Beispiel:
# rpm -q --requires gnupg
/bin/sh /bin/sh /bin/sh /sbin/install-info libbz2.so.1()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libcurl.so.4()(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libldap-2.4.so.2()(64bit) libreadline.so.6()(64bit) libresolv.so.2()(64bit) libresolv.so.2(GLIBC_2.2.5)(64bit) libusb-0.1.so.4()(64bit) libz.so.1()(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1
Paketabhängigkeiten können mit unter sehr komplex und unübersichtlich werden/sein. Vor allem beim Paketbau verliert man zu Weilen leicht den Überblick. Im obigen Beispiel wird nur ein Teil der eigentlichen Abhängigkeiten aufgelistet; in Wahrheit ist dieser jedoch sehr komplex und zu weilen sehr rießig.
Mit hilfe des Befehls rpmdep aus dem RPM-Paket rpmorphan kann man sehr leicht und einfach diese Abhängigkeiten visualisieren.
Hierzu installieren wir uns kurzer Hand dieses Paket. Unter Fedora 19 haben wir es leicht, da dieses Paket im Fedora-Repository enthalten ist.
# yum install rpmorphan
Unter Centos 6.x ist dies ein klein wenig aufwändiger. Wir holen uns erst das Paket auf unseren Entwicklungs-/Rechner.
# wget ftp://rpmfind.net/linux/sourceforge/r/rp/rpmorphan/rpmorphan/1.9/rpmorphan-1.9-1.noarch.rpm
Anschließend installieren wir das gerade heruntergeladene RPM-Paket.
# yum localinstall --nogpgcheck rpmorphan-1.9-1.noarch.rpm
Nun können wir uns eine graphische Übersicht/Baum z.B. des Paketes gnupg erzeugen. (Der Befehl dot entstammt dem Paket graphviz, das natürlich auch installiert sein muß.)
# rpmdep -dot gnupg.dot gnupg && dot -Tpng gnupg.dot -o gnupg.png
Das generierte Bild gnupg können wir uns nun mit dem gewohnten Programm ansehen.
Nach einem Paket suchen
# rpm -qa | grep Paketname
Auflistung der Pakete nach deren Größe
Eine Auflistung aller installierten Pakete nach deren Größe erhält man mit:
$ rpm -qa --queryformat '%{SIZE} %{NAME}\n' | sort -nr | more
Dateiliste eines heruntergeladenen RPMs ansehen
Hat man sich ein RPM aus dem WWW heruntergaladen und möchte vor dem Installieren wissen, welche Dateien und Verzeichnisse in dem RPM enthalten sind, benutzt man folgenden Aufruf:
$ rpm2cpio rpmforge-release-0.5.2-2.el6.rf.i686.rpm | cpio -it
einzelne Datei aus einem RPM holen
Will man nur eine einzelne Datei aus einem RPM holen, ohne das komplette RPM zu installieren, so geht man wie, wie im nachfolgenden Beispiel aufgezeigt, vor:
- Im ersten Schritt holen wir uns das RPM auf den lokalen Rechner.
$ wget http://wxtoimg.com/downloads/wxtoimg-2.10.11.i386.rpm
- Dann kucken wir in das RPM, ob die gewünschte Datei auch enthalten ist.
$ rpm2cpio wxtoimg-2.10.11.i386.rpm | cpio -it
- Dann holen wir uns das Objekt der Begierde aus dem RPM.
$ rpm2cpio wxtoimg-2.10.11.i386.rpm | cpio -id ./usr/local/lib/wx/tle/weather.txt
- Zum Schluss sehen wir uns die extrahierte Datei an.
less usr/local/lib/wx/tle/weather.txt
Dateiliste eines installierten Paketes
# rpm -ql Paketname
# rpm -ql dhcp /etc/dhcpd.conf /etc/rc.d/init.d/dhcpd /etc/rc.d/init.d/dhcrelay /etc/sysconfig/dhcpd /etc/sysconfig/dhcrelay /usr/bin/omshell /usr/sbin/dhcpd /usr/sbin/dhcrelay /usr/share/doc/dhcp-3.0.5 /usr/share/doc/dhcp-3.0.5/IANA-arp-parameters /usr/share/doc/dhcp-3.0.5/README /usr/share/doc/dhcp-3.0.5/RELNOTES /usr/share/doc/dhcp-3.0.5/api+protocol /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-authentication-14.txt /usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-dhcp-dns-12.txt /usr/share/doc/dhcp-3.0.5/draft-ietf-dhc-failover-07.txt /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient-script.8 /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.8 /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.conf.5 /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhclient.leases.5 /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhcp-eval.5 /usr/share/doc/dhcp-3.0.5/ja_JP.eucJP/dhcp-options.5 /usr/share/doc/dhcp-3.0.5/rfc1542.txt /usr/share/doc/dhcp-3.0.5/rfc2131.txt /usr/share/doc/dhcp-3.0.5/rfc2132.txt /usr/share/doc/dhcp-3.0.5/rfc2485.txt /usr/share/doc/dhcp-3.0.5/rfc2489.txt /usr/share/doc/dhcp-3.0.5/rfc951.txt /usr/share/man/man1/omshell.1.gz /usr/share/man/man5/dhcpd-eval.5.gz /usr/share/man/man5/dhcpd-options.5.gz /usr/share/man/man5/dhcpd.conf.5.gz /usr/share/man/man5/dhcpd.leases.5.gz /usr/share/man/man8/dhcpd.8.gz /usr/share/man/man8/dhcrelay.8.gz /var/lib/dhcpd /var/lib/dhcpd/dhcpd.leases
Somit findet man sehr schnell und einfach heraus, wo die
- ausführbaren Programm(teil)e
- Programmdokumentation
- Konfigurationsfiles und -beispiele
liegen.
Nachfrage zu welchem Paket eine Datei gehört
Ist der Pfad eines Befehls bekannt, so kann mit Hilfe des Befehls rpm ermittelt werden, aus welchem Paket dieses Programm stammt.
# rpm -qf /voller/Pfad/Datei
Bsp.:
# rpm -qf /usr/bin/gpg2
gnupg2-2.0.19-8.fc19.x86_64
Alternativ kann mit Hilfe des Befehls yum die RPM-Datenbank befragt werden.
# yum whatprovides /usr/bin/gpg2
Geladene Plugins: langpacks, refresh-packagekit gnupg2-2.0.19-8.fc19.x86_64 : Utility for secure communication and data storage Quelle : fedora Übereinstimmung von: Dateiname : /usr/bin/gpg2 gnupg2-2.0.19-8.fc19.x86_64 : Utility for secure communication and data storage Quelle : @anaconda Übereinstimmung von: Dateiname : /usr/bin/gpg2
b.z.w.:
# yum whatprovides */gpg2
Geladene Plugins: langpacks, refresh-packagekit 1:bash-completion-2.1-2.fc19.noarch : Programmable completion for Bash Quelle : fedora Übereinstimmung von: Dateiname : /usr/share/bash-completion/completions/gpg2 gnupg2-2.0.19-8.fc19.x86_64 : Utility for secure communication and data storage Quelle : fedora Übereinstimmung von: Dateiname : /usr/bin/gpg2 1:bash-completion-2.1-2.fc19.noarch : Programmable completion for Bash Quelle : @anaconda Übereinstimmung von: Dateiname : /usr/share/bash-completion/completions/gpg2 gnupg2-2.0.19-8.fc19.x86_64 : Utility for secure communication and data storage Quelle : @anaconda Übereinstimmung von: Dateiname : /usr/bin/gpg2
Nur die Konfiguratinsdateien Paketes anzeigen lassen
# rpm -qlc Paketname
Nur die Dokumentation eines Paketes anzeigen lassen
# rpm -qld Paketname
Abfrage wann ein Paket zuletzt installiert/upgedated wurde
# rpm -q --last Paketname
Paketnamen nach Einrichtungsdatum
Zur Anzeige aller installierten Pakete, sortiert nach aktualität der Installation/Updates verwenden wir:
# rpm -qa -last
Möchten wir eine alphabetische Liste aller installierter Pakete mit dem Datum der Installation bzw. des letzten Updates, so sortieren wir einfach die Ausgabe:
# rpm -qa -last | sort
Interessiert und die Gesamtanzahl aller installierten Paketem, dann nutzen wir:
# rpm -qa | wc -l
Paketnamen nach Repository
Wollen wir ermitteln, welche Pakete aus einem bestimmten Repository stammen verwenden wir:
# yum list installed | grep -i epel
epel-release.noarch 6-8 installed python-gdata.noarch 2.0.11-1.el6 @epel python-progressbar.noarch 2.3-2.el6 @epel
Alphabetische Liste aller Pakete
Möchte man eine Auflistung aller installierter Pakete benutzt man folgenden Aufruf:
# rpm --qf "%{NAME}\n" -qa | sort > installerte_Paketliste
So kann man mit Hilfe der so erzeugten Datei einen zweiten Server installieren, der dann die gleichen Pakete beinhaltet.
# yum install $(cat installerte_Paketliste)
Löschen / Entfernen
Löschen eines Paketes inkl. aller Abhängigkeiten
# yum remove <Paketname> -y
Löschen von "n"- zu letzt installierten Pakete
Will man z.B. die zuletzt installierten 23-Pakete wieder löschen, so behilft man sich mit folgendem Aufruf:
# yum remove `tail -n 23 /var/log/yum.log | cut -d \ -f 5`
Update
Prüfen auf Aktualisierungen
Mit nachfolgenden Befehl fragen wir die Aktualisierungen ab.
# yum check-update
Update eines Pakets
Wollen wir ein Paket aktualisieren, so verwenden wir folgenden Aufruf.
# yum update postfix
Mit der Option -y kann angegeben werden, dass dieses Paket auch ohne Nachfrage installiert werden soll.
Update eines oder mehreren Pakete
Wollen wir alle aktuellen Paketänderungen installieren, verwenden wir folgenden Aufruf.
# yum update
Auch hier kann mit der Option -y angegeben werden, dass die fraglichen Pakete ohne weitere Nachfrage installiert werden sollen.
Anzeige des Changelogs vor einem Update
Wollen wir wissen, was genau sich an einem Paket geändert hat, verwenden wir die Option –changelog. Hierzu muss das Plugin yum-plugin-changelog installiert sein!
# yum update --changelog
Loaded plugins: changelog, fastestmirror, security
Repository base-LC is listed more than once in the configuration
Repository updates-LC is listed more than once in the configuration
Repository extras-LC is listed more than once in the configuration
Repository centosplus-LC is listed more than once in the configuration
Loading mirror speeds from cached hostfile
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package polkit.x86_64 0:0.96-2.el6_0.1 will be updated
---> Package polkit.x86_64 0:0.96-5.el6_4 will be an update
--> Finished Dependency Resolution
Changes in packages about to be updated:
ChangeLog for: polkit-0.96-5.el6_4.x86_64
* Tue Sep 17 14:00:00 2013 Miloslav Trmač <mitr@redhat.com> - 0.96-5
- Actually apply the patch, and modify it to apply to 0.96
- Resolves: #1006262
* Fri Sep 13 14:00:00 2013 Jan Lieskovsky <jlieskov@redhat.com> - 0.96-4.el6_4
- Include fix for CVE-2013-4288
- Resolves: #1006262
Dependencies Resolved
=============================================================================================================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================================================================================================
Updating:
polkit x86_64 0.96-5.el6_4 updates-LC 158 k
Transaction Summary
=============================================================================================================================================================================================================================================
Upgrade 1 Package(s)
Total download size: 158 k
Is this ok [y/N]: y
Downloading Packages:
polkit-0.96-5.el6_4.x86_64.rpm | 158 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : polkit-0.96-5.el6_4.x86_64 1/2
Cleanup : polkit-0.96-2.el6_0.1.x86_64 2/2
Verifying : polkit-0.96-5.el6_4.x86_64 1/2
Verifying : polkit-0.96-2.el6_0.1.x86_64 2/2
Updated:
polkit.x86_64 0:0.96-5.el6_4
Complete!