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:

# yum update zip

...

 Repackaging    : zip                                               [0/2]

...

pojawia się informacja o wykonywaniu operacji repackage.