"agresywne" skrypty w pakietach
Tomasz Kłoczko
kloczek w rudy.mif.pg.gda.pl
Pią, 31 Sty 2003, 18:12:19 CET
On Thu, 30 Jan 2003, Robert R. Wal wrote:
> On 03.01.30 Andrzej Szombierski pressed the following keys:
>
> > Ostatnio zaczęło mnie trochę denerwować zachowanie skryptów w pakietach
> > wykonywanych np. przy upgradzie. Przykładowo nfs-utils-clients przy
> > upgradzie przemontowuje wszystkie filesystemy nfs. I nie byłoby w tym nic
> > złego, gdyby nie to że przy okazji killuje wszystkie procesy, które z nich
> > aktualnie korzystają. Sytuacja jest jeszcze ciekawsza, jeżeli aktualnie
> > instalowany pakiet znajduje się na takim nfsie :)
>
> Z tym jest problem, który polega na tym, że (chyba) nie da się rozróżnić
> z punktu widzenia skryptów w specu między -e a -U. Standardowo w %preun
> jest wywoływany /etc/rc.d/init.d/skrypt stop.
Gadzinka .. da się i robimy to w wielu miejscach. Przykład z pod ręki
(mysql):
%postun
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
if [ "$1" = "0" ]; then
/usr/sbin/userdel mysql
/usr/sbin/groupdel mysql
fi
to 'if [ "$1" = "0" ]' to właśnie sparawdzanie czy jest to upgrade czy
usuniecie pakietu.
> Co przy skrypcie nfsfs oznacza odmontowanie partycji, a żeby to zrobić,
> trzeba zabić procesy, które na niej grasują.
>
> Jedyną metodą jaką jestem w stanie wymyślić to całkowita rezygnacja z
> restartu nfsfs w %preun, ale to by oznaczało, że po usunięciu pakietu
> zostanie podmontowany fs.
>
> Jakkolwiek tego nie zrobisz, będą jakieś kłopoty.
W przypadku nfsf to jest rzeczywiście byk bo tu nie ma konicznosci
wykonywanai remount.
Co do xdm/kdm/gdm to sparwa nie jest jzu tak jednoznaczna. Chodzi o to, po
pugrade bez restartu zajmowana jest pamięć przez procesy których binarek
juz nie ma. Przy relatywnie małej ilosci pamieci powoduje ot zapychanie
całości. Rozwiazania:
- zamiast restart w %post robuić reload i pzrygotować na to resztę
zawartości pakeitu,
- wymyślić mechaniz per apliakcja który umożliwiłby wychwycenie sytucji w
której można watrunkowo wykonac pełny restart. Np. w przypadku XDM dałby
się chyba przechwycić info o tym czy ma on otwartą jakąś sesję. Tak mi
się wydaje, że to w jakis sposób musi być osiągalne bo głółny proces
musi zapewne wiedzieć że ma odpalone jakieś child procesy. Jęzlie taki
status w samej aplikacji byłby gzieś pzrechowywany to wystarczy że
uruchamiany XDM na jakąś opcję komunikowałby sie tym który jest właśnie
uruchomionym i odpytywał czy mozna mu dać bezpiecznei w czapę czy nalezy
zaczekać.
> > Z kolei xdm przy upgradzie zcina otwartą sesję Xów (w moim przypadku
> > właśnie na tej sesji pracował apt-get...)
> >
> > Czy jest jakiś sposób na zabezpieczenie się przed takimi
> > "niespodziankami"?
>
> Do tych niespodzianek mogę dołożyć jeszcze jedną. Kiedy na moim
> serwerze -- który oprócz serwowania plików, poczty, bycia firewallem jest
> także fontserwerem -- apgrejduję xfs, sesja X spod której ciągnę z niego
> fonty zaczyna głupieć.
Tu jest jakis ogólniejszy feler X w komunikacji miedzy X serwerem i xfs.
Nie może być tak żeby majać powidzmy setke stacji korzystajacych z jednego
xfs nei można było go zrestartować bo wszystko zgłupieje. Wystarczyłaby w
sumie jakaś małąneistabilność czy coś podobnego żeby trzeba było wszystkei
X sesje restartować .. głupie czyż nie ? IMHO tu byk jest niżej i zamiat
go obchodzić choćby należy o nim krzyczeć w skrzynki ludziom od XFree86.
To powinno byc tak jak z NFS .. restart serwer czy jego nawet chwilowy
zanik nie powoduje niczego innego po za chwilowyym wstrzymaniem pewnych
czynności.
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-users-pl