Budowa prostych pakietów RPM
Z openSUSE wiki
System zarządzania oprogramowaniem w systemie openSUSE opiera się na Pakietach RPM. Są to tak zwane paczki, które zawierają oprócz samego programu również (zazwyczaj) jego biblioteki, dokumentację i inne zasoby. Choć pakietów RPM przeznaczonych dla openSUSE jest dużo, czasami zdarza się że jakiś program jest niezapaczkowany lub paczka zawiera program skompilowany z innymi opcjami niż życzy sobie użytkownik. W takim wypadku można samodzielnie skompilować i zainstalować program. Jednak tak zainstalowany program wymyka się spod kontroli zarządzania oprogramowaniem. W tym momencie z pomocą przychodzi program checkinstall, który pozwala tworzyć proste pakiety RPM zawierające samodzielnie skompilowane programy. Poniższy artykuł przestawia proces tworzenia takiej paczki. Pakiet, który zostanie tak wyprodukowany nie będzie prawdopodobnie zgodny ze wszystkimi założeniami dla pakietów zadanymi ogólnym opisem budowy pakietów RPM i może nie działać dla komputera innego niż Twój.
Spis treści |
Przed instalacją
Przed instalacją, należy oczywiście ściągnąć źródła programu, który chcemy skompilować. Zazwyczaj są one spakowane w postaci
nazwa-źródeł.tar.gz
lub
nazwa-źródeł.tar.bz2
Są one spakowane odpowiednio programami Gzip i Bzip2. Jak rozpakować tak spakowane źródła będziesz mógł znaleźć w opisie posługiwania się archiwami. Po rozpakowaniu należy sprawdzić, czy nie ma tam plików INSTALL, README lub "readme.txt" z informacjami i zależnościami dla budowanego programu. Bez nich nasz program może sie nie skompilować.
Pierwsze kroki
W źródłach powinien (choć nie musi) znajdować się plik
configure.sh
Jest to skrypt sprawdzający, czy spełnione są zależności potrzebne do kompilacji programu ze źródeł oraz ustawiający informacje dla polecenia make. Odpalamy go spod konsoli jako normalny użytkownik:
użytkownik@komputer $ ./configure
Skrypt będzie przez jakiś czas sprawdzał konfigurację. Przykładowe kilka ostatnich linijek działania skryptu:
configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing default-1 commands
Jak widać skrypt na podstawie zebranych przez siebie informacji zbudował plik Makefile
Kompilacja programu
Dzięki wygenerowanemu przed chwilą plikowi makefile będziemy mogli w prosty sposób skompilować program. Wystarczy wydać polecenie (również jako zwykły użytkownik):
użytkownik@komputer $ make
Powinno się teraz pojawić dużo linii z wyjścia kompilatora. kompilacja programu może potrwać bardzo długo w zależności od powiązanych pakietów i rozmiaru źródeł (np. mi kompilacja źródeł wielkości 92 MB zajęła prawie 30 minut). Kompilacja powinna zakończyć się bez zwrócenia błędu (lub numer błędu to 0 - zero). Więcej o procesie kompilowania programu możesz dowiedzieć się na tej stronie.
Budowanie pakietu
Skoro mamy już nasz program skompilowany, możemy przystąpić do budowania naszego RPM'a. W tym celu wystarczy wydać jako root polecenie
root@komputer # checkinstall
aby komputer rozpoczął budowanie pakietu. Najpierw możemy zostać zapytani czy chcemy stworzyć domyślną dokumentację pakietu.
The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]:
W zależności od naszych potrzeb wybieramy Y(tak) lub N(nie). Następnie pojawi nam się "okno" wyboru konfiguracji którą chcemy zmienić.
This package will be built according to these values: 1 - Summary: [ Package created with checkinstall 1.6.0 ] 2 - Name: [ kopete ] 3 - Version: [ 0.12.0 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ i386 ] 8 - Source location: [ kopete-0.12.0 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ kopete ] Enter a number to change any of them or press ENTER to continue:
Tutaj wybieramy numer opcji którą chcemy zmienić (np. dla zmiany architektury dla której pakiet jest przeznaczony wybieramy 7 i wpisujemy nową wartość). Teraz przykładowa konfiguracja pakietu wygląda tak:
1 - Summary: [ Package created with checkinstall 1.6.0 ] 2 - Name: [ kopete ] 3 - Version: [ 0.12.0 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ i686 ] 8 - Source location: [ kopete-0.12.0 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ kopete ]
Jeśli wciśniemy klawisz ENTER rozpocznie się budowanie pakietu. Pakiet wynikowy będzie się znajdował w katalogu /usr/src/packages/RPMS/architektura-pakietu/nazwa-pakietu (w moim przypadku /usr/src/packages/RPMS/i686/kopete-0.12.0-1.i686.rpm). Możesz teraz zainstalować swój pakiet przechodząc do powyższego katalogu z RPM'em i wydając polecenie rpm:
root@komputer # rpm -Uvh nazwa-pakietu.rpm

