dodawanie i usuwanie grup w pakietach
Tomasz Kłoczko
kloczek w rudy.mif.pg.gda.pl
Czw, 8 Maj 2003, 18:53:24 CEST
On Thu, 8 May 2003, Tomasz Kłoczko wrote:
[..]
> ŁTFGO (?) :|
^ s/T/D/ .. oczywiśćie ;>
> Idę coś zjeść i biorę sobie na deser wydruk powyższego bo coś mi tu nie pasuje :>
> Czyżbym coś jeszcze przeoczył ? :>
Ano przeoczyłem .. brakowało w tftp.spec -n tftpd przy triggerach przez co
lądowały one nie w tftpd tylko w tftp 8>
Teraz jest już pełna symeria zachowań ale nadal jakoś działa to nie tak
jak by intuicja nakazywała/chchała :) .. choć jest w tym pewna
konsekwencja i logika:
Egzample:
---
# rpm -U tftpd-0.17-21.i686.rpm
*** post tftpd.
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Reload rlinetd service configuration...............................[ ZROBIONE ]
*** triggerin in utftpd for tftpd
*** triggerin in tftpd for utftpd
*** triggerun in utftpd for tftpd
*** triggerun in tftpd for utftpd
*** postun utftpd.
Zatrzymywanie uslugi rlinetd.......................................[ ZROBIONE ]
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Uruchamianie uslugi rlinetd........................................[ ZROBIONE ]
Removing user tftp.
*** triggerpostun in tftpd for utftpd
Adding user tftp UID=15.
Zatrzymywanie uslugi rlinetd.......................................[ ZROBIONE ]
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Uruchamianie uslugi rlinetd........................................[ ZROBIONE ]
--- i w drugą stronę ..
# rpm -U utftpd-0.2.4-13.i686.rpm -v
Preparing packages for installation...
utftpd-0.2.4-13
*** post utftpd.
Zatrzymywanie uslugi rlinetd.......................................[ ZROBIONE ]
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Uruchamianie uslugi rlinetd........................................[ ZROBIONE ]
Rebuilding utftpd configuration... done
*** triggerin in tftpd for utftpd
*** triggerin in utftpd for tftpd
*** triggerun in tftpd for utftpd
*** triggerun in utftpd for tftpd
*** postun tftpd.
Zatrzymywanie uslugi rlinetd.......................................[ ZROBIONE ]
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Uruchamianie uslugi rlinetd........................................[ ZROBIONE ]
Removing user tftp.
*** triggerpostun in utftpd for tftpd
Adding user tftp UID=15.
Zatrzymywanie uslugi rlinetd.......................................[ ZROBIONE ]
Generating /etc/rlinetd.conf for rlinetd...........................[ ZROBIONE ]
Uruchamianie uslugi rlinetd........................................[ ZROBIONE ]
Na czym polegać ma tu to co mi tu przeszkadza (?) ano to że jak widać
%trigger{in,un} wykonują sie symetrycznie dla obu stron. Logika w tym jest
tak, że w zamyśle triggery wywoływane są wtedy keidy zmienai się status
pakietu na który zakąłdany jest trigger .. no i niestety przy takich
operacjach krzyrzowych jak ta przykładowa rzeczywiscie zmienia sie status
obu pakietów bo jeden jest właśnie instalwoany a drugi wyinstalowyaany.
Jest nieco gorzej niż by się chciało ale nadal nie beznadziejnie :-)
Rozwiazanie może być takie żeby wykorzystać tu dwa triggery:
- %triggerun do sygnalizowania żeby nie usuwać użytkownika i żeby nie
restarttować w %postun całości (co bedzie też wymagało modyfikacji
%postun),
- triggerpostun do tego żeby sygnał ściagnać i dopiero tutaj
przerestartować całość.
Sygnał między tymi skryptami mówgłbyć byc przekazywany plikiem np.
/var/run/<metapackage_name>.trigger. Czyli w tym wypadku byłby to plik
/var/run/tftpdaemon.trigger.
W pierwszym momencie jak rozmawiałem o tym z Andrzejem to padł pomysł
żeby zamiast <metapackage_name> była użyta nazwa użytkownika czyli tftp w
tym wypadku.
IMHO to troche za wąsko ponieważ np. przy fimngerd występuje podobny
przypadek ale tam tylko trzeba przrestartować rc-inetd i zrobić to
mozliwie mało razy.
W innych przypadkach także może chodzić nie tylko o restart czegos czy nie
usuwanie użytkowbnia co wiele innych operacji. W tym sensie użycie
bardziej ogólnego semafora /var/run/<metapackage_name>.trigger byłoby
bardziej sensowne.
Nie wiem czy lokacja w katalogu /var/run jest do przyjęcia. Ważne że musi
być w stałej lokacji. Jakby ktoś miał jakis inny pomysł (może osobny
katalog na operacje triggerów w postaci np. /var/lib/rpm/triggersdir/
który należałby do rpm-a ?)
Tak czy inaczej do finalnego rozwiązania jest już blisko :)
Już to co mam teraz daje efekt poprawny, a to o czym jeszcze myslę to żeby
zredukować ilość restartów przy tego typu operacjach do maks dwuch (teraz
są trzy :)
koments ?
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