Przywracanie poprzedniej wersji pakietu - PLD

Transkrypt

Przywracanie poprzedniej wersji pakietu - PLD
2016/01/19 23:00
1/4
Przywracanie poprzedniej wersji pakietu
Przywracanie poprzedniej wersji pakietu
Czasami bywa tak, że po aktualizacji systemu jakiś program przestaje działać. Przyczyn tego
problemu może być wiele, jednak najczęściej jest to spowodowane błędami twórcy aplikacji, bądź
niedostatecznym testowaniem nowej paczki. Co w tej sytuacji można zrobić? Odpowiedź oczywiście
nasuwa się sama, przywrócić poprzednią działającą wersję programu.
Poldek
W najprostszym scenariuszu możemy skorzystać z poldka. Jeśli w repozytorium PLD znajduje się stara
wersja paczki „jesteśmy w domu”. Wystarczy w poldku wykonać polecenie:
poldek:/all-avail> install --downgrade nazwa-starszego-pakietu-wraz-z-wersją
Na przykład:
poldek:/all-avail> install --downgrade libpng-1.2.35-2.i686
Zwracam uwagę, że nie postępujemy w tym przypadku jak podczas zwykłej instalacji pakietu.
Konieczne jest użycie opcji –downgrade oraz wskazanie pełnej nazwy pakietu, wraz z jego wersją. Jest
to bardzo ważne. Gdybyśmy tego nie uczynili menadżer pakietów nie wiedziałby którą wersję
przywrócić. Samo wywołanie polecenia instalacji, bez opcji –downgrade, skutkowałoby wyświetleniem
błędu:
poldek:/all-avail> install libpng-1.2.35-2.i686
libpng-1.2.35-2.i686: newer version installed, skipped
Nie ma roboty
Wszystko wygląda bardzo prosto gdy w repozytorium znajduje się starsza wersja programu. Sprawa
zaczyna się komplikować w przypadku kiedy jej nie ma.
RPM
Jeśli aktualizacji systemu dokonaliśmy niedawno istnieje szansa, że poprzednia wersja pakietu
znajduje się w „kopii bezpieczeństwa” RPM (poldek jest dla niego nakładką, z prostym interfejsem).
Wystarczy jedynie przeszukać katalog:
/var/spool/repackage/
i jeśli mamy szczęście, w którymś z jego podkatalogów, znajdziemy ostatnio usuniętą, poprzednią
wersję pakietu.
[root@pld repackage]# pwd
/var/spool/repackage
[root@pld repackage]# find . -name "libpng*"
PLD-users.org - http://www.pld-users.org/
Last
update:
pl:przewodniki:przywracanie-poprzedniej-wersji-pakietu http://www.pld-users.org/pl/przewodniki/przywracanie-poprzedniej-wersji-pakietu
2009/10/01
16:04
./1254352474/libpng-1.2.35-2.i686.rpm
./1254352474/libpng-devel-1.2.35-2.i686.rpm
Aby ją teraz przywrócić musimy „ręcznie” wykonać wszystkie operacje, z których wyręcza nas poldek.
[root@pld 1254352474]# pwd
/var/spool/repackage/1254352474
[root@pld 1254352474]# rpm -qa | grep ^libpng
libpng-1.2.37-1.i686
libpng-devel-1.2.37-1.i686
[root@pld 1254352474]# rpm --test -v -e --nodeps libpng libpng-devel
Zapisano: /var/spool/repackage/1254395300/libpng-devel-1.2.37-1.i686.rpm
Zapisano: /var/spool/repackage/1254395300/libpng-1.2.37-1.i686.rpm
[root@pld 1254352474]# rpm -v -e --nodeps libpng libpng-devel
Zapisano: /var/spool/repackage/1254395313/libpng-devel-1.2.37-1.i686.rpm
Zapisano: /var/spool/repackage/1254395313/libpng-1.2.37-1.i686.rpm
[root@pld 1254352474]# rpm -qa | grep ^libpng
[root@pld 1254352474]# rpm -hiv libpng-1.2.35-2.i686.rpm libpngdevel-1.2.35-2.i686.rpm
ostrzeżenie: libpng-1.2.35-2.i686.rpm: Nagłówek V4 sygnatura DSA: NOKEY, key
ID e4f1bc2d
Przygotowywanie...
###########################################
[100%]
1:libpng
########################################### [
50%]
2:libpng-devel
###########################################
[100%]
[root@pld 1254352474]# rpm -qa | grep ^libpng
libpng-devel-1.2.35-2.i686
libpng-1.2.35-2.i686
[root@pld 1254352474]#
Krótkie omówienie. Rozpoczynamy od usunięcia nowszej wersji pakietu, w tym konkretnym przypadku
są to dwa pakiety: libpng, libpng-devel.
[root@pld 1254352474]# rpm -v -e --nodeps libpng libpng-devel
Zapisano: /var/spool/repackage/1254395313/libpng-devel-1.2.37-1.i686.rpm
Zapisano: /var/spool/repackage/1254395313/libpng-1.2.37-1.i686.rpm
Warto korzystać z opcji –nodeps, która zapewnia, że żadne inne pakiety, poza wskazanymi, nie
zostaną usunięte. Następnie instalujemy starsze wersje:
[root@pld 1254352474]# rpm -hiv libpng-1.2.35-2.i686.rpm libpngdevel-1.2.35-2.i686.rpm
ostrzeżenie: libpng-1.2.35-2.i686.rpm: Nagłówek V4 sygnatura DSA: NOKEY, key
ID e4f1bc2d
Przygotowywanie...
###########################################
[100%]
1:libpng
########################################### [
http://www.pld-users.org/
Printed on 2016/01/19 23:00
2016/01/19 23:00
50%]
2:libpng-devel
[100%]
3/4
Przywracanie poprzedniej wersji pakietu
###########################################
Voila! To wszystko. Dla pewności możemy sprawdzić za pomocą grepa, czy wszystkie operacje się
powiodły, jak to uczyniłem w przykładzie.
Korzystanie z „kopii bezpieczeństwa” ma jeszcze jedną ważną zaletę. Pakiety znajdują się od razu u
nas na dysku i nie musimy ściągać ich ponownie z repozytorium.
Pozostał nam jeszcze jeden przypadek do omówienia. Co robić kiedy ani w poldku, ani w „kopii
bezpieczeństwa” nie ma naszego programu?
CVS
Jeśli chcemy sprawę rozwiązać sami, możemy zbudować odpowiedni pakiet z CVS. Musimy jedynie
wskazać builderowi odpowiednią rewizję (opcja -r), aby zbudował dobrą wersję a nie najnowszą.
Właściwy numer znajdziemy przeglądając speca dla danej paczki.
Załóżmy, że chcemy zbudować wersję 1.2.35 (wydanie drugie) pakietu libpng. Zaglądamy do speca i
widzimy:
Revision 1.165 2009/02/27 11:25:36 glen
- release 2
Revision 1.164 2009/02/20 13:27:44 adamg
- cve entry for 1.2.35
Czyli w naszym konkretnym przypadku polecenie miałoby postać:
[dirdival@pld packages]$ builder -r 1.165 libpng
Jeśli uda nam się zbudować paczkę po prostu instalujemy ją poldkiem.
Ostatnia możliwość to zdanie się na łaskę, bądź niełaskę innych, czyli poproszenie na forum bądź
liście PLD o konkretną paczkę.
Podsumowanie
Czasami bywa tak, że o problemie z systemem dowiadujemy się jakiś czas później, niż w momencie w
którym on zaistniał. Namierzenie „winnego” może być wtedy kłopotliwe. RPM może nam w tym
pomóc, pozwala on bowiem na wyświetlenie listy zainstalowanych pakietów, posortowanej po dacie
aktualizacji:
rpm -qa --last
Polecam wszystkim przetestowanie choć raz procedury przywracania poprzedniego pakietu a
zwłaszcza metody z RPM. Raz felerna aktualizacja systemu zainstalowała u mnie niedziałającą wersję
PLD-users.org - http://www.pld-users.org/
Last
update:
pl:przewodniki:przywracanie-poprzedniej-wersji-pakietu http://www.pld-users.org/pl/przewodniki/przywracanie-poprzedniej-wersji-pakietu
2009/10/01
16:04
poldka. Wtedy musiałem posiłkować się opisanymi wyżej „sztuczkami”.
Na koniec najważniejsze. Nie zapomnij o zaistniałych problemach z paczkami poinformować innych
użytkowników PLD. Możesz to uczynić na forum lub liście dyskusyjnej deweloperów.
From:
http://www.pld-users.org/ - PLD-users.org
Permanent link:
http://www.pld-users.org/pl/przewodniki/przywracanie-poprzedniej-wersji-pakietu
Last update: 2009/10/01 16:04
http://www.pld-users.org/
Printed on 2016/01/19 23:00