Zarządzanie pakietami przez RPM

Polecenie rpm (RPM Package Manager, dawniej Red Hat Package Manager) pozwala na instalację, aktualizację, odświeżanie, nadpisywanie, przeszukiwanie, usuwanie, wypakowywanie, walidację i weryfikację pakietów binarnych przeznaczonych do systemu RHEL lub CentOS. Polecenie to nie zapewniania niestety kontroli zależności pakietów, musimy o to zadbać sami.

Opcje instalacyjne Opis
-F Aktualizuje istniejący pakiet.
-i Instaluje pakiet.
-U Aktualizuje istniejący pakiet lub instaluje jeżeli nie jest zainstalowany w systemie.
 -h Pokazuje postęp instalacji.
 –force Instaluje pakiet nawet jeżeli taka sama wersja pakietu jest już zainstalowana w systemie.
  –replacepkgs  Nadpisuje zainstalowane pakiety.
Opcje zapytań Opis
-q Przeprowadza zapytanie i wyświetla pakiety.
-qa Wyświetla wszystkie zainstalowane pakiety.
-qc Wyświetla pliki konfiguracyjne danego pakietu.
-qd Wyświetla pliki zawierające dokumentację danego pakietu.
-qf Wyświetla informacje o plikach.
-qi Wyświetla informacje o pakiecie.
-ql Listuje pliki wchodzące w skład pakietu.
-q –whatprovides Listuje pakiety, które dostarczają określony pakiet lub plik.
-q –whatqueries Listuje pakiety, których wymaga określony pakiet lub plik.
-qR Listuje zależności.
Opcje inne Opis
-e Usuwa pakiet.
-import Importuje klucz publiczny.
-K Waliduje sygnaturę i integralność pakietu.
 -h Pokazuje postęp instalacji.
 -v lub -vv
Wyświetla dokładne informacje.
-V Weryfikuje integralność plików pakietu.

W celu przeprowadzenia różnych zadań związanych z zarządzaniem pakietami rpm podmontujmy w systemie napęd DVD z płytą instalacyjną RHEL.

# mount /dev/cdrom /mnt

ISO z RHEL możemy natomiast podmontować w sposób następujący:

# mount –o loop /sciezka-do/rhel-server-7.0-x86_64-dvd.iso /mnt

Opcja -o informuje mount, że montuje obraz ISO a nie urządzenie blokowe.

 

Instalowanie pakietów.

Podczas instalacji pakietu tworzona jest niezbędna struktura katalogów i instalowane są wymagane przez pakiet pliki. Np.
# rpm –ivh /mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm
Preparing… ################################# [1 00%]
Updating / installing…
1 :zsh-5.0.2-7.el7 ################################# [1 00%

Jeżeli pakiet zsh będzie wymagał jakiś innych pakietów wygenerowany zostanie stosowny komunikat.

Instalacja pakietu bezpośrednio z serwera FTP:
# rpm –ivh ftp://host1.example.com/pub/outgoing/zsh-5.0.2-7.el7.x86_64.rpm

 

Aktualizacja pakietów.

Komenda aktualizuje pakiet jeżeli jest zainstalowany w systemie a jeżeli go nie ma to go instaluje. Tworzy ponadto kopię zapasową wszystkich plików konfiguracyjnych związanych z aktualizacją i nadaje im rozszerzenie .rpmsave.

# rpm –Uvh /mnt/Packages/sushi-3.8.1-3.el7.x86_64.rpm

 

Odświeżanie pakietu.

Wymaga aby w systemie była zainstalowana starsza wersja pakietu

# rpm –Fvh /mnt/Packages/sushi-3.8.1-3.el7.x86_64.rpm

Aby odświeżyć wszystkie pakiety zainstalowane w systemie pakietami z podmontowanej wcześniej płyty DVD:

# rpm –Fvh /mnt/Packages/*.rpm

 

Usuwanie pakietu.

Odinstalowuje pakiet i wszystkie z nim związane pliki i katalogi. Pakiet jest usuwany pod warunkiem, że nie jest potrzebny do działania przez jakiś inny pakiet.

# rpm –ev zsh
Preparing packages…
zsh-5.0.2-7.el7.x86_64

 

Nadpisywanie pakietów.

Zamienia zainstalowane w systemie pliki związane z konkretnym pakiety na pliki z tej samej wersji.

# rpm –ivh --replacepkgs /mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm

 

Wypakowywanie plików z pakietów.

Pliki wchodzące w skład pakietu RPM mogą być wypakowane komendą rpm2cpio. Taka konieczność może przydażyć się gdy mamy np. uszkodzony plik wchodzący w skład jakiegoś niezbędnego pakietu.

Ustalamy w jakim pakiecie znajduje się potrzebny nam plik (np. ntp.conf):

# rpm –qf /etc/ntp.conf
ntp-4.2.6p5-18.el7.x86_64

Zakładając, że plik znajduje się w katalogu /mnt/Packages/ używamy komendy rpm2cpio do wypakowania pliku (-i) z pakietu ntp i tworzymy strukturę katalogu (-d):

# cd /tmp
# rpm2cpio /mnt/Packages/ntp-4.2.6p5-18.el7.x86_64.rpm | cpio –id
2795 blocks

 

Zapytania o pakiety rpm.

Zapytanie o wszystkie zainstalowane w systemie pakiety:
# rpm –qa
libXxf86misc-1.0.3-7.1.el7.x86_64
perl-HTTP-Tiny-0.033-3.el7.noarch
baobab-3.8.2-4.el7.x86_64
…… . .

Zapytanie o to czy konkretny pakiet jest zainstalowany w systemie:
# rpm –q perl
perl-5.16.3-283.el7.x86_64
To list all files in a package:
# rpm –ql iproute
/etc/iproute2
/etc/iproute2/ematch_map
/etc/iproute2/group
…… . .

Wylistowanie plików z dokumentacją dla danego pakietu:
# rpm –qd audit
/usr/share/doc/audit-2.3.3/COPYING
/usr/share/doc/audit-2.3.3/ChangeLog
/usr/share/doc/audit-2.3.3/README
…… . .

Wylistowanie plików konfiguracyjnych dla danego pakietu:
# rpm –qc coreutils
/etc/DIR_COLORS
/etc/DIR_COLORS.256color
/etc/DIR_COLORS.lightbgcolor
/etc/profile.d/colorls.csh
/etc/profile.d/colorls.sh

Określenie z jakim pakietem powiązany jest dany plik:
# rpm –qf /etc/passwd
setup-2.8.71-4.el7.noarch

Wyświetlenie informacji o danym pakiecie:
# rpm –qi setup
Name :setup
Version :2.8.71
Release :4.el7
Architecture :noarch
Install Date :T ue 08 Jul 201 4 1 2:46:50 PM EDT
Group :System Environment/Base
Size :6963 1 0
License :Public Domain
Signature :RSA/SHA256, Wed 02 Apr 201 4 04:1 4:29 PM EDT, Key ID 1 99e2f91 fd43 1 d51
Source RPM :setup-2.8.71 -4.el7.src.rpm
Build Date :Wed 1 2 Mar 201 4 1 2:08:24 PM EDT
Build Host : x86-024.build.eng.bos.redhat.com
Relocations :(not relocatable)
Packager :Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor :Red Hat, Inc.
URL :https://fedorahosted.org/setup/
Summary :A set of system configuration and setup files
Description : T he setup package contains a set of important system configuration and setup files, such as passwd, group, and profile.

Wylistowanie wszystkich zależności danego pakietu:
# rpm –qR sox
/sbin/ldconfig
/sbin/ldconfig
libFLAC.so.8()(64bit)
…… . .

Zapytanie o to do czego przeznaczony jest dany plik instalacyjny:
# rpm –qip /mnt/Packages/zsh*
Name : zsh
Version : 5.0.2
Release : 7.el7
Architecture : x86_64
Install Date : (not installed)
Group : System Environment/Shells
Size : 583 443 3
License : MIT
Signature : RSA/SHA256, Wed 02 Apr 201 4 06:53 :21 PM EDT, Key ID 1 99e2f91 fd43 1 d51
Source RPM : zsh-5.0.2-7.el7.src.rpm
Build Date : T ue 28 Jan 201 4 02:11 :1 7 PM EST
Build Host : x86-024.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor : Red Hat, Inc.
URL : http://zsh.sourceforge.net/
Summary : Powerful interactive shell
Description
: T he zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the
Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion,
shell functions (with autoloading), a history mechanism, and more.

Aby określić jakich pakietów potrzebuje dany pakiet do poprawnej pracy:
# rpm –q --whatrequires iproute
initscripts-9.49.17-1.el7.x86_64
dhclient-4.2.5-27.el7.x86_64
dracut-network-033-161.el7.x86_64
libreswan-3.8-5.el7.x86_64
libvirt-daemon-1.1.1-29.el7.x86_64
NetworkManager-0.9.9.1-13.git20140326.4dba720.el7.x86_64
fcoe-utils-1.0.29-6.el7.x86_64

 

Walidacja integralności i wiarygodności pakietu.

OK na wyjściu potwierdza, że pakiet nie jest uszkodzony:

# rpm –K --nosignature /mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm: sha1 md5 OK

Red Hat podpisuje swoje produkty i aktualizacje kluczem GPG i załącza niezbędne klucze publiczne do tych produktów w celu ich weryfikacji. Klucze te umieszczane są na nośnikach instalacyjnych i kopiowane do katalogu /etc/pki/rpm-gpg w czasie instalacji systemu.

Aby sprawdzić wiarygodność pakietu w pierwszej kolejności musimy zaimportować odpowiedni klucz GPG i wtedy zweryfikować pakiet.

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
# rpm –K /mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

Komunikat “pgp md5 OK” waliduje sygnaturę pakietu i zaświadcza autentyczność i integralność pakietu.

 

Wyświetlanie kluczy GPG.

Klucz zaimportowany wcześniej może zostać wyświetlony poleceniem RPM:

# rpm –q gpg-pubkey
gpg-pubkey-fd431d51-4ae0493b

Więcej szczegółów:

# rpm –qi gpg-pubkey-fd431d51-4ae0493b
Name : gpg-pubkey
Version : fd43 1 d51
Release : 4ae0493 b
Architecture : (none)
Install Date : T hu 1 8 Sep 201 4 06:58:59 PM EDT
Group : Public Keys
Size : 0
License : pubkey
Signature : (none)
Source RPM : (none)
Build Date : T hu 22 Oct 2009 07:59:55 AM EDT
Build Host : localhost
Relocations (not relocatable)
Packager : Red Hat, Inc. (release key 2) <security@redhat.com>
Summary : gpg(Red Hat, Inc. (release key 2) <security@redhat.com>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.11 .1 (NSS-3 )
mQINBErgSTsBEACh2A4b0O9t+vzC9VrVtL1 AKvUWi9OPCjkvR7Xd8DtJxeeMZ5eF
0HtzIG58qDRybwUe89FZprB1 ffuUKzdE+HcL3 FbNWSSOXVjZIersdXyH3 NvnLLLF
0DNRB2ix3 bXG9Rh/RXpFsNxDp2CEMdUvbYCzE79K1 EnUT Vh1 L0Of023 FtPSZXX0c
u7Pb5DI5lX5YeoXO6RoodrIGYJsVBQWnrWw4xNTconUfNPk0EGZtEnzvH2zyPoJh
XGF+Ncu9XwbalnYde1 0OCvSWAZ5zT CpoLMT vQjWpbCdWXJzCm6G+/hx9upke546H
5IjtYm4dT IVT nc3 wvDiODgBKRzOl9rEOCIgOuGtDxRxcQkjrC+xvg5Vkqn7vBUyW
9pHedOU+PoF3 DGOM+dqv+eNKBvh9YF9ugFAQBkcG7viZgvGEMGGUpzNgN7XnS1 gj
/DPo9mZESOYnKceve2tIC87p2hqjrxOHuI7fkZYeNIcAoa83 rBltFXaBDYhWAKS1
PcXS1 /7JzP0ky7d0L6Xbu/If5kqWQpKwUInXtySRkuraVfuK3 Bpa+X1 XecWi24JY
HVtlNX025xx1 ewVzGNCT lWn1 skQN2OOoQT V4C8/qFpT W6DT WYurd4+fE0OJFJZQF
…… . .
-----END PGP PUBLIC KEY BLOCK-----

 

Weryfikowanie atrybutów pakietów.

Weryfikacja zainstalowanego pakietu polega na porównaniu atrybutów plików zawartych w  tym pakiecie z oryginalnymi atrybutami zapisanymi i przechowywanymi w bazie danych pakietów z czasu gdy pakiet był zainstalowany.

# rpm –Vf /etc/sysconfig/atd

Komenda nic nie zwróciła za zatem atrybuty plików nie były zmieniane. Zmieńmy teraz atrybuty plików i zweryfikujmy pakiet ponownie:

# ll /etc/sysconfig/atd
-rw-r--r--. 1 root root 403 Jan 29 2014 /etc/sysconfig/atd
# chown bin:bin /etc/sysconfig/atd ; chmod 744 /etc/sysconfig/atd
# ll /etc/sysconfig/atd
-rwxr--r--. 1 bin bin 403 Jan 29 2014 atd
# rpm –Vf /etc/sysconfig/atd
.M…UG.. c /etc/sysconfig/atd

rpm zwrócił teraz trzy kolumny: pierwsza kolumna zawiera dziewięć pól, druga kolumna zawiera typ pliku a trzecia kolumna wskazuje na nazwę pliku. Komenda przeprowadza łącznie dziewięć sprawdzeń, zilustrowanych jako kody w pierwszej kolumnie wyniku, i wyświetla jakie zmiany zostały dokonane na plikach od momentu ich zainstalowania w systemie. Każdy kod pierwszej kolumny ma znaczenie i przedstawia go poniższa tabela.

Kod Opis
S Pojawia się jeżeli rozmiar pliku jest inny.
M Pojawia się jeżeli zmieniły się uprawnia do pliku lub jego typ.
5 Pojawia się jeżeli suma MD5 się nie zgadza.
D Pojawia się jeżeli plik jest urządzeniem i jego numer się zmienił.
L Pojawia się jeżeli plik jest odwołaniem i jego ścieżka się zmieniła.
U Pojawia się jeżeli zmienił się właściciel pliku.
G Pojawia się jeżeli zmieniła się grupa pliku.
T Pojawia się jeżeli znacznik czasu się zmienił.
P Pojawia się jeżeli właściwości (eng. capability) się zmieniły.
. Pojawia się jeżeli nie znaleziono żadnych modyfikacji.

Tabela z kodami dla drugiej kolumny:

Typ pliku Opis
c Plik konfiguracyjny.
d Plik z dokumentacją.
g Plik duch (eng. ghost).
l Plik z licencją.
r Plik readme.

Bazując zatem  na kodach z powyższych tabelek możemy ustalić, że plik /etc/sysconfig/atd jest plikiem konfiguracyjnym ze zmodyfikowanymi uprawnieniami, zmienionym właścicielem i grupą.

Weryfikacja wszystkich atrybutów plików wchodzących w skład pakietu:

# rpm -Vv pakiet

 

Ćwiczenie 1. Zarządzanie pakietami przy użyciu polecenia rpm.

Upewniamy się, że plyta instalacyjna DVD z RHEL jest w napędzie i jest zamontowana. Jeżeli nie to montujemy:
# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only

Wykonujemy polecenie ll na katalogu /mnt/Packages aby potwierdzić, że pakiet dcraw jest dostępny:
# ll /mnt/Packages/dcraw*
-r--r--r--. 61 root root 232524 Apr 1 10:37 /mnt/Packages/dcraw-9.19-6.el7.x86_64.rpm

Weryfikujemy integralność i wiarygodność pakietu:
# rpm –K /mnt/Packages/dcraw-9.19-6.el7.x86_64.rpm
/mnt/Packages/dcraw-9.19-6.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

Instalujemy pakiet:
# rpm –ivh /mnt/Packages/dcraw-9.19-6.el7.x86_64.rpm
Preparing… ################################# [1 00%]
Updating / installing…
1 :dcraw-9.1 9-6.el7 ################################# [1 00%]

Wyświetlamy podstawowe informacje o pakiecie:
# rpm –qi dcraw
Name : dcraw
Version : 9.1 9
Release : 6.el7
Architecture : x86_64
Install Date : Fri 1 9 Sep 201 4 09:3 3 :3 6 AM EDT
Group : Applications/Multimedia
…… . .

Wyświetlamy wszystkie pliki wchhodzące w skład pakietu:
# rpm –ql dcraw
/usr/bin/dcraw
/usr/share/locale/ca/LC_MESSAGES/dcraw.mo
…… . .

Listujemy pliki z dokumentacją pakietu:
# rpm –qd dcraw
/usr/share/man/ca/man1/dcraw.1.gz
…… . .

Weryfikujemy atrybuty plików z pakietu:
# rpm –V dcraw

Usuwamy pakiet:
# rpm –e dcraw

Leave a Reply

Your email address will not be published. Required fields are marked *