Budowa pakietu DEB

Reklama na Linuxiarze.pl

 

Z Wikipedii:

deb – format pakietu instalacyjnego używanego przez system operacyjny Debian GNU/Linux…
…Pakiet deb (i jego instalator dpkg) posiada zaawansowaną kontrolę powiązań i zależności pomiędzy poszczególnymi składnikami systemu – programami i używanymi przez nie bibliotekami. Dzięki temu instalując nowy program ma się pewność, że nie będzie miał miejsca konflikt z innymi zainstalowanymi programami. W przeciwnym wypadku instalowany program mógłby przerwać funkcjonowanie z powodu braku poszczególnych składników, które są wymagane do prawidłowego działania.

Po co samodzielnie budować pakiety „deb”?
Jeśli tworzysz oprogramowanie, skrypty lub inne pakiety dla systemów opartych o Debiana lub Ubuntu, to:
1. zapakowanie (lub „debianizacja”) twojej pracy zautomatyzuje proces instalacji pakietu wraz z zależnościami
2. umożliwi innym użytkownikom bezproblemową instalację, aktualizacją i używanie Twoich aplikacji

Dodatkowo, udostępnienie pakietów „deb” poprzez stronę internetową lub repozytorium pakietów deb pozwoli na dostęp do Twojej aplikacji za pośrednictwem systemowego menadżera aplikacji APT oraz jego graficznym i tekstowym nakładkom.

Niniejszy wpis przedstawia przykładową strukturę i sposób budowy prostego pakietu ‚deb’ w dystrybucjach Debian-o lub Ubuntu pochodnych.
Trochę inna procedura jest wykorzystywana w przypadku budowy pakietów ze źródeł, udostępnionych przez deweloperów aplikacji, ale o tym innym razem.
Dzisiaj skupimy się na debianizacji własnego skryptu lub czegoś podobnego.

Zależności

Do zbudowania pakietu ‚deb” będą potrzebne pakiety, które znajdują się w repozytoriach Debiana i Ubuntu:
dpkg
coreutils

Struktura pakietu „deb”

W katalogu ROBOCZYM tworzymy podkatalog dla nowego deb-a o nazwie:
nazwa_wersja_architektura
np:
moj-skrypt_1.0_all
Jeśli skrypt można uruchomić na dowolnej architekturze sprzętowej, to architektura „all” będzie właściwa.
Jeśli skrypt został skompilowany na konkretnej architekturze lub zależności dla skryptu dostępne są tylko dla wybranej architektury, to należy zmienić „all” na właściwą architekturę, np.: i386, amd64, armhf, aarch64, etc.

Następnie w folderze „moj-skrypt_1.0_all” tworzymy podstawową strukturę podkatalogów, która powinna wyglądać następująco:
moj-skrypt_1.0_all/
   /DEBIAN
   /usr/bin
   /usr/share/doc/moj-skrypt
   /usr/share/applications (opcja - jeśli aplikacja ma być dostępna z menu)
   /usr/share/man/man1 (opcja - jeśli udostępniasz strony man)

Podkatalog „DEBIAN”
a. Podkatalog „DEBIAN” powinien zawierać plik „control”, o treści:

Package: moj-skrypt
Version: 1.0
Architecture: all
Maintainer: Ja <moj-adres@cos.pl>
Installed-Size: 169
Depends: bash, coreutils
Section: X11
Priority: optional
Description: Moj Skrypt
Krótki opis skryptu w języku angielskim (preferowany)

– Package – nazwa pakietu
– Version – wersja pakietu
– Architecture – tutaj: all (lub i386, amd64, etc.)
– Maintainer – Imię i nazwisko lub nick opiekuna pakietu + adres e-mail w znacznikach < >
– Installed-Size – rozmiar pakietu – dopiszesz przed budową deb-a
– Depends – zależności wymagane do działania skryptu
– Section – sekcja, np. X11, System, Web, Office, Game, etc.
– Priority – priorytet: optional
– Description: Nazwa Pakietu
+opis od nowej linii

b. Podczas budowy deb-a zostanie dodany plik „md5sums” z sumami kontrolnymi wszystkich elementów deb-a.
c. Jeśli instalacja pakietu wymaga dodatkowej konfiguracji przed lub po instalacji / usunięciu, należy dodać własne, dodatkowe skrypty:
– postinst (skrypt po instalacyjny)
– postrm (skrypt po usunięciu)
– prerm (skrypt przed usunięciem)
– preinst (skrypt przed instalacyjny)

Twój skrypt
Jeśli Twój skrypt jest wykonywalny to powinien być umieszczony w katalogu „/usr/bin” (tutaj):
/usr/bin/moj-skrypt
lub innej lokalizacji, której sktruktura folderów musi być przygotowana w katalogu głównym pakietu.

Umowa licencyjna

Aby wszystko było jasne, określ zasady, na których udostępniasz swoją pracę, w pliku:
/usr/share/doc/moj-skrypt/copyright
najlepiej w języku angielskim.

Przykładowy plik copyright, udostępniający własną pracę na licencji GNU GPL:

Upstream Author(s):
Imię i Nazwisko

Files: *
Copyright (C) 2018 Imię i Nazwisko
License: GNU GPLv3

License:

This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.

Lista zmian

Dobrą praktyką jest zamieszczanie listy zmian (opcjonalnie), jakie zaszły w aplikacji, w pliku changelog:
/usr/share/doc/moj-skrypt/changelog
Jeśli tego nie zrobisz, dpkg wygeneruje ten plik za ciebie.

Wpis do menu

Jeśli Twoja aplikacja będzie posiadała możliwość uruchomienia z menu, to należy dodać plik „desktop”:
/usr/share/applications/moj-skrypt.desktop
o przykładowej treści:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=My Script
GenericName=My Script
Name[pl]=Mój Skrypt
Comment=What does the script do
Comment[pl]=Co ten skrypt robi
Exec=/usr/bin/moj-skrypt
Icon=/scieżka/do/ikony
MultipleArgs=false
Type=Application
Categories=Applications;System

– Icon – ścieżka do ikony może być zmieniona na samą nazwę ikony bez rozszerzenia (png, jpg, svg, etc.), jeśli wybrana ikona znajduje się w systemowym pakiecie zainstalowanych ikon
– Categories – wybierz kategorię menu, w której aplikacja ma być widoczna, np.: System, Accesories, Games, Office, Graphics, Multimedia, Utility, etc.

Budowa pakietu

Skoro wszystkie podkatalogi i pliki są przygotowane, to można przystąpić do budowy pakietu „deb”.
1. Będąc w katalogu ROBOCZYM wchodzimy do przygotowanego podkatalogu z aplikacją (w terminalu):
cd moj-skrypt_1.0_all
2. Sprawdzamy rozmiar pakietu:
du -s
i dodajemy otrzymany wynik (w KB) do pliku:
DEBIAN/control
w sekcji:
Installed-Size:
3. Generujemy sumę kontrolną wszystkich elementów, poleceniem:

find [a-z]* -type f | xargs md5sum >> DEBIAN/md5sums
4. Wchodzimy o jeden poziom wyżej, z powrotem do katalogu ROBOCZEGO:
cd ..
5. Logujemy się na konto root (lub wykonujemy polecenia z opcją „sudo”):
su
6. Zmieniamy właściciela wszystkich podkatalogów i plików pakietu na administratora:
chown -R root:root moj-skrypt_1.0_all
7. Budujemy pakiet „deb”:
dpkg -b moj-skrypt_1.0_all
8. Zmieniamy ponownie właściciela na własnego użytkownika (aby uzyskać z powrotem dostęp do plików z poziomu zwykłego użytkownika):
chown -R ja:ja moj-skrypt_1.0_all

gdzie ‚ja’ oznacza użytkownika systemu.

 
Jeśli pakiet ‚deb’ został zbudowany, można go zainstalować, poleceniem:
dpkg -i moj-skrypt_1.0_all.deb
lub
apt install ./moj-skrypt_1.0_all.deb

I sprawdzić jego działanie w praktyce.

Jeśli wszystko poszło ok, pakiet ‚deb’ można udostępnić szerszej rzeszy użytkowników.

 

Opublikowane: 03 / 08 / 2018

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Strefa Linuxiarzy