Rollback RPM balíčků

Původní článek (děkuji):
http://www.tachec.org/tipsandtricks/rollback_rpm/

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: