Linux Wiki
Advertisement

Tworzenie paczki DEB należy zacząć od pobrania programów niezbędnych do zbudowania jakiegokolwiek programu, a konkretnie kompilatora. Potrzebny będzie też zestaw programów debhelper, ułatwiających tworzenie paczki.

W tym celu wydajemy polecenie:

# apt-get install build-essential dh-make devscripts

Po zainstalowaniu kompilatorów ściągamy program, który chcemy spakować. (Jako przykład posłuży ncmpcpp, kontroler mpd napisany z użyciem ncurses)

1. dh_make[]

Program dh_make został stworzony, żeby ułatwić opiekunom tworzenie nowych paczek. Generuje on katalog debian/, który będzie konieczny do zbudowania paczek. Po rozpakowaniu programu należy wejść do jego źródeł i urchomić dh_make. Dane do przykładu:

  • lokalizacja oryginalnego źródła: ~/ncmpcpp-0.5.tar.bz2
  • lokalizacja rozpakowanych źródeł: ~/ncmpcpp-0.5

Przykład:

rafal@laptop:~/ncmpcpp-0.5$ dh_make -f ../ncmpcpp-0.5.tar.bz2 -e ad@res.pl

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs?
 [s/i/m/l/k/n/b] s

Maintainer name : Jaś Nijaki
Email-Address   : ad@res.pl
Date            : Sat, 06 Feb 2010 21:20:07 +0100
Package Name    : ncmpcpp
Version         : 0.5
License         : blank
Using dpatch    : no
Using quilt     : no
Type of Package : Single
Hit <enter> to confirm: 
Done. Please edit the files in the debian/ subdirectory now. ncmpcpp
uses a configure script, so you probably don't have to edit the Makefiles.

Uwaga: dh_make zapyta o typ paczki. Zwykle jest to single (s). W tym momencie mamy folder debian, który trzeba opisać. Następnym krokiem będzie...

2. Opisanie paczki[]

Wejdź do katalogu debian/. Znajduje się tu kilkanaście plików, część z końcówką .ex, która oznacza, że plik jest tylko przykładem. Te pliki są potrzebne np. do tworzenia skryptów init.d, stron manuala itp.

Otwórz plik control. To, można rzec, najważniejszy plik w tym katalogu. Definiuje on nazwę, wersję, autora i wiele innych parametrów, które trzeba ustawić przy tworzeniu paczki. Ale po kolei.

Pierwszy "blok" to informacje o paczce źródłowej. Z niej tworzona jest paczka binarna. Source: definiuje jej nazwę. Section: dzieli pakiety na kategorie. Może być to np. net albo ruby. Dokładnie informacje znajdziesz na tej stronie. Priority przyjmuje kilka wartości:

  • extra – pakiety dodatkowe,
  • optional – pakiety niewymagane, aczkolwiek przydatne (np. Firefox),
  • standard – pakiety, które zwykle umieszcza się na każdym systemie (np. X),
  • important – pakiety, które powinny być na każdym systemie,
  • required – pakiety, bez których system nie uruchomi się (np. dpkg).

Dla pakietu ncmpcpp nadaje się optionanal. Sekcję ustawmy na sound.

Maintainer: to opiekun pakietu. Build-Depends: to pakiety wymagane do zbudowania pakietu. Standards-Version: definiują wersję Polityki Debiana użytą w tym pakiecie. Homepage ustaw na stronę domową programu (dla ncmpcpp to http://unkart.ovh.org/ncmpcpp).

Niżej znajduje się blok z informacjami. Package: i Architecture: nas nie interesują. Schodzimy do Description. Wpisz tam krótki opis programu, np. (ncurses-based mpd controller). Linię poniżej opisz dokładniej program, pamiętając o spacji wiodącej, inaczej opis zostanie uznany za komendy.

Sprawdź teraz, jakie pliki dokumentacyjne zawiera paczka. Dopisz je linia pod linią do pliku docs.

Plik copyright zawiera informacje o licencji. Jak publikujesz paczkę, nie powinno się go pomijać.

Gdy skończysz opisywać program, możesz przejść do konfiguracji skryptów ./configure i make.

3. configure i Makefile[]

Ponieważ dh jest na tyle sprytne, żeby sprawdzić, czy program się kompiluje z autotools (co każdy większy program robi), uruchomi automatycznie ./configure, następnie make i make install. Domyślnie configure uruchamia się tak:

$ ./configure

A jeżeli chcesz przekazać parametry? Przykład:

$ ./configure --with-clock --enable-outputs

Wejdź do pliku debian/rules (ma on składnię Makefile) i ustaw target override_dh_auto_configure. Przykład:

 #!/usr/bin/make -f
     %:
          dh $@

     override_dh_auto_configure:
          ./configure --with-clock --enable-outputs

4. dpkg-buildpackage[]

Przechodzimy do ostatniego etapu. Jeżeli dotąd nie było żadnych błędów, wszystko wykona się cichutko i stworzy paczki. Krótka lista sprawdzająca:

  • czy mam ustawiony plik control?
  • czy zainstalowałem i ustaliłem biblioteki potrzebne do budowy paczki?
  • czy mam wszystkie narzędzia?
  • czy mam wystarczającą ilość miejsca na dysku?
  • czy pamiętam hasło

Jeżeli tak, wpisz:

$ dpkg-buildpackage

I tu zaczyna się magia. Debhelper (w skrócie) sprawdza zależności, uruchamia configure, kompiluje, instaluje do folderu tymczasowego, kopiuje dokumentacje, dokłada plik control, pakuje do pliku deb i podpisuje kluczem gpg.

Jeżeli wszystko pójdzie bez błędów, w katalogu wyżej (cd ..) otrzymasz kilka plików: paczkę .deb, podpis .key i plik ze zmianami. Do instalacji lokalnej wystarczy to pierwsze.

Dodatek: kompilacja skrośna[]

Kompilacja skrośna, nazywana cross-compilation to funkcja, która pozwala na kompilację na inną architekturę. dpkg-buildpackage niesamowicie trudno się wtedy wywołuje, bo aż z parametrem -anazwa_architektury. Zakładam, że masz kompilator dla tej architektury.

Dodatek 2: Co później?[]

  • Poradnik dla nowych opiekunów pakietów Debianatutaj
  • man dh_make, dpkg-buildpakage, dh
  • Kącik Deweloperów Debianatutaj

Podsumowanie[]

Kompilacja paczki naprawdę nie jest trudna. W projekcie Debian uczestniczy masa ludzi, którzy robią podobna czynności, gdy pojawi się nowa wersja. To tyle w kwestii podsumowania. Powodzenia przy kompilacji programów!

Advertisement