====== Budowanie pakietów Debiana ====== Radosław "Wiedźmin" Hrycyna ===== Streszczenie ===== 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: - budując pakiet ze źródeł będziesz mógł go łatwo i szybko instalować oraz usuwać, gdy przestanie Ci już być potrzebny, - domyślna konfiguracja pakietu z jakichś powodów nie odpowiada Ci, - Twój ulubiony program w stabilnej wersji dystrybucji jest zbyt stary i przydałaby się jego aktualizacja, - Twojego ulubionego programu jeszcze nie ma w żadnej wersji dystrybucji, - umiejętność budowania pakietów przyda Ci się, gdy w przyszłości zechcesz zostać deweloperem Debiana :^)
===== Prawa autorskie ===== 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 [[http://www.fsf.org/copyleft/fdl.html|Fundacji Wolnego Oprogramowania]]. ===== 1. Niezbędne pakiety ===== 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. ===== 2. Metody budowania pakietu ===== W tym momencie powinieneś się zastanowić na sposobem budowania paczki. Do wyboru mamy dwa sposoby: - Ten sposób wymaga ściągnięcia ze strony [[http://packages.debian.org/|http://packages.debian.org]] źródeł programu. Zostana one następnie użyte do zbudowania pakietu. Sposób ten jest o tyle wygodny, że opiekun pakietu dostosował już źródła program do potrzeb Debiana. Jedynym problemem, który pojawia się podczas budowania paczki jest brak odpowiednich pakietów, od których zależy ten program (niekiedy wymagane są pakiety, których nie ma w stabilnej wersji dystrybucji). - W tej metodzie źródła musimy pobrać bezpośrednio ze strony projektu programu. Jeżeli skusisz się na ten sposób, będziesz musiał trochę przerobić źródła -- im mniej rozbudowany jest program i ma mniejsze wymagania, tym łatwiej go "zdebianizować". ===== 2.1. Tworzenie pakietu ze zdebianizowanych źródeł ===== Załóżmy, że chcesz zbudować paczkę z programem netris. Na początek ze strony [[http://packages.debian.org/|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
===== 2.2. Tworzenie pakietu z oryginalnych źródeł ===== 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. ===== 3. Zakończenie ===== 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 [[http://www.debian.org/doc/manuals/maint-guide/index.pl.html|Podręcznik dla nowych opiekunów pakietów Debiana]].
~~DISCUSSION~~