[Th] Upgrade apport - jak rozumieć ten błąd?
Tomasz Pala
gotar w polanet.pl
Śro, 9 Kwi 2008, 20:32:52 CEST
On Wed, Apr 09, 2008 at 18:00:52 +0200, Patryk Zawadzki wrote:
> > Żeby uzupełnić - to jest zarzut także do Ac. W zasadzie nic, co korzysta
> > z webapps, nie mogę normalnie zaktualizować, bo robi swoje czary-mary na
> > moich plikach i z mojego punktu widzenia - psuje je.
>
> Powinno tworzyć tylko symlinki. Jak psuje?
Ostatni upgrade phpPgAdmina usunął mi link
/etc/httpd/httpd.conf/99_phpPgAdmin.conf
O ile był on tworzony w %post oryginalnego pakietu i jego usunięcie
można w ten sposób tłumaczyć, to jednak nie należał do pakietu, nie był
oznaczany żadnymi flagami (%ghost %config %verify itp.) i w gruncie
rzeczy mógłby być dowolnym linkiem do jakiegoś alternatywnego pliku
konfiguracyjnego - w ten sposób do webapps trafi jakiś tam obcy plik
/etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave, a ja nie będę wiedział,
co powinno być zlinkowane - krótko mówiąc tu powinno być sprawdzenie,
czy kasowany link wskazuje tam, gdzie był zakładany starym pakietem.
Po drugie: konstrukcje typu poniższego zamieniłbym w ten sposób:
if [ -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave ]; then
if [ -d /etc/apache/webapps.d ]; then
cp -f /etc/webapps/phpPgAdmin/apache.conf{,.rpmnew}
- cp -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave /etc/webapps/phpPgAdmin/apache.conf
+ mv -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave /etc/webapps/phpPgAdmin/apache.conf
fi
if [ -d /etc/httpd/webapps.d ]; then
cp -f /etc/webapps/phpPgAdmin/httpd.conf{,.rpmnew}
- cp -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave /etc/webapps/phpPgAdmin/httpd.conf
+ mv -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave /etc/webapps/phpPgAdmin/httpd.conf
fi
- rm -f /etc/phpPgAdmin/apache-phpPgAdmin.conf.rpmsave
fi
zagrożenia - w przypadku, gdy ktoś nie będzie miał
/etc/{apache,httpd}/webapps.d (bo sytuacja wymusiła na nim nodepsa, bo
rpm czy poldek zgłupiał z kolejnością, bo akurat sobie przenosił
katalog, bo cały katalog z konfiguracją apacha ktoś ma podlinkowany), to
nie będzie miał ani kopii, ani oryginału.
> Tego nie robi post, tylko rpm. Usuwasz katalog (przez odinstalowanie
> ostatniego właściciela) - usuwasz zawartość. Jak byś chciał inaczej?
Nie, rpm nie usuwa niepustych katalogów - swoje pliki trzymałem pod
innymi nazwami (żeby mi upgrade nie nadpisał, bo to przecież nie było
%config(noreplace) oznaczone), więc pozostały w katalogu. Stary rpm miał
jeszcze taką miłą cechę, że w takim przypadku wyrzucał informację, że
nie usuwa katalogu. A w którym miejscu %post zostało usunięte -
pokazałem linkiem niżej.
> > http://cvs.pld-linux.org/cgi-bin/cvsweb/SPECS/xkeyboard-config.spec?r1=1.7&r2=1.8
>
> Nie ma innego sposobu, żeby zastąpić symlink zwykłym plikiem albo
> katalogiem. Jeśli to nie był symlink, to ścigaj autora, żeby odkręcił.
To był katalog, który został zastąpiony plikiem. Inny sposób jest -
naprawienie rpma, żeby obsługiwał takie sytuacje bez odwoływania się do
rm -rf. I zauważcie - w tym przypadku wystarcza, aby nie używać opcji
-r, w myśl zasady, że lepiej przerwać wykonywanie transakcji rpma, niż
usunąć czyjeś pliki - bo skoro pozostało COŚ w katalogu, COŚ nienależące
do pakietu, to musi mieć innego właściciela.
--
Tomasz Pala <gotar w pld-linux.org>
Więcej informacji o liście dyskusyjnej pld-devel-pl