Jak opravit či aktualizovat ISO obraz Ubuntu?

10. 10. 2011 11:32 (aktualizováno) Petr Krčmář

Nedávno jsem potřeboval aktualizovat ISO obraz RC verze Ubuntu a nechtělo se mi jej stahovat celý znovu. Hledal jsem proto postup, který by mi umožnil aktualizaci. Použil jsem rsync.

Když jsem nedávno připravoval článek o novém Ubuntu 9.04 Jaunty Jackalope, stáhl jsem si nejnovější vývojářskou verzi, kterou jsem pak testoval. Napsat takový článek je totiž běh na delší trať, znamená to instalaci, pořizování videí, obrázků, testování různých částí a podobně a proto je třeba stahovat a pracovat s předstihem.

Později jsem ale potřeboval ostrou verzi Jaunty kvůli instalaci na notebook mé švagrové. Když už jsem měl na disku podobný ISO obraz, nechtělo se mi celé médium stahovat znovu. Přestože je to z dnešního pohledu nějakých nepatrných 700 MB, není nutné za všech okolností vytěžovat servery.

Hledal jsem proto způsob, jak obraz jen „aktualizovat“. Logické mi přitom přišlo použití nástroje rsync, který umí kontrolovat bloky souboru na obou stranách (u klienta a serveru) a poslat jen změny. Skutečně to funguje, protože velké množství zrcadel Ubuntu provozuje také rsync server, takže je možno je takto využít.

Samotná akce je potom poměrně snadná. Stačí lokální ISO soubor přejmenovat tak, aby se jmenoval naprosto stejně, jako soubor nový, tedy ten, který „budeme stahovat“.

$ mv ubuntu-9.04-rc-desktop-i386.iso ubuntu-9.04-desktop-i386.iso

Pak stačí jen zvolit příslušný server a nechat rsync, aby provedl synchronizaci:

$ rsync -zhhP rsync://ucho.ignum.cz/ubuntu-releases/.pool/ubuntu-9.04-desktop-i386.iso .

Začne stahování a stáhne se opravdu jen to, co se změnilo. Pak doporučuji ještě stáhnout z některého zrcadla MD5SUMS a podívat se, jestli sedí kontrolní součty. Mimochodem stejný postup doporučuji i v případě, že se vám klasickým způsobem nepodaří stáhnout nepoškozené ISO. Nemusíte tahat znovu, jen si ho necháte pomocí rsync opravit.

Nějaké tipy a triky

Hledat správný mirror a cestu ke konkrétnímu souboru, nemusí být vždycky sranda. Doporučuji začít na seznamu CD zrcadel a najít si český server podporující rsync. Na něm začněte hledat ISO.

Pokud chcete vylistovat adresář, stačí zavolat

$ rsync rsync://server.neco.cz/

Tedy bez konkrétního souboru. Příkaz vám vypíše adresář. Poslední (a vážný) problém nastává u symlinků. Rsync je standardně nastaven tak, že vám symlink nestáhne a dozvíte se jen, že skipping non-regular file. Doporučuji pak přidat parametr --links, který vám řekne, kam vede onen link (kterých jsou Ubuntu mirrory plné!) a který soubor máte skutečně stahovat.

Všimněte si v příkladu výše, správný soubor byl v podadresáři .pool (ano, s tečkou). Kdo by ho tam hledal? Já ne a poradil až právě symlink. Symlink od reálného souboru poznáte tak, že má na serveru jen pár bajtů, namísto očekávaných 700 MB. Ve výpisu adresáře vám to rsync jasně řekne.

Tak hezkou rsynchronizaci…

Sdílet