Biuletyn PLD nr 5

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Śro, 2 Wrz 1998, 08:00:22 CEST


 -- Wstępniak ----------------------------
 --------------------------------------------

Ze względu na nieregularność tego co robię proszę nie oczekiwać, że
Biuletyn bedzie się ukazywał regularnie (nikt na szczęście się na razie
nie bużył :). O ile będzie to możliwe to będę to robił codziennie. O ile
nie będzie to potrzebne to kolejnego Biuletynu omawiającego bierzące
sprawy związane z pracami poprostu nie będzie z tym, że kolejne
podsumowania w formie B-PLD będą numerowane czyli dzijasi numer 5 ..

 -- Koncik Speca ----------------------------
 --------------------------------------------
 -- atrybuty w sekcji %files ----------------
 --------------------------------------------

Tak jak już powtarzałem kilka razy dobrze by było robić spece w ten sposób
żeby zawartość sekcji %files jednoznacznie i kompletnie opisywała
zawartość pakietu(ów). Niemniej to co ta sekcja zawiera nie ogranicza się
li tylko do suchego wyszczegónienia zawartości pakietu. Od czasu do czasu
okazuje się, że niektóre pliki dobrze by było traktować nieco inaczej. Są
takie dwie grupy plików "szczególnej troski". Należą do nich pliki
konfiguracyjne i logi.

 - pliki konfiguracyjne i makro %config -
 
Otóż czasami w skład pakietu muszą wejść pliki, które muszą mieć możliwość
modyfikacji w trakcie eksploatacji systemu. Czasamii zdarza się też tak,
że po wykonaniu upgrade'u pakietu zawierającego takie pliki nie powinny
być one podmieniane na nowe. Także o ile pakiet się usuwa, to o ile w
trakcie eksploatacji oprogramowania pliki konfiguracyjne zostały jakoś
zmienione i różnią się od dystrybucyjnych to dobrze by było je pozostawić,
bo anóż za dzień czy dwa komuś się odwidzi i zainstaluje pakiet znowu i w
razie czego ponowne dostosowanie konfiguracji programu będzie łatwiejsze.
Do oznaczania takich plików służy makro %config, które działa w sposób
opisany powyżej. Makro to może mieć dodatkowo parametry tworząc dodatkowo
dwa możliwe przypadki użycia makra %config:

 <+>

  %config(noreplace) </file>

  Powoduje, że o ile przy wykonywaniu upgrade'u czy instalowaniu pakietu
  zostanie wykryta obecność pliku </file>, to nie jest on zamazywane, a
  nowy plik konfiguracyjny jest zapisywany pod nazwą </file>.newrpm.
  Typowym użyciem tego makra może być np. /etc/passwd, który gdyby po
  upgradzie pakietu setup został podmieniony to byłby niezły bigos do
  zjedzenia

 <+>

  %config(missingok) </file>

  Powoduje, że brak pliku nie jest zgłaszany przy wykonywaniu "rpm -Va"
  czy "rpm -V <pakiet>". Także próba odinstalowania pakietu zawierającego
  tak oznaczony plik nie wywołuje wyświetlania dodatkowych osztrzeżeń.
  Typowym zastosowaniem powyższego są dowiązania symboliczne w katalogach
  /etc/rc.d/rc*.d/, które w trakcie eksploatacji systemu mogą być usuwane.
  Także przyjeło się, że pliki do wmconfig'a jakie można znaleźć w
  /etc/X11/wmconfig też zwykło się opatrywać %config(missingok).

 - logi i makro %ghost -

Kolejną klasą plików specjalnych są logi, które też powinny być inaczej
traktowane niż inne pliki. Na dobrą sprawę jak się przyjzreć źródłom rpm-a
to łatwo dojąśc, że tak naprawdę makro %ghost jest odpowiednikiem
konstrukcji:

%config(noreplace) %verify(not md5 mtime link size) </file>

i ma oznaczać, że pliki logów mogą bez ostrzeń zmieniać swoj rozmiar
(size), sumę kontrolną (md5), czas modyfikacji (mtime) i mogą być także
linkiem do innej lokacji (linkto) przy jednoczesnym utrzymaniu kontroli
nad włąścicielem, grupą i atrybutami pliku i także podczas upgrade'u nie
powinny być podminiane na nowe.

Z powyższym wiże się używanie makra %verify, czyli:

 - regóły weryfikacji zawartości pakietu i makra %verify i %defverify -

W przypadku logów czy plików konfiguracyjnych widać, że weryfikacja
zawartości pakietu dobrze by było żeby była lekko osłabiana. Do tego służą
makra %verify i %defverify. %defverify ma takie samo znaczenie jak
%defattr z tym, że odnosi się do domyślnych regół weryfikacji tego
wszystkiego co zostanie wymienione w %files. Szczerze mówiąć nie spotkałem
się jeszcze z przypadkiem kiedy trzeba byłoby zmieniać regóły weryfikacji
dla całego pakietu niemniej taka możliwość istnieje.

Makro %verify jak już widać może mieć parametry. Są to po kolei:
  * md5		- weryfikacja sumy kontrolen md5 pliku,
  * size	- weryfikacja rozmiaru pliku,
  * link	- czy plik jest linkiem i do jakiej lokacji wskazuje,
  * user	- weryfikacja użytkownika pliku,
  * group	- weryfikacja grupy pliku,
  * mtime	- weryfikacja czasu modyfikacji pliku,
  * mode	- weryfikacja atrybutów pliku,
  * rdev	- prawdopodobnie jest to weryfikacja pliku o ile jest on
                  plikiem tworzonym przez mknod (nie miałem okazji
                  szczegułowo obejrzeć źródła traktujące powyższe, a i
                  przykładów użycia też nie widziałem).

O ile lista paramertów %verify jest poprzedzona słowem "not" to wszystko
co po nim występuje uzyskuje odwrotne znaczenie. Przyładem w tym wypadku
może być wymieniony powyżej ekwiwalent działania makra %ghost.

Od rpm-a 2.4.99 doszły dodatkowe rozszerzenia językowe, a z nimi pojawiły
się dodatkowe możliwości opatrywania dodatkowymi informacjami pozycji w
%files, czyli:

 - makro %lang -

W tym wypadku zamysł był taki żeby istaniała możliwość zainstalowania
pakietu w formie nie pełnej zależnej od tego jakich języków używać będą
przyszli użytkownicy systemu. W całej dystrybucji co raz więcej jest
zasobów, które potencjalnie mogą zajmować tylko dysk nie będąc nigdy
używanymi. Do takic plików mogą należeć dokumentacje, X zasoby czy pliki
.mo z tłumaczeniami komunikatów. Żeby operacja instalacji zawartości
pakietu był zależn od języków jakich się będzie używać na nowo stawianym
systemie była możliwa trzeba wcześniej na etapie tworzenia opisu dodać
opis zawierający informacje zależne od języków jakich dotyczą. Może
przykład z pakietu kdbg jaki niedawno zrobiłem:

%files
%defattr(644, root, root, 755)
%attr(755, root, root) /usr/bin/
/usr/share/applnk/Applications/*
/usr/share/apps/kdbg
/usr/share/icons/kdbg.xpm
/usr/share/icons/mini/kdbg.xpm

%lang(de) /usr/share/doc/HTML/de/*
%lang(en) /usr/share/doc/HTML/en/*

%lang(cs) /usr/share/locale/cs/LC_MESSAGES/kdbg.mo
%lang(de) /usr/share/locale/de/LC_MESSAGES/kdbg.mo
%lang(es) /usr/share/locale/es/LC_MESSAGES/kdbg.mo
%lang(fr) /usr/share/locale/fr/LC_MESSAGES/kdbg.mo
%lang(hr) /usr/share/locale/hr/LC_MESSAGES/kdbg.mo
%lang(hu) /usr/share/locale/hu/LC_MESSAGES/kdbg.mo
%lang(it) /usr/share/locale/it/LC_MESSAGES/kdbg.mo
%lang(ln) /usr/share/locale/nl/LC_MESSAGES/kdbg.mo
%lang(no) /usr/share/locale/no/LC_MESSAGES/kdbg.mo
%lang(pl) /usr/share/locale/pl/LC_MESSAGES/kdbg.mo
%lang(pt) /usr/share/locale/pt/LC_MESSAGES/kdbg.mo
%lang(ro) /usr/share/locale/ro/LC_MESSAGES/kdbg.mo
%lang(sk) /usr/share/locale/sk/LC_MESSAGES/kdbg.mo
%lang(sv) /usr/share/locale/sv/LC_MESSAGES/kdbg.mo
%lang(zh) /usr/share/locale/zh_CN.GB2312/LC_MESSAGES/kdbg.mo

Powyższy opis jak się przyjrzeć spełnia warunek jaki przypomniałem na
początku tego odcinka czyli tylko na jego podstawie można jednoznacznie
określić co jakie będzie miało atrybuty, użytkownika i grupę. Dodatkowo
zawiera informację umożliwiającą zainstalowanie w ograniczonej postaci.
Reszta omówiwnia %lang jest poprzednim B-PLD.

To na tyle. Następnym razem o ile nie będzie innych propozycji zamierzam
dokłądniej omówić pewne spedcyficzne sekcje speca jak %verifyscripts,
%post, %postun, %pre, %preun, %clean.

 -- Nowe pakiety ----------------------------
 --------------------------------------------

Trochę nowości w miedzyczaie było. Wszystko jest w katalogu
/pub/PLD-stable/test na cenzorze, ktry obecnie zwiera pakiety:

bind, caching-nameserver, dia, gdbm, gnome-core, gnome-games, gnome-libs,
kdbg, lesstif, lynx, m4, nas, ncompress, ncurses, pine, readline, rpm,
screen.

Nie wszystkie zawierają jeszcze tłumaczenia na poziomie speców, a te które
mają w większości pochodzą z tego co zrobił Wojtek (z drobnymi
przeróbkami). Pełna list proponowanych tłumaczeń następnym razem.
Jakby ktoś miał coś tam do dodania/poprawienia to najchędniej
unifited diff-a, którego można wygenerować przez:

$ diff -u <plik.stary> <plik.nowy> > <plik.diff>

i o ten <plik.diff> najbardziej bym prosił.

Jedna uwaga dotycząca mc. Otóż zauważyłem brak %attr(755, root, root) dla
plików /etc/profile.d/* jakie zawierał ten pakiet. Brak powyższego
powoiduje, że brak jest w środowisku basha funkcji mc(), a w środowisku
[t]csh aliasa o nazwie mc. Poprawkę naniosłem ale rewizji pakietu nie
zmieniałe także jeżeli ktoś w między czasie pobrał mc i ma usiebie taki
ewfekt, że wyście z mc kończy działanie w miejscu s kąd się g owywołało, 
a nie w katalogu w którym się było przed wciśnięciem F10, to albo trzeba
dodać a+x na tych plikach albo przeinstalować samo mc. 

Mam nadzieję, że w przypadku mc to już koniec zmian. Także budowanie na
Solarisie daje poprawny efekt.

 -- Krótkie podsumowanie --------------------
 --------------------------------------------

W tej chwili w repozytorium mam 64 spece. Zawartość /pub/PLD-stable/SPESC
jest aktualizowana z crona co godzinę.

Z rzeczy zaległych będę musiał przygotować listę pakietów które jeszcze
trzeba będzie wykoanć w pierwszym rzędzie (jest ich już tylko kilka
potencjalnie) i uruchomić repozytorium anonCVS, co mam nadzieję że dzisiaj
już nastąpi .. niemniej ja muszę sie teraz wyspać ;)

Jeżeli jest jeszcze coś co powinienem zrobić to prosiłbym o przypomninie
(o tej porze już ciężko kojarzę ;).

kloczek
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl