Radosław „Wiedźmin” Hrycyna wiedzmin@debianusers.pl
Niniejszy artykuł jest wprowadzeniem do tematu budowania pakietów Debiana. Jeśli wciąż się zastanawiasz, po co w ogóle tworzyć owe pakiety, to podam Ci kilka spośród wielu powodów:
Copyright (C) 2003 Radosław Hrycyna. All rights reserved.
Udziela się zgody na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu zgodnie z warunkami Licencji GNU Wolnej Dokumentacji (Free Documentation License) opublikowanej przez Fundację Wolnego Oprogramowania (Free Software Foundation) w wersji 1.1 lub dowolnej nowszej, bez żadnych części nienaruszalnych, bez tekstów przedniej lub tylnej strony okładki. Kopię tej licencji można znaleźć na stronach Fundacji Wolnego Oprogramowania.
Pakiety niezbędne do kompilowania i budowania paczki należą do sekcji devel. Absolutnym minimum to: dpkg-dev, file, gcc, g++, libc6-dev, make, patch, perl, autoconf, automake, dh-make, debhelper i fakeroot.
Do wymienionej wyżej listy pakietów można jeszcze dodać następujące paczki: devscripts, g77, gpc, lintian i strace. Oczywiście lista pakietów może się zwiększyć, bądź zmniejszyć w zależności od tego, co chcesz zbudować. Jeżeli chcesz zbudować paczkę z programem napisanym w C, nie będziesz potrzebował pakietów: g77, gpc, g++.
Jeżeli zamierzasz udostępnić pakiet innym, to warto również zainstalować gnupg. Ponieważ mój artykuł opisuje tworzenie paczek przede wszystkim na własny użytek, to nie będę się w nim rozpisywać na temat użycia tego narzędzia.
W tym momencie powinieneś się zastanowić na sposobem budowania paczki. Do wyboru mamy dwa sposoby:
Załóżmy, że chcesz zbudować paczkę z programem netris. Na początek ze strony http://packages.debian.org pobierasz pliki netris_wersja.orig.tar.gz i netris_wersja-1.diff.gz.
Teraz powinieneś sobie przygotować jakiś katalog, w którym będziesz budować pakiet, np.:
$ mkdir ~/debian $ cd ~/debian
W katalogu tym powinny znajdować się źródła programu, więc kopiujesz do niego ściągnięte pliki *.gz.
Następnie rozpakowujemy archiwum, nakładamy „łaty” przygotowane przez opiekuna pakietu oraz nadajemy możliwość wykonywania pliku ~/debian/netris-wersja/debian/rules – jest to konieczne do zbudowania pakietu:
$ tar zxf netris_wersja.orig.tar.gz $ gzip -cd netris_wersja-1.diff.gz | patch -p0 $ cd netris-wersja $ chmod +x debian/rules
W taki oto prosty sposób już jesteś gotowy do budowania pakietu. Ostatnim etapem jest wydanie polecenia:
$ dpkg-buildpackage -rfakeroot
Jeżeli budowanie pakietu zakończyło się pomyślnie, tj. nie wystąpiły żadne błędy, to możesz być pewien, że pakiet jest w 100% poprawny. Możesz go od razu zainstalować i sprawdzać działanie programu. Oczywiście sam program może nie działać bezbłędnie, ale to będzie wina jego wadliwego kodu źródłowego, a nie nieprawidłowo zbudowanego pakietu – to taka informacja na pocieszenie, gdybyś się zawiódł na jakimś programie :^)
Do budowy pakietów binarnych można również użyć pakietów źródłowych Debiana. Metoda ta wymaga dodania do pliku /etc/apt/sources.list adresów serwerów z pakietami źródłowymi (linie rozpoczynające się od „deb-src”). Jest ona wygodniejsza od metody opisanej powyżej, gdyż nie wymaga samodzielnego pobierania plików ze źródłami – robi to za Ciebie APT.
Budowanie pakietu przy pomocy APT wygląda w taki sposób:
$ apt-get source netris $ dpkg-source -x netris_wersja-poprawka.dsc $ debian/rules build # debian/rules binary
Droga tworzenia pakietu od podstaw jest o wiele dłuższa. W zależności od programu, który chcesz „spaczkować”, może być łatwa, bądź bardzo męcząca. Na początek polecałbym zająć się rzeczami mniej skomplikowanymi – wyżej zawieszona poprzeczka może tylko zniechęcać początkujących adeptów sztuki budowania pakietów Debiana. Może się bowiem okazotrzeb Debiana będzie wymagało zagłębienia się w źródła programu i zmodyfikowania ich.
Przejdę teraz do tworzenia pakietu, aby nie zanudzać dłużej Czytelnika :^) Skompresowane źródła programu najlepiej skopiować do specjalnego katalogu, który będzie służył jako katalog z pakietami. Można zrobić to dokładnie w ten sam sposób, jak w poprzednim podpunkcie:
$ mkdir ~/debian
Następnie należy rozpakować źródła programu:
$ tar zxf program.tar.gz
Kolejnym krokiem jest wydanie poleceń:
$ cd program-wersja $ dh_make -e twoj@adres.e-mail -f ../program-wersja.tar.gz
Zostaniesz zapytany przez program dh_make o rodzaj pakietu, który zamierzasz zbudować. W tym przypadku będzie to pojedyńczy pakiet, czyli odpowiedź powinna brzmieć „single binary”. W tej chwili powinno się wyedytować plik program-wersja/debian/control i odpowiednio go uzupełnić. Zazwyczaj należy zdefiniować linie „Section:” i „Description:”. Pierwsza linia definiuje sekcję do jakiej należy pakiet, w drugiej zamieszcza się opis programu. Jeżeli tworzysz pakiet tylko na własny użytek, to możesz pominąć tą czynność.
Najprawdopodobniej program, którego źródło ściągnąłeś z Internetu będzie chciał się zainstalować w katalogu /usr/local/. Aby być w zgodzie z debianową konwencją będziesz to zmienić, gdyż pakiety Debiana są umieszczane głównie w katalogu /usr/.
Najpierw uruchom konfigurację programu, a następnie wyedytuj plik Makefile:
$ ./configure $ vim Makefile
Jeżeli program jest mały, to wystarczy tylko w pliku Makefile zmienić wartość zmiennej prefix, np.
prefix = /usr/local
zmieniamy na:
prefix = $(DESTDIR)/usr
Po zmianie docelowej instalacji możesz zapisać zmiany w pliku i przejść do ostatniej czynności:
$ dpkg-buildpackage -rfakeroot
O ile nie ma problemów z kompilacją, to prawpodopodobnie pakiet będzie poprawny.
Niniejszy artykuł jest bardzo ubogim wprowadzeniem do budowania pakietów Debiana. Mam jednak nadzieję, że pomoże Ci on w rozpoczęciu budowania własnych paczek. Gdybyś chciał się dowiedzieć więcej rzeczy na ten temat, to polecam w pierwszej kolejności lekturę dokumentu Podręcznik dla nowych opiekunów pakietów Debiana.
~~DISCUSSION~~