RPM : (An)sammlung nützlicher oft gebrauchte Befehle

 # rpm --import <GPG-KEY-FILE>
 # rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
 # rpm -e gpg-pubkey-e42d547b-459f07a4
 # yum install <RPM-Paket> -y
 # yum localinstall --nogpgcheck <RPM-Paket>
 # rpm -qi Paketname

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

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.

Bild: Abhängigkeiten von gnupg als Graphik

Zum Vergrößern auf das Bild klicken!

# rpm -qa | grep Paketname

Eine Auflistung aller installierten Pakete nach deren Größe erhält man mit:

$ rpm -qa --queryformat '%{SIZE} %{NAME}\n' | sort -nr | more

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

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:

  1. Im ersten Schritt holen wir uns das RPM auf den lokalen Rechner.
    $ wget http://wxtoimg.com/downloads/wxtoimg-2.10.11.i386.rpm
  2. Dann kucken wir in das RPM, ob die gewünschte Datei auch enthalten ist.
    $ rpm2cpio wxtoimg-2.10.11.i386.rpm | cpio -it
  3. 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
  4. Zum Schluss sehen wir uns die extrahierte Datei an.
    less usr/local/lib/wx/tle/weather.txt
 # 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.

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
 # rpm -qlc Paketname
 # rpm -qld Paketname
 # rpm -q --last Paketname

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

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

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)
 # yum remove <Paketname> -y

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`

Mit nachfolgenden Befehl fragen wir die Aktualisierungen ab.

 # yum check-update

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.

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.

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!

Links

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/rpm.txt
  • Zuletzt geändert: 20.04.2018 10:38.
  • von 127.0.0.1