Rollback RPM balíčků
Pokud provádíte update nainstalovaných balíčků, tak se čas od času může stát, že některý updatovaný software nefunguje tak jak má a v tuto chvíli zcela jistě zatoužíte po funkci, která by provedla krok zpět - tedy by vrátila zpět původní funkční balíček namísto nového updatovaného. Naštěstí takováto funkce již v balíčkovacím systému RPM existuje a jmenuje se rollback.
Jak to funguje?
Pokud máme rollback zapnutý (což defaultně není), tak máme možnost se vrátit prakticky do libovolného stavu v minulosti - tedy teoreticky až do stavu, který byl bezprostředně po instalaci dané distribuce.
Výhody
- možnost vrátit změny v instalaci/updatu/smazání balíčků
- možnost nastavit hraniční datum do kterého je povoleno provádět rollback
Nevýhody
- větší nároky na diskový prostor - balíčky se duplicitně umísťují do cache
- rollbackování neřeší případné změny v konfiguračních souborech, toto je potřeba pohlídat ručně
- rollback balíčků s větším počtem závislostí nemusí proběhnout vždy korektně
Nastavení
Nastavení je velice jednoduché stačí přidat dané direktivy do následujících souborů:
/etc/yum.conf
:
tsflags=repackage
/etc/rpm/macros
:
%_repackage_all_erasures 1
Případné nastavení hraničního bodu do kterého povolíme rollbacky provedeme zapsáním direktivy %_unsafe_rollbacks
s daným časem (v sekundách od 1.1.1970) do souboru /etc/rpm/macros
. Čas v sekundách od 1.1.1970 získáme následujícím příkazem:
date --date="7/20/2006" +%s 1153346400
/etc/rpm/macros
:
%_unsafe_rollbacks 1153346400
Pokud chceme změnit cache s RPM balíčky pro rollback, která standardně leží v adresáři /var/spool/repackage/
, tak můžeme použít direktivu:
/etc/rpm/macros
:
%_repackage_dir /my_directory
Příklady
Provedení rollbacku:
rpm -Uvh --rollback '10:00 am' rpm -Uvh --rollback '6 hours ago' rpm -Uvh --rollback 'july 20'
Zjištění změn v rollback databázi:
up2date --list-rollbacks install time: Thu Jul 20 16:40:48 2006 tid:1153406448 [-] pine-4.64-1.2.el4.rf: