Tworzenie pakietów debian howto

Tworzenie pakietów debian howto

Przedmowa

Odpowiedzialność za maszynę oznacza dbanie o sprzęt, a także komponenty oprogramowania. Jak widać w codziennym życiu jako administrator systemu, znacznie lepiej jest zainstalować oprogramowanie jako pakiet oprogramowania niż kilka plików źródłowych. Zmniejsza to koszty właściwego utrzymania systemu.

Pakiety dostępne od preferowanego dystrybutora są zatwierdzone i nadzorowane przez opiekuna pakietu. Przetestował oprogramowanie i zapewnia, że ​​pasuje do innych pakietów oprogramowania dostępne w dystrybucji. Ponadto pakiet jest podpisany z klawiszem GPG od opiekunki pakietu. Gwarantuje to integralność pakietu i pokazuje, że pakiet pochodzi z zaufanego źródła.

Format pakietu zależy od dystrybucji Linux. Wybrane formaty są następujące:

Deb

Pakiety używane w: Debian GNU/Linux, Ubuntu, Armbian, Linux Mint, Knoppix

RPM

Pakiety używane w: Redhat, Fedora, Centos, OpenSuse

TGZ i TXZ

Pakiety używane w: Slackware

smoła.xz

Pakiety używane w: Arch Linux

Ten dokument wyjaśnia, jak krótko zbudować pakiet dla Debian GNU/Linux. Aby uzyskać szczegółowe informacje na temat formatu pakietu Debiana i narzędzi do utrzymania systemu Linux opartego na „Deb”, możesz sprawdzić książkę zarządzania pakietami Debian [DPMB], aby zbudować pakiety dla Debian GNU/Linux Te dokumenty są niezbędne:

  • Przewodnik debiana nowego opiekuna [DNMG]
  • Odniesienie Debian Developer [DDR]
  • Samouczek opakowania Debian [DPT]
  • Podręcznik polityki Debian [DPM]

Pakiet, z którym będziemy pracować, nazywa się „Helloworld” i ma numer wersji 0.1. Do celów demonstracyjnych po prostu zawiera pojedynczy skrypt Pythona, który wyświetla słynną wiadomość „Witaj, świat!”:

#!/usr/bin/python
Drukuj („Cześć, świat!")

Wymagania

2.1. Klucz GPG

Jako krok 1, zapoznaj się z kluczem GPG. Później klucz będzie potrzebny do podpisania pakietu. Należy pamiętać, że pakiety niepodpisane są niegodne.

Jeśli nie masz jeszcze klucza GPG. Możesz wykonać trzy kroki poniżej. Pierwsze polecenie generuje nowy klucz, drugi eksportuje nowy klucz do osobnego pliku, a trzeci dodaje klucz do twojego osobistego lądowania.

$ GPG-Gen-key
$ gpg -a --output ~/.GNUPG/Your_name.GPG -Export „Twoje imię”
$ gpg -emport ~/.GNUPG/Your_name.GPG

Podczas tworzenia upewnij się, że podana nazwa _Teour Name_ jest poprawna. Często używa kombinacji imienia i nazwiska. Ta nazwa będzie musiała być dokładnie taka sama w pakiecie, a następnie podczas tworzenia pliku „sterowania” pakietu Debiana. Aby uzyskać więcej informacji na temat GPG, przyjrzyj się Podręcznika Prywatności GNU [GPH].

2.2. Łańcuch narzędzi opakowania

Aby zbudować pakiet Debian z kodem źródłowym, w systemie wymagane są następujące pakiety oprogramowania:

  • Zbudowanie
  • Autoconf
  • Automake
  • Autotools-dev
  • DH-Make
  • Debhelper
  • Devscripts
  • Fakeroot
  • Xutils
  • Lintian
  • PBUILDER

Jako „root” użytkownika możesz zainstalować je za pomocą następującego polecenia:

# apt-get instaluj kompilację Autoconf Automake Autotools-dev dh-make devhelper devscripts fakeroot xutils lintian pBuilder

2.3. Przygotuj oprogramowanie do pakowania

Musimy przygotować katalog do zbudowania pakietu. Utwórz katalog, aby przygotować środowisko, w którym zbudujemy pakiet:

$ mkdir -p ~./Build/Helloworld/0.1

Skopiuj „TAR.GZ „skompresowane archiwum w katalogu:

$ CP Helloworld-0.1.smoła.GZ ~./Build/Helloworld/0.1

Zmień się w katalogu i wyodrębnij pakiet:

$ cd ~./Build/Helloworld/0.1
~/Build/Helloworld/0.1 $ TAR -xZF Helloworld -0.1.smoła.GZ

Teraz katalog zawiera zarówno kod źródłowy w osobnym katalogu, jak i skompresowane archiwum:

~/Build/Helloworld/0.1 $ ls
Helloworld-0.1 Helloworld-0.1.smoła.GZ

Debianizacja

W tym momencie dodamy pliki specyficzne do pakietu Debiana. Dlatego ten krok nazywa się _debianization_ oprogramowania. Odbywa się to w kilku pojedynczych krokach.

3.1 Przygotuj strukturę opakowania

Zmień się w katalogu, który utrzymuje cały kod źródłowy pakietu. W naszym przykładzie pakiet zawiera plik „Helloworld.Py ', tylko:

~ $ CD Build/Helloworld/0.1/Helloworld-0.1
~/Build/Helloworld/0.1/Helloworld-0.1 $ ls
Witaj świecie.py

Dodajmy pliki specyficzne do pakietu Debiana. Narzędzie „dh_make” wchodzi w grę. Przełącznik '-E' używa podanego adresu jako adresu e-mail w polu „opiekuna” pliku „debian/control”. Zamiast tego budowanie pakietu użyj własnego adresu e -mail. Pamiętaj, aby użyć tego samego adresu e -mail, który odpowiada Twojemu kluczowi GPG.

Przełącznik '-f' używa danego pliku jako oryginalnego archiwum źródłowego i pomija kopiowanie bieżącego drzewa programu do „programu.orig '.

~/Build/Helloworld/0.1/Helloworld-0.1 $ dh_make -e [email protected] -f… /helloworld -0.1.smoła.GZ

W monicie proszeni o wybranie typu pakietu, który należy utworzyć. Wybrać _single binary_pee „s”.

Rodzaj pakietu: pojedynczy binarny, binarny, wielokrotny binarny, biblioteka, moduł jądra, łatka jądra?
[s/i/m/l/k/n] s
Nazwa opieki: Frank Hofmann
Address e-mail: [email protected]
Data: sobota, 04 listopada 2017 21:16:13 +0100
Nazwa pakietu: Helloworld
Wersja: 0.1
Licencja: puste
Rodzaj pakietu: Single
Uderz, aby potwierdzić:
Obecnie nie ma najwyższego poziomu makefile. Może to wymagać dodatkowego strojenia.
Zrobione. Prosimy o edytuj pliki w debian/ subdirectory teraz. Powinieneś także
Sprawdź, czy Helloworld Makefiles instaluje $ destdir, a nie w / .

Powoduje to katalog o nazwie „Debian”:

~/Build/Helloworld/0.1/Helloworld-0.1 $ ls
Debian Helloworld.py

Ten katalog zawiera wszystkie pliki specyficzne dla pakietu.

3.2. Dostosuj plik sterujący

Plik „debian/control” utrzymuje potrzebne zależności _ do budowy_ pakiet. Używając polecenia 'dpkg -depcheck -d ./skonfiguruj „Otrzymujesz listę ze wszystkimi wymaganymi pakietami. W naszym przypadku nie ma kolejnego pakietu, ponieważ Python jest interpretowanym językiem.

Następnie musimy edytować plik „Debian/Control” i dodać wartości specyficzne dla pakietu. W naszym przykładzie wygląda następująco:

Źródło: Helloworld
Sekcja: Python
Priorytet: Opcjonalnie
Keeperer: Frank Hofmann
Build Depends: Debhelper (> = 9)
Wersja standardów: 3.9.5
Strona główna: http: // www.Efho.de/
#Vcs-git: git: // anonscm.Debian.org/collab-maint/helloworld.git
#VCS-Browser: http: // anonscm.Debian.org/?p = collab-maint/helloworld.git; a = podsumowanie
Pakiet: Helloworld
Architektura: dowolne
Zależy: $ shlibs: zależy, $ misp: zależy, Python
Opis: Druki Hello World in Python
Drukuje Hello World w Python

3.3. Dostosuj plik praw autorskich

Plik „Debian/Copyright” zawiera informacje o licencji dla pakietu oprogramowania. Jest przygotowany do wydania za pośrednictwem Licencji Publicznej GNU 2 (GPLV2). W naszym przykładzie wygląda następująco:

Format: http: // www.Debian.Org/Doc/Packaging-Manuals/Copyright-Format/1.0/
Nazwa Upstream: Helloworld
Źródło: http: // www.Efho.de/
Pliki: Debian/*
Prawa autorskie: 2017 Frank Hofmann
Licencja: GPL-2+
Ten pakiet jest bezpłatnym oprogramowaniem; Możesz go redystrybuować i/lub modyfikować
to zgodnie z warunkami ogólnej licencji publicznej GNU opublikowanej przez
Fundacja Free Software; albo wersja 2 licencji lub
(z opcji) dowolna późniejsza wersja.
.
Ten pakiet jest dystrybuowany w nadziei, że będzie przydatny,
Ale bez żadnej gwarancji; nawet bez dorozumianej gwarancji
Zdolność handlowa lub sprawność w określonym celu. Zobacz
GNU ogólna licencja publiczna, aby uzyskać więcej informacji.
.
Powinieneś otrzymać kopię ogólnej licencji publicznej GNU
wraz z tym programem. Jeśli nie, patrz
.
W systemach Debian, pełny tekst generała GNU
Wersję 2 licencji publicznej można znaleźć w „/usr/share/common-licencess/gpl-2”.

3.4. Dostosuj plik ChangeLog

Po informacji o prawach autorskich plik „Debian/Changelog” musi zostać dostosowany. W naszym przykładzie dodajemy informacje „początkowe wydanie”.

Helloworld (0.1-1) niestabilne; pilność = niska
* Pierwsze wydanie
-- Frank Hofmann Sat, 04 listopada 2017 21:16:13 +0100

To wszystko, czego potrzebujemy do tej pory - teraz możemy zbudować pakiet, wreszcie.


Zbuduj pakiet

Aby zbudować pakiet, musimy przenieść jeden katalog i uruchomić następujące polecenie:

~/Build/Helloworld/0.1/Helloworld-0.1 $ DPKG -BUILDPACKAGE -RFAKEROOT

Opcja „-rfakeroot” umożliwia „DPKG-BUILDPACKAGE” uruchamianie poleceń jako uprzywilejowany użytkownik za pomocą polecenia „Fakeroot”. Jest to konieczne, aby przygotować pakiet i utworzyć pliki i katalogi.
Powyższe polecenie powoduje dłuższą listę komunikatów wyjściowych (pokazane tutaj w środowisku języka niemieckiego):

DPKG-BUILDPACKAGE: Quellpaket Helloworld
DPKG-BUILDPACKAGE: Quellpaket Helloworld
DPKG-BUILDPACKAGE: QuellVersion 0.1-1
DPKG-BUILDPACKAGE: Quelldistributing Niestabry
DPKG-BUILDPACKAGE: Quellen Geändert Durch Frank Hofmann
DPKG-BUILDPACKAGE: Host-Architektur AMD64
DPKG-SOURCE-BEZ-BUDLE Helloworld-0.1
Fakeroot Debian/Rules Clean
DH Clean
DH_TESTDIR
DH_AUTO_CLEAN
DH_CLEAN
dpkg-source -B helloworld-0.1
DPKG-Source: Informacje: Quellformat "3.0 (kołdra) „wird verwendet
DPKG-SOURCE: Informacje: Helloworld Wird Unter Benutzung des Exentarenden ./helloworld_0.1.Orig.smoła.GZ Gebaut
DPKG-Source: Informacje: Helloworld Wird w Helloworld_00.1-1.Debian.smoła.XZ Gebaut
DPKG-Source: Informacje: Helloworld Wird w Helloworld_00.1-1.DSC Gebaut
debian/zasady budować
DH Build
DH_TESTDIR
DH_AUTO_CONFIGURE
DH_AUTO_BUILD
DH_AUTO_TEST
Fakeroot Debian/Rules Binary
DH Binary
DH_TESTROOT
DH_PREP
dh_auto_install
DH_InstallDocs
DH_INstallChangeLogs
DH_PERL
DH_LINK
DH_Compress
DH_fixperms
DH_STRIP
DH_Makeshlibs
DH_SHLIBDEPS
dh_installdeb
DH_GENCONTROL
DPKG-GENCONTROL: WARNUNG: FELD Zależy von Paket Helloworld: Unbekannte SubstitionsVariable $ shlibs: zależy
DH_MD5Sums
DH_BUILDDEB
DPKG-DEB: Paket „Helloworld„ Wird in ”… /helloworld_0.1-1_AMD64.Deb "Gebaut.
DPKG-GENCHANGES <… /helloworld_0.1-1_amd64.changes
DPKG-GENCHANGES: Kompletter Quellcode Beim Hochladen Hinzufügen
DPKG-SOURCE-After-Build Helloworld-0.1
DPKG-BUILDPACKAGE: Alles Hochzuladen (Originalquellen entualten)
Sigfile Helloworld_0.1-1.DSC
Sie Benötigen Eine Passphraza, um den Geheimen Schlüssel Zu entsperren.
Benutzer: „Frank Hofmann (Hofmann EDV)
"
4096-bit RSA Schlüssel, ID D431AC07, Erzeugt 2014-09-05

4.1. Walidacja pakietu

Gratulacje - udało ci się zbudować pakiet Debian - tak! Teraz przyjrzyjmy się pakiecie. Tutaj wchodzi w grę „Lintian”. To narzędzie weryfikuje pakiet w celu znalezienia naruszeń w stosunku do surowych reguł, które pakiety Debian muszą spełnić.

Aby uruchomić testy, wpisz następujące polecenie:

Lintian Helloworld_0.1-1_AMD64.Deb

Narzędzie nie znajduje naruszeń reguł, ale także błędy pisowni i złe znaki. Switch „-pedantic” prosi „Lintian” o znacznie bardziej krytyczny niż zwykle. Jak widać poniżej „Lintian” jest trochę zrzędliwy i odkrył trzy ostrzeżenia i jeden błąd.

Z wyjątkiem pierwszego ostrzeżenia możemy łatwo sprawić, że „Lintian” jest zadowolony. Ostrzeżenie „Nowe pakiet-okup-close-itp-bug” oznacza, że ​​nie ma raportu o błędach przeciwko pakietowi ITP (ITP oznacza _intended to pakiet_). W przypadku regularnego pakietu debiana należy wysłać raport BugTracker w celu pakietu ITP, aby powiadomić innych, że zamierzasz zapakować to oprogramowanie.

4.2. Ostrzeżenie: „Readme-debian-contains-debmake-template

Plik „Readme.Debian 'ma na celu przechowywanie dodatkowych notatek dotyczących tego pakietu. „dh_make” utworzył dla nas ten plik:

Helloworld dla Debiana
---------------------

-- Frank Hofmann Sat, 04 listopada 2017 21:16:13 +0100

W naszym przykładzie nie mamy dodatkowych informacji, więc możemy usunąć plik.

4.3. OSTRZEŻENIE: „Opis-starts-z wiodącymi przestrzeniami”

To ostrzeżenie jest podniesione, ponieważ dłuższy opis naszego pakietu w pliku „Debian/Control” zaczyna się od więcej niż jednej przestrzeni. Gdy tylko usuniemy pojedynczą przestrzeń, ostrzeżenie zniknie.

4.4. Błąd: „Opis-synopsis-Is-Duplication”

Każdy pakiet wymaga zarówno krótkiego, jak i dłuższego opisu w „Debian/Control”. Ten błąd jest podniesiony, ponieważ oba opisy są identyczne. Gdy tylko przedłużyliśmy dłuższy opis, błąd zniknął.


Linki i referencje

- [DDR] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Referencja Debiana Developer
- [DNMG] Josip Rodin, Osamu Aoki: przewodnik Debiana New Cechence
- [DPMB] Axel Beckert, Frank Hofmann: The Debian Pack Management Book
- [DPM] Podręcznik polityki Debiana
- [DPT] The Debian Packaging Tutorial
- [GPH] Podręcznik prywatności GNU
- [Lushpaipackage] Alex Lushpai: Jak stworzyć pakiet Debian ze źródła


Podziękowanie

Autor chciałby podziękować Axel Beckert i Gerold Rupprecht za ich wsparcie i krytyków, przygotowując ten artykuł.