Hierophant używa kilku katalogów by wykonywać swoje zadania:
W katalogu /tmp/ przechowuje pewne dane tymczasowe podczas instalowania/usuwania pakietów. Rozmieszcza je tam w plikach nazwanych o nazwach .hbs_*, wśród nich znajduje się też .hbs_LOCK - jest on tworzony przez proces zmieniający bazę danych, aby inne nie wlazły mu przypadkiem w drogę. Czasem, jeśli przerwiesz np. proces instalowania pakietu, plik ten pozostanie i będzie bronił kolejnym procesom dostępu do bazy. Więc będziesz musiał usunąć go ręcznie.
W katalogu /var/lib/hbs/ przechowywane są podkatalogi z meta-danymi każdego zainstalowanego pakietu. Każdy taki podkatalog ma następującą konstrukcję:
(/var/lib/hbs/) | +----------+ | |-pakiet1/ | | | |-INFO | |-FILELIST | |-PROVIDES | |-REQUIRES | |-PREUN | |-PREIN | |-POSTUN | |-POSTIN | +-ETCMD5 | |-pakiet2/ | | | |-INFO | |-FILELIST | |-REQUIRES | +-POSTUN | |-pakiet3/ | | | |-INFO | |-FILELIST | |-PROVIDES | |-REQUIRES | +-ETCMD5 (...) |
Jedynie pliki INFO i FILELIST są obligatoryjne, pozostałe będą istnieć tylko jeśli pakiet ich wymagał. Plik INFO zawiera ogólne informacje o pakiecie, podzielone na wiersze. W pierwszym występuje nazwa i wersja pakietu, w postaci 'name-version-revision'. W drugim umieszczony jest jednowierszowy opis pakietu. W wierszu trzecim umieszczona jest liczba bajtów zajmowanych przez pakiet na dysku (wyliczona z zaokrąglaniem każdego pliku do wielokrotności 4KB). Wiersz czwarty to data instalacji pakietu, wyrażona numerycznie (liczba sekund które upłynęły "since Epoch", czyli od początku roku 1970). Cztery wiersze więc są, ułożone tak by czwarty po trzecim nastąpił, a pierwszy przed drugim. Cztery wiersze tam znajdziesz, a liczbą wierszy tych będzie cztery ;) Plik FILELIST to lista wszystkich plików należących do pakietu, razem
z ich uprawnieniami. Każdy plik dostaje jeden wiersz, np. PROVIDES i REQUIRES zawierają odpowiednio zależności dostarczane i wymagane przez dany pakiet. Ich brak oznacza oczywiście, że pakiet nie ma zależności. Składnia ich jest identyczna - po jednym wierszu na każdą zależność. PREUN i POSTUN to skrypty które zostaną wykonane przy odinstalowywaniu pakietu, zaś PREIN i POSTIN to skrypty które już były wykonywane - przy instalowaniu pakietu. Pliki te wyglądają jak zwykłe wycinki skryptów shellowych, bo, o dziwo, są zwykłymi wycinkami skryptów shellowych. Lubię pisać dokumentację :) ETCMD5 to magiczny plik zawierający oryginalne sumy MD5 plików, które
Hiero uznał za ważne. Przy odinstalowywaniu pakietu zawierajacego takie
pliki Hiero porówna oryginalną sumę z tą, jaką ma teraz plik na dysku. Jeśli
się różnią, to znak że ktoś zmienił plik. Więc Hiero zrobi jego kopię
z odpowiednim rozszerzeniem. Z drugiej strony jeśli Hiero będzie instalował
pakiet z takimi plikami i znajdzie takie stare kopie, to użyje ich zamiast
tego, co paczka przyniosła z sobą (pliki z paczki dostaną stosowne
rozszerzenie i zostaną zapisane obok "cennych plików". Generalnie służy to
temu, by upgrade paczki nie nadpisał jakiegoś cennego, ręcznie edytowanego
pliku konfiguracyjnego - ale by bez oporów nadpisywał pliki, których
użytkownik nie modyfikował. |
W katalogu $HOME/hbs dokonuje się budowania pakietów. A przynajmniej taki ja mam zwyczaj, bo jak się okazuje Hiero radzi sobie świetnie ze zbudowaniem paczki położonej również w innych lokacjach. W podkatalogu $HOME/hbs/DONE standardowo lądują gotowe paczki, choć można to zmienić ustawiając pewną zmienną środowiskową. Strukturę katalogu z paczką już opisywałem, więc urwę niespodziewanie w tym
...momencie :) i przejdę do opisu /etc/hbs. Katalog ten zawiera szablony których Hiero używa przy kontrolowaniu wykonywania poszczególnych sekcji ze skryptów *.plan. Na razie znajduje się tam dziesięć plików:
(/etc/hbs/)
|
+------+
|-ban
|-build
|-defaultplan
|-deps
|-findexecs.py
|-inst
|-keep
|-mods
|-post
+-prep
|
ban zawiera domyślne regexpy dla sekcji [ban] build to shellowy skrypt zawierający w sobie całą automagię sekcji [build] defaultplan to szablon głównego skryptu jaki Hiero uruchamia przy budowaniu pakietu deps to skrypt generujący listy zależności z plików w $HBS_DESTDIR findexecs.py to pythonowa wstawka wyszukująca binaria w $HBS_DESTDIR, na potrzeby stripowania i generowania zależności. inst to skrypt obsługujący automagię sekcji [inst] keep to domyślny regexp dla sekcji [inst] mods to podstawowe regexpy używane przez sekcję [mods] post to skrypt odwalający postprocessing w $HBS_DESTDIR - stripowanie, kompresowanie manuali prep to skrypt obsługujący automagię sekcji [prep] |
Skrypty w /etc/hbs/ można modyfikować stosownie do swoich potrzeb, np. dodać do ban trochę więcej wpisów, albo zmienić coś innego... Nie polecam jednak modyfikować ich bezpośrednio w /etc/hbs/, o wiele lepszym rozwiązaniem będzie założenie sobie prywatnego katalogu ~/.hbs/ i przekopiowanie tam pliku który chcesz zmienić. Hierophant będzie używał tych prywatnych kopii, o ile je znajdzie. Jeśli jakiś plik nie istnieje w ~/.hbs/, to Hiero poszuka go w /etc/hbs.