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