Fragmenty artykułów z książek wydawnictwa Helion.pl
Dodano: czwartek, 17 listopad 2011r.
Poradnik przeznaczony jest nie tylko dla zaawansowanych użytkowników i administratorów systemu Ubuntu Serwer ale także dla początkujących użytkowników chcących rozwijać swoje umiejętności, które będzie można wykorzystać w Ubuntu zainstalowanym na domowym komputerze.
Przedstawione przykłady pochodzą z Ubuntu, ale analiza będzie dotyczyła ogólnej koncepcji kryjącej się za pakietami.
Druga część rozdziału nr 3 Zarządzanie pakietami z książki:
Ubuntu Serwer. Oficjalny podręcznik. Wydanie II
Jak już wcześniej wspomniano, projekt Ubuntu jest zbudowany na bazie dystrybucji GNU/Linux Debian. Wśród wielu innych technologicznych spuścizn system Ubuntu odziedziczył także system pakietów Debiana. W rzeczywistości wielu głównych programistów zaangażowanych na samym początku w projekt Ubuntu preferowało system pakietów Debiana, gdyż stanowił on atrakcyjny punkt wyjścia i wyróżniał się wśród wielu innych dystrybucji GNU/Linux. Z tego powodu niemal wszystkie aspekty zarządzania pakietami — począwszy od formatów aż po narzędzia — są identyczne w projektach Debian i Ubuntu. W wielu przypadkach niezmodyfikowany pakiet Debian może być po prostu zainstalowany w Ubuntu. W niemal wszystkich sytuacjach niezmodyfikowany pakiet kodu źródłowego Debiana może być zbudowany w systemie Ubuntu. Tak więc pierwszym krokiem będzie tutaj dokładne omówienie formatu Ubuntu DEB, aby Czytelnik zrozumiał anatomię pakietu oraz sposób implementacji funkcji przedstawionych w poprzednich sekcjach.
Pakiety DEB zawierające kod źródłowy są zwykle wyrażone w postaci formatu składającego się z dwóch lub trzech plików, choć równie dobrze pakiety mogą składać się ze znacznie większej liczby plików. Oznacza to, że sam pakiet zawiera pewną liczbę plików, a pobranie „pakietu kodu źródłowego” może w rzeczywistości wymagać pobrania wielu różnych, małych plików. Pakiety kodu źródłowego mogą być sklasyfikowane jako rodzime lub nierodzime pakiety DEB. Różnica między nimi polega na tym, że rodzimy DEB to pakiet oprogramowania, gdzie wersje upstream i w pakiecie DEB absolutnie się nie różnią. W większości przypadków rodzime pakiety są charakterystyczne dla Ubuntu, Debiana lub innej dystrybucji bazującej na Debianie. Innymi słowy, rodzimy pakiet DEB nie wymaga wprowadzania żadnych zmian w celu możliwości utworzenia pakietu. Pakiet DEB kodu źródłowego zawsze składa się z archiwum „pierwotnego” kodu źródłowego w formacie skompresowanego przez GNU gzip pliku tar (plik z rozszerzeniem .tar.gz) oraz pliku DSC, w którym wymieniono zawartość pakietu i który może być uważany za „jądro” pakietu kodu źródłowego. Przykładowa zawartość pliku DCS dla dostarczanego przez autora programu o nazwie most przedstawia się następująco:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.0
Source: most
Binary: most
Architecture: any
Version: 5.0.0a-1
Maintainer: Benjamin Mako Hill
Standards-Version: 3.7.3
Build-Depends: debhelper (>= 4), libslang2-dev
Files:
30f2131b67f61716f6fe1f65205da48b 155233 most_5.0.0a.orig.tar.gz 07e3eb05ad5524fe6d885f5cdc2eb902 20160 most_5.0.0a-1.diff.gz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFH4IoAic1LIWB1WeYRAjyOAKCrLCfuZA7b8JcvYTFYeuHrF7r34wCfVTBS/jGUfIrELNq173sM9CorZA4= =/Cia
-----END PGP SIGNATURE-----
Powyższy plik jest podpisany za pomocą klucza GnuPGP w celu zapewnienia spójności i identyfikacji jego autora. Jeżeli Czytelnik sprawdzi podpis za pomocą GPG, to przekona się, że plik został podpisany z użyciem klucza PGP autora pakietu. Plik DSC zawiera także informacje dotyczące wersji formatu źródłowego (w tym przypadku to „stary” format 1.0), nazwę pakietu kodu źródłowego, wersję pakietu (podzieloną na wersję kodu źródłowego upstream oraz wersję pakietu po znaku minus), imię i nazwisko oraz adres e-mail twórcy pakietu oraz informacje na temat architektury, w oparciu o którą działa dane oprogramowanie. Ponadto plik zawiera informacje o wersji polityki (oznaczonej jako „Standards”) zastosowanej podczas tworzenia oprogramowania, informacje o oprogramowaniu wymaganym do zbudowania tego pakietu, a także listę innych plików znajdujących się w tym pakiecie kodu źródłowego wraz z ich wielkościami oraz sumami kontrolnymi MD5.
W rodzimym pakiecie DEB znajduje się tylko jeden skompresowany plik tar (.tar.gz). W przypadku nierodzimych pakietów dostępne będą pliki dodatkowe, przedstawiające wszystkie zmiany wprowadzone w pakiecie. W ten sposób wszystkie zmiany wprowadzone przez twórcę pakietu są w pełni jawne i widoczne. Czasami wynika to z warunków licencji, ale zwykle celem jest to, aby inni użytkownicy dokładnie wiedzieli, co zrobił twórca pakietu oraz co zostało zmienione. W ten sposób osoba odpowiedzialna za pakiet może łatwiej wychwycić ewentualny błąd w pakiecie. Zmiany wprowadzone w pakiecie zazwyczaj są przedstawione w skompresowanym za pomocą gzip pliku diff, w którym wymienione są wszystkie różnice między kodem źródłowym pakietu i pierwotnym kodem źródłowym. W przypadku przedstawionego powyżej pakietu plik diff to most_5.0.0a-1.diff.gz. W nowszych wersjach formatu pakietu DEB dla kodu źródłowego dozwolone jest umieszczanie dodatkowych plików tar przedstawiających dodatki lub zmiany w stosunku do pierwotnego kodu źródłowego, o ile będą one wymienione w pliku DSC na znajdującej się tam liście plików.
Po rozpakowaniu i wprowadzeniu wszystkich wymaganych poprawek każdy pakiet DEB kodu źródłowego zostanie rozpakowany do pojedynczego katalogu o nazwie pakietu wraz z numerem wersji (na przykład most-5.0.0a) i obowiązkowym podkatalogiem o nazwie debian. W większości pakietów niemal wszystkie zmiany w kodzie źródłowym są przeprowadzane właśnie w wymienionym katalogu. Sam katalog zawiera pewną liczbę plików — jest ich znacznie więcej niż miejsca na ich omówienie tutaj. Najważniejsze z nich to pliki control i rules. Większość informacji o pakiecie kodu źródłowego znajdujących się w pliku control można znaleźć także w pliku DSC, który jest generowany automatycznie na podstawie danych pliku control; natomiast informacje dodatkowe opisują każdy pakiet binarny. Plik control przedstawia więc wszystkie powiązania pomiędzy pakietami, między innymi Depends, Conflicts, Provides, Replaces, Recommends, Suggests oraz Enhances. Pierwsze cztery są określane jako „twarde” i są najważniejsze. Natomiast Suggests i Enhances są rzadko używane przez jakikolwiek program. W pliku control można także znaleźć opis programu, zarówno w postaci skróconej do pojedynczego wiersza, jak i dłuższą wersję. Poniżej przedstawiono przykładową zawartość pliku control (tutaj dla wspomnianego już wcześniej programu most):
Source: most
Section: text
Priority: optional
Maintainer: Benjamin Mako Hill
Standards-Version: 3.7.3
Build-Depends: debhelper (>=4), libslang2-dev
Package: most
Architecture: any
Depends: $
Description: Pager program similar to more and less
Dłuższa wersja opisu została usunięta z powyższych danych wyjściowych, ale w rzeczywistości ten tekst znajduje się poniżej pokazanego tutaj ostatniego wiersza, jest wcięty o jedną spację, a każdy akapit jest oddzielony pojedynczą kropką. Jak już wcześniej wspomniano, plik control składa się z serii akapitów. Pierwszy zawsze rozpoczyna się od słowa Source: i zawiera informacje dotyczące pakietu kodu źródłowego. Każdy kolejny przedstawia opis pojedynczego pakietu binarnego. W omawianym przykładzie jest tylko jeden pakiet binarny, który podobnie jak pakiet kodu źródłowego ma nazwę most. Taka sytuacja — pojedynczy pakiet kodu źródłowego tworzący pojedynczy pakiet binarny o takiej samej nazwie — jest bardzo często spotykana.
Plik rules to po prostu plik GNU Make makefile. Zawiera wszystkie reguły makefile potrzebne do utworzenia i zbudowania pakietu. Uruchomienie pliku binarnego w rozpakowanym katalogu pakietu kodu źródłowego skutkuje utworzeniem pakietu Debian, który będzie umieszczony w katalogu nadrzędnym (../), o ile system ma zainstalowane wszystkie wymagane programy zależne. W większości przypadków oprogramowanie zostanie zbudowane i „zainstalowane” w serii podkatalogów w katalogu debian. Następnie te pliki w ich położeniu tymczasowym będą umieszczone w pakiecie jako jego zawartość.
Dodatkowe pliki w katalogu debian obejmują pliki z informacjami na temat praw autorskich, zmian wprowadzonych w pakiecie, opcjonalne skrypty uruchamiane przed instalacją lub usunięciem pakietu lub po tych czynnościach, dodatkowe dane konfiguracyjne plus to wszystko, co twórca pakietu chce w nim umieścić.
Pakiety binarne Debiana są bardzo prostym formatem, więc nie trzeba im tutaj poświęcać zbyt dużo miejsca. Co ważniejsze, prawie nigdy nie są modyfikowane ręcznie. Pakiety binarne są jedynie instalowane i usuwane. Aby wprowadzić zmiany w pakiecie binarnym, w pierwszej kolejności trzeba zmodyfikować pakiet kodu źródłowego, a następnie na jego podstawie zbudować nowy pakiet binarny. W systemach Ubuntu i Debian pakiet binarny to pojedynczy plik w archiwum w formacie ar. Wymienione archiwum zawiera plik debian-binary z serią wierszy rozdzielonych znakami nowego wiersza. W chwili obecnej ten plik przechowuje jedynie numer wersji formatu.
Drugi plik wymienionego archiwum to również archiwum, tym razem o nazwie control.tar.gz; zawiera on informacje kontrolne o pakiecie (zgodnie z przedstawionym wcześniej opisem). Trzeci i ostatni element archiwum nosi nazwę data.tar.gz i zawiera archiwum systemu plików.
cdn.
Pierwsza część:
Wprowadzenie do zarządzania pakietami
http://www.linuxportal.pl/artykuly/wprowadzenie-do/.../1-id102366
Wpisy z bloga/ TOP