Usprawnienia menedżera pakietów yum
yum-downloadonly
Menedżer pakietów yum dla systemów redhatopodobnych standardowo nie oferuje dość użytecznej funkcji, która umożliwiałaby pobranie pakietu rpm bez jego instalacji…
Jednak system rozszerzeń yum’a oferuje pakiet yum-downloadonly, który zapewnia nam tą funkcję, aby go zainstalować wystarczy:
# yum install yum-downloadonly
jest on dostępny w standardowym zestawie repozytoriów.
Następnie warto dla pewności sprawdzić czy jest on włączony, informację
o tym uzyskamy z pliku /etc/yum/pluginconf.d/downloadonly.conf:
[main]
enabled=1
W celu pobrania interesującego nas pakietu należy podać dodatkowy parametr downloadonly i tak np.:
# yum install --downloadonly unzip
pobrany pakiet trafi do katalogu /var/cache/yum/base/packages w przypadku gdy pakiet należał do grupy base. Dla łatwiejszego zlokalizowania świeżo pobranego pakietu możemy dookreślić jego położenie parametrem downloaddir:
# yum install --downloadonly --downloaddir=/tmp unzip
Niestety w przypadku gdy chcemy pobrać pakiet już zainstalowany w systemie nie możemy skorzystać z yum-downloadonly, lecz z yumdownloader, który dostępny jest w pakiecie yum-utils. Po zainstalowaniu yumdownloader wydajemy proste polecenie, które pobierze nam zadany pakiet do bieżącego katalogu:
# yumdownloader unzip
RPM rollback
Wyobraźmy sobie sytuację, w której wykonaliśmy aktualizację pakietu i
aktualizacja ta zaburzyła stabilność systemu. Pierwszą rzeczą, która
nasuwa się na myśl to wrócić poprzednią wersję pakietu, jednak
odnalezienie jej nie jest sprawą szybką i bezbolesną. Z pomocą
przychodzi nam funkcja rollback dla systemu pakietów RPM, która
umożliwia nam cofnięcie zmian spowodowanych instalacją aktualizowanego
pakietu.
System pakietów RPM ma charakter transakcyjny, oznacza to w przypadku
aktualizacji pakietu wykonanie następujących ,,atomowy'' ciąg operacji:
stworzenie pakietu RPM (repackage) z plików zainstalowanych w systemie,
zainstalowanie nowego pakietu, a gdy instalacja się powiedzie usunięcie
starego pakietu RPM. Wynika z tego, że mechanizm transakcyjny RPM nie
pozostawia (w założeniu) systemu w stanie nieokreślonym, gdy np.
operacja instalacji nowego pakietu się nie powiedzie, a stara wersja
została nadpisana.
Jeżeli chcemy uniknąć kasowania aktualizowanego pakietu, należy podać
parametr repackage przy aktualizacji lub kasowaniu:
# rpm -Uvh --repackage ftp-0.17-35.el5.i386.rpm
wówczas standardowo w katalogu /var/spool/repackage trafi wersja pakietu
ftp sprzed aktualizacji.
W celu jej odtworzenia możemy standardowo skorzystać z rpm, przy czym
rpm nie przelicza dla repackage sumy kontrolnej md5:
# rpm -Uvh --nomd5 --oldpackage ftp-0.17-33.fc6.i386.rpm
lub skorzystać z polecenia rollback podając czas (np. w formacie ,,times ago'') do którego ma system cofnąć zmiany:
# rpm -Uvh --rollback '1 minutes ago'
Podawanie za każdym razem parametru repackage może być uciążliwie, w związku z tym należy stworzyć plik /etc/rpm/macros z następującą zawartością:
%_repackage_all_erasures 1
%_repackage_dir /home/rpm_repackage
druga zmienna wskazuję na nową lokalizację katalogu, do którego trafiać
mają kopie poprzednich wersji pakietów.
Dla dostosowania yum’a do korzystanie z funkcji repackage należy dodać
tsflags=repackage do pliku /etc/yum.conf, wówczas przy aktualizacji:
:::bash
# yum update zip
...
Repackaging : zip [0/2]
...
pojawia się informacja o wykonywaniu operacji repackage.
powered by Hugo and Noteworthy theme