Skip to main content

Przewodnik po pakietach Ubuntu - Pakowanie za pomocą Debhelper

Linux dla początkujących - obsługa i komendy w Terminalu Ubuntu (Czerwiec 2026)

Linux dla początkujących - obsługa i komendy w Terminalu Ubuntu (Czerwiec 2026)
Anonim

Pakowanie z Debhelper

Ważny

Wymagania: Wymagania sekcji "Opakowanie od zera" plus debhelper i dh-make

Jako pakujący rzadko tworzysz paczki od zera, tak jak to zrobiliśmy w poprzedniej sekcji. Jak możesz sobie wyobrazić, wiele zadań i informacji w zasady Plik, na przykład, jest wspólny dla pakietów. Aby ułatwić i usprawnić pakowanie, możesz użyć debhelper aby pomóc w tych zadaniach. Debhelper to zestaw skryptów Perla (poprzedzony prefiksem dh_), które automatyzują proces budowania pakietów. Dzięki tym skryptom budowanie pakietu Debiana staje się dość proste.

W tym przykładzie ponownie skompilujemy pakiet GNU Hello, ale tym razem porównamy naszą pracę do Ubuntu hello-debhelper pakiet. Ponownie utwórz katalog, w którym będziesz pracował:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Następnie pobierz pakiet źródłowy Ubuntu:

apt-get source hello-debhelper cd ..

Podobnie jak w poprzednim przykładzie, pierwszą rzeczą, którą musimy zrobić, jest rozpakowanie oryginalnego (wyższego) archiwum.

tar -xzvf hello-2.1.1.tar.gz

Zamiast kopiować archiwum do hello_2.1.1.orig.tar.gz tak jak w poprzednim przykładzie, pozwolimy dh_make wykonuj za nas pracę. Jedyne, co musisz zrobić, to zmienić nazwę folderu źródłowego, tak aby miała postać - gdzie nazwa_pakietu jest małymi literami. W takim przypadku samo rozwinięcie tarballa tworzy poprawnie nazwany katalog źródłowy, dzięki czemu możemy się do niego przenieść:

cd hello-2.1.1

Aby utworzyć początkową "debianizację" źródła, z którego będziemy korzystać dh_make.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_make poprosi Cię o serię pytań:

Typ pakietu: pojedynczy plik binarny, wiele plików binarnych, biblioteka, moduł jądra lub cdbs? s / m / l / k / b s Nazwa opiekuna: Captain Packager Adres e-mail: [email protected] Data: czw, 6 kwietnia 2006 10:07:19 -0700 Nazwa pakietu: hello Wersja: 2.1.1 Licencja: pusta Typ pakietu: Pojedyncze trafienie potwierdzać: Wchodzić

Uwaga

Tylko biegnij dh_make -e pewnego razu. Jeśli uruchomisz go ponownie po raz pierwszy, nie będzie działał poprawnie. Jeśli chcesz go zmienić lub popełniłeś błąd, usuń katalog źródłowy i odtwórz archiwum źródłowe na nowo. Następnie możesz przeprowadzić migrację do katalogu źródłowego i spróbować ponownie.

Bieganie dh_make -e robi dwie rzeczy:

  • Tworzy hello_2.1.1.orig.tar.gz plik w katalogu nadrzędnym,
  • Tworzy podstawowe pliki potrzebne w debian / i wiele plików szablonów (.ex), które mogą być potrzebne.

The dzień dobry Program nie jest bardzo skomplikowany, a jak widzieliśmy w sekcji "Opakowanie od zera", jego pakowanie nie wymaga dużo więcej niż podstawowych plików. Dlatego usuńmy .dawny pliki:

cd debian rm * .ex * .EX

Dla dzień dobry, ty też nie

* Licencja

* Indeks przewodników po pakiecie Ubuntu

potrzeba README.Debian (Plik README dla konkretnych problemów z Debianem, a nie README programu), dirs (używane przez dh_installdirs do tworzenia potrzebnych katalogów), docs (używane przez dh_installdocs zainstalować dokumentację programu), lub info (używane przez dh_installinfo aby zainstalować pliki info) w pliku debian informator. Aby uzyskać więcej informacji na temat tych plików, zobacz sekcję o nazwie "przykładowe pliki dh_make".

W tym momencie powinieneś mieć tylko dziennik zmian, compat, kontrola, Prawo autorskie, i zasady pliki w debian informator. W sekcji "Opakowanie od zera" jedynym plikiem, który jest nowy, jest compat, który jest plikiem zawierającym debhelper wersja (w tym przypadku 4), która jest używana.

Będziesz musiał dostosować dziennik zmiannieznacznie w tym przypadku, aby odzwierciedlić nazwę tego pakietu hello-debhelper raczej niż po prostu dzień dobry:

hello-debhelper (2.1.1-1) elegancki; pilność = niska * Pierwsza wersja - Captain Packager Czw, 6 kwietnia 2006 10:07:19 -0700

Używając debhelper, jedyne rzeczy, które musimy zmienić kontrola jest nazwa (podstawienie dzień dobry dla hello-debhelper) i dodawanie debhelper (> = 4.0.0) do Zbuduj-zależy pole dla pakietu źródłowego. Pakiet Ubuntu dla hello-debhelper wygląda jak:

Źródło: hello-debhelper Sekcja: devel Priorytet: extra Maintainer: Capitan Packager Standards-Version: 3.6.1 Build-Depends: debhelper (> = 4) Package: hello-debhelper Architektura: any Depends: $ {shlibs: Depends} Conflicts: hello Dostarcza: hello Zastępuje: hello Opis: klasyczne powitanie i dobry przykład Program powitania GNU tworzy przyjazne, przyjazne powitanie. Pozwala to nie-programistom korzystać z klasycznego narzędzia informatycznego, które w innym wypadku byłoby dla nich niedostępne. . Poważnie: jest to przykład, jak zrobić pakiet Debiana. Jest to wersja Debian programu "Hello world" projektu GNU (który sam jest przykładem dla Projektu GNU). . Jest to to samo, co pakiet hello, z tym wyjątkiem, że używa debhelpera do deb. Zobacz debhelper, co to jest.

Możemy skopiować Prawo autorskie plik i postinst i prerm skrypty z Ubuntu hello-debhelper pakiet, ponieważ nie zmieniły się od sekcji o nazwie "Opakowanie od zera". Skopiujemy również zasady plik, abyśmy mogli to sprawdzić.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

Ostatni plik, na który musimy zwrócić uwagę, to zasady, gdzie moc debhelper można zobaczyć skrypty. The debhelper wersja zasady jest nieco mniejszy (54 linie w przeciwieństwie do 72 linii w wersji z sekcji o nazwie "rules").

The debhelper Wersja wygląda następująco:

#! / usr / bin / make -f pakiet = hello-debhelper CC = gcc CFLAGS = -g -Wszystkie ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 clean : dh_testdir dh_clean rm -f build - $ (MAKE) -i distclean install: build dh_clean dh_installdirs $ prefix (MAKE) = $ (CURDIR) / debian / $ (pakiet) / usr mandir = $ (CURDIR) / debian / $ (pakiet) / usr / share / man infodir = $ (CURDIR) / debian / $ (pakiet) / usr / share / info install kompilacja: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Brak plików niezależnych od architektury, które mają być przesłane # wygenerowane przez ten pakiet. Gdyby były, byłyby # zrobione tutaj. binary-arch: install dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binarny: binary-indep binarny arch .PHONY: binarne, binarne, czyste, binarne checkroot

Zauważ, że zadania takie jak testowanie, jeśli jesteś w odpowiednim katalogu (dh_testdir), upewniając się, że budujesz pakiet z uprawnieniami roota (dh_testroot), instalowanie dokumentacji (dh_installdocs i dh_installchangelogs) i czyszczenie po kompilacji (dh_clean) są obsługiwane automatycznie. Wiele pakietów jest znacznie bardziej skomplikowanych niż dzień dobry mieć zasady pliki nie większe, ponieważ debhelper skrypty obsługują większość zadań. Aby uzyskać pełną listę debhelper skrypty, patrz sekcja "Lista debhelper skrypty. "Są również dobrze udokumentowane w swoich skryptach mężczyzna strony. Jest to przydatne ćwiczenie, aby przeczytać stronę podręcznika (są one dobrze napisane i nie długotrwałe) dla każdego skryptu pomocniczego użytego w powyższym tekście zasady plik.