ChangeBlog  •  Archiwum  •  Kategorie  •  Artykuły  •  Galeria  •  Czytelnicy  •  Rupieciarnia
RSS wpisów  |  RSS komentarzy
System pakietów HBS

Hierophant z Grepi Hierophant Build System (HBS) to alternatywny "zarządca pakietów" - jest w stanie nadzorować budowanie (kompilację) pakietów, instalowanie, usuwanie, upgrade-owanie, pozwala też odpytywać informacje o zainstalowanych pakietach. Posiada również prosty tryb weryfikacji zainstalowanych plików.
Czyli nic specjalnego, wszystko czego można się spodziewać po zarządcy pakietów.

Hierophant nie ma zwalczać już istniejących i rozpowszechnionych systemów (jak np. RPM), przeznaczony jest raczej do zastosowań prywatnych. Np. w systemach typu LFS, gdzie domyślnie nie ma żadnego systemu pakietów - a istniejące systemy pakietowania są albo zbyt skomplikowane w użyciu dla pojedynczego człowieka, albo niewygodne w obsłudze, albo znowu zbyt prymitywne. Hierophant może znaleźć zastosowanie w niszach poza granicami świata dystrybucji linuksowych. Poza granicami klanów Mandrake, Debian czy Aurox, na rubieżach gdzie żyją jeszcze prawdziwi pionierzy :) Jeśli masz zamiar używać własnoręcznie kompilowanego systemu, to Hierophant może zapewnić Ci komfort zorganizowanego zarządzania oprogramowaniem.

Hierophant naśladuje wybrane cechy różnych istniejących systemów pakietowania, zarówno tych prostych (Slackware) jak i nadmiernie skomplikowanych (RPM). Aby uprościć konstrukcję Hiero używa tekstowej bazy danych, podobnej do tej z systemu Slackware, ale przechowującej więcej informacji o zainstalowancyh pakietach (np. nadzorującej oryginalne uprawnienia zainstalowanych plików). Łączy to z systemem automatycznie generowanych zależności międzypakietowych, które jednak ogranicza do niezbędnego (sensownego) minimum. Każdy pakiet może posiadać do czterech różnych skryptów "okołoinstalacyjnych", wykonywanych w razie potrzeby przed i po instalacji/usunięciu pakietu.

Operacje dotyczące instalowania/usuwania pakietów są obsługiwane przez zwykłe shellowe narzędzia (tar+coreutils). Mimo tego Hierophant zachowuje wysoką wydajność i bezpieczeństwo, wykonując większość operacji na swojej bazie co najmniej tak samo sprawnie jak RPM, pozwalając też np. na upgrade glibc bez przerywania normalnej pracy systemu. W przyszłości Hierophant może dojść do w pełni "niezależnej" formy, pozwalającej mu działać również w systemach z uszkodzonymi glibc - choć nie jest to moim priorytetem ponieważ Hiero ma obsługiwać systemy LFS, więc nie będzie raczej nigdy instalował systemów "od zera" z binarnych pakietów, bez obecności żadnego, choćby minimalnego działającego Linuksa. Same pakiety przechowywane są w postaci archiwów TAR, dzięki czemu można je w razie potrzeby "rozbierać" na części używając zwykłych, ogólnodostępnych narzędzi - można też stworzyć pakiet bez używania dedykowanych narzędzi Hierophanta, można zmodyfikować istniejący już pakiet itp. Zwykle to niepotrzebne, ale dobrze wiedzieć, że w razie czego można np. zainstalować pakiet używając samego tar-a. Wzorowałem się tu częściowo na systemie Slackware, który wydaje mi się pod tym względem dużo bardziej "przystępny" niż inne rozwiązania (które zwykle też używają jakiegoś powszechnego formatu, jak tar czy cpio, ale owijając go w dodatkowe dane, jakieś magiczne nagłówki itp. - skutecznie utrudniające niskopoziomową pracę z pakietem).

Część budująca pakiety jest napisana w Pythonie mieszanym z shellem - daje to wygodny poziom abstrakcji. Jest to "duża" zależność, ale konieczna. Bez wykorzystania tego narzędzia Hiero nie byłby w stanie funkcjonować na obecnym poziomie. Wszystkie ambitniejsze systemy tego typu na którymś etapie swojej pracy sięgają po wysokopoziomowe języki skryptowe, więc dlaczego nie robić tego od razu i oszczędzić sobie pracy związanej z wymyślaniem na nowo (często błędnie!) już istniejących i obecnych w systemie rozwiązań... A dlaczego akurat Python, a nie jakiś inny język? Bo Python ma wszystko co potrzebne już w standardowej jego dystrybucji, nie trzeba doinstalowywać żadnych niestandardowych modułów, a na dodatek od dawna zalega już na mojej liście "rzeczy do poznania". Traktowałem to trochę jak interesujące "ćwiczenie z pythona". Dodatkowo dzięki bardzo dobremu pythonowemu modułowi "tarfile" możliwe jest tworzenie paczek zawierających pliki o dowolnych uprawnieniach - dzięki czemu można budować pakiety nie wychodząc poza uprawnienia zwykłego usera, ograniczając używanie "roota" do samej czynności instalacji pakietu.

Tak jak "typowy użytkownik dystrybucyjny" potrzebuje wygodnego sposobu pobierania i instalowania pakietów, tak użytkownik LFS potrzebuje wygodnego budowania. Dlatego też w Hierophancie starałem się wykorzystać wiele z moich doświadczeń z samodzielnym budowaniem pakietów. Hierophant zakłada, że budowanie powinno odbywać się jak najmniejszym nakładem sił. To oznacza daleko posuniętą automatyzację, dzięki której typowy, prosty pakiet można zbudować posługując się kilkoma zaledwie linijkami poleceń. Jednocześnie pozostawiłem miejsce na omijanie automatycznych procedur i bardziej "bezpośrednie" wpływanie na kompilację pakietu, zrównując możliwości Hierophanta z tymi oferowanymi przez RPM. Hierophant ma za zadanie uprościć proces budowy pakietu do minimum, posługując się inteligentnymi automatami i (modyfikowalnym!) systemem "ustawień domyślnych". Naprawdę wiele pakietów można zbudować po podaniu jedynie ich nazwy, wersji i jednowierszowej charakterystyki (i ewentualnie jakichś niestandardowych opcji dla ./configure). Szczegóły znajdziesz w pozostałych częściach tego działu.