RPM – Red Hat Packet manager – podstawy

Wprowadzenie

RPM to jeden z najpopularniejszych systemów pakietów dostępnych w Linuksie (pozostałe to TGZ z Slackware oraz deb z Debiana). Oprócz wersji binarnej lub źródłowej programu każdy pakiet zawiera informację o wersji oraz wymaganych programach do jego działania. Sam program rpm jest raczej dość prymitywny i dlatego powstało kilka nakładek mających ułatwić pracę z nim, zostały one omówione w innej lekcji.

Instalacja pakietów binarnych

Programy instalujemy przy pomocy parametru -i programu rpm. Wygodnie jest dodać jeszcze dwa parametry: -h i -v. Pierwszy umożliwia zobaczenie graficznego paska postępu instalacji, drugi powoduje iż program staje się bardziej gadatliwy.

Przykład: zainstalujmy pakiet mc.

rpm -ihv mc-4.2.12.rpm

Program deinstalujemy korzystając z parametru -e. Podobnie tutaj wygodnie jest użyć paramtery -h i -v.

Przykład: odinstalujmy pakiet mc.

rpm -ehv mc-4.2.12.rpm

Pakiety możemy także uaktualniać. Przydatne są tu dwa parametry -U (powodujący iż jeżeli pakiet nie jest zainstalowany to rpm go instaluje) albo -F (w tym wypadku następuje tylko uaktualnienie). Także tutaj przydatne okazują się parametry -h i -v.

Przykład: uaktualnijmy pakiet mc.

rpm -Fhv mc-4.2.12.rpm
rpm -Uhv mc-4.2.12.rpm

Instalacja pakietów źródłowych

Czasem lepiej jest samodzielnie skompilować program. Przydatne to jest jeżeli chcemy lepiej wykorzystać możliwości naszego komputera i programu kompilując go konkretnie pod nasz procesor lub zmienić nieznacznie parametry domyślnej konfiguracji.

Pakiet ten ściągamy a następnie wykonujemy jednocześnie kompilacje i instalacje pakietu. Robimy to poleceniem rpm z opcją rebuild:

rpm --rebuild  packet.src.rpm

Uwaga: musimy mieć zainstalowane wymagane kompilatory oraz biblioteki i pliki nagłówkowe. Niezbędny jest także pakiet rpm-devel.

Możemy jednak zainstalować taki pakiet (pojawi się nam wtedy w systemie w odpowiednich podkatalogach katalogu /usr/src/RPM jego zawartość) w celu samodzielnego stworzenia na jego podstawie pakietu binarnego, który później zainstalujemy. Możemy to wykonać w celu zmiany docelowej architektury, czy wykorzystania jakieś opcji parametrów kompilacji. Tak więc pakiet najpierw instalujemy poleceniem rpm -i nazwa_pakietu.src.rpm a następnie przechodzimy do katalou /usr/src/RPM/SPEC w którym znajduje się specjalny plik odpowiadający za procedurę stworzenia pakietu. Gdy w nim już jesteśmy wydajemy polecenie rpm -bb nazwa_pliku.spec, która spowoduje rozpoczęcie procedury kompilacji a następnie budowania pakietu. Na koniec w odpowiednim podkatalogu katalogu /usr/src/RPM/RPMS znajdziemy nasz nowy pakiet (podkatalog zależy od docelowej architektury).

Przykład:

[root@localhost rpm_src]# rpm -i syslog-ng-1.4.17-3mdk.src.rpm
[root@localhost rpm_src]# cd /usr/src/RPM/SPECS/
[root@localhost SPECS]# rpm -ba –target i686 syslog-ng.spec
Budowanie dla platform: i686
Budowanie dla i686

[root@localhost i686]# cd /usr/src/RPM/RPMS/i686/
[root@localhost i686]# rpm -i syslog-ng-1.4.17-3mdk.i686.rpm

W przykładzie wykorzystaliśmy możliwość zbudowania pakietu docelowego na platformę i686, przez co powinniśmy otrzymać pewien zysk optymalizacyjny, gdy wykorzystujemy nowsze komputery .

Tryb zapytań

Rpm posiada także tryb zapytań. Pozwala nam to sprawdzić takie rzeczy jak: czy pakiet jest zainstalowany, jakie pliki wchodzą w jego skład, do jakiego pakietu należy dany plik czy od momentu instalacji dany pakiet się zmienił.

Przejdzmy jednak do konkretów. Krótką informację o pakiecie uzyskamy wydając polecenie rpm -i nazwa_pakietu

Przykład:

[ziutus@localhost ziutus]$ rpm -qi mc-4.5.55
Name        : mc                           Relocations: (not relocateable)
Version     : 4.5.55                            Vendor: MandrakeSoft
Release     : 7mdk                          Build Date: sob 23 lut 2002 03:46:41 CET
Install date: czw 15 sie 2002 10:09:30 CEST      Build Host: bi.mandrakesoft.com
Group       : File tools                    Source RPM: mc-4.5.55-7mdk.src.rpm
Size        : 4403455                          License: GPL
Packager    : Mandrake Linux Team

Sprawdzenie jakie pakiety mają w nazwie litery mc dokonamy tak:

[ziutus@localhost ziutus]$ rpm -qa | grep mc
libtermcap2-2.0.8-30mdk
mc-4.5.55-7mdk
termcap-11.0.1-4mdk

Sprawdzenie jakie pliki są w pakiecie mc-4.5.55 wykonuje się całkiem prosto:

[ziutus@localhost ziutus]$ rpm -ql mc-4.5.55
/etc/profile.d/mc.csh
/etc/profile.d/mc.sh
[cat]

Naszą ciekawość do jakiego pakietu należy dany plik zaspokoimy dzięki parametrowi -f.

[ziutus@localhost ziutus]$ rpm -qf /usr/bin/mc
mc-4.5.55-7mdk

O pozostałych możliwościach programu rpm dowiesz się z strony pomocy systemowej rpm (man rpm albo info rpm).

Przydatne strony WWW

Czasem brakuje nam jakiegoś pakietu do spełnienia zależności (czy to programu, który instalujemy, czy próbujemy kompilować), i wtedy kłopotliwe może okazać się jego znalezienie.

W takim przypadku należy udać się na stronę www.rpmfind.net i tam wpisać poszukiwaną nazwę. Niestety spis ten obejmuje tylko nazwy pakietów, pliki binarne oraz biblioteki współdzielone. Jeszcze lepszą stroną zawierającą informacje o pakietach RPM jest http://www.rpmseek.com, pozwala wyszukać pakiety w określonych dystrybucjach po takich kryteriach jak: nazwa pakietu, pliki w pakiecie, opis czy zależności. Jeżeli tam nie znajdziemy nazwy poszukiwanego pakietu możemy spróbować odnaleźć ją na stronie Debiana (chociaż to inny system pakietów) poświęconej jego pakietom (http://www.debian.org/distrib/packages), gdyż ta wyszukiwarka zawiera spis wszystkich plików a Debian posiada największą ilość pakietów (programów). W wielu przypadkach nazwy pakietów Debiana pokrywają się z ich odpowiednikami w dystrybucjach używających PRMów.

Narzędzia wspomagające administrację pakietami

Istnieje kilka narzędzi wspomagających pracę z pakietami. Są to:

ćwiczenie 1

  1. Proszę zainstalować następujące programy: mutt, pine, linx, lynx, slrn.
  2. Proszę sprawdzić informację o programie mutt.
  3. Proszę wyświetlić spis plików z pakietu links

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *