O víkendu jsem vyměnil disk v počítači, instaloval znovu Debian a chtěl jsem zachovat všechny balíčky, které jsem měl na předchozím disku.
V sobotu jsem se konečně rozhoupal a vyměnil jsem si po čtyřech letech disk v notebooku z klasického rotačního na SSD. Je to velká paráda, ale o tom teď psát nechci. Rozhodl jsem se při té příležitosti přejít z 32bitového Debianu na 64bitový. Před třemi lety jsem tu psal, že k takové změně není důvod. Pořád si myslím, že se bez problémů dá pokračovat na 32 bitech, ale už tak nějak nazrál čas a když jsem měnil disk, tak jsem vyměnil i bity.
Mimochodem, asistoval mi při tom Ondra Caletka, kterému patří dík. Fungoval jako chytrý rádce, morální podpora a hlavně jsme si mohli v klidu povídat, zatímco počítač dělal takové ty dlouhé akce jako je instalace, rsyncování dat ze starého disku a podobně.
Původní představa byla taková, že provedu debootstrap ze starého systému. Jak se ukázalo, komplikovala to výměna architektur, takže jsme se rozhodli jít cestou nejmenšího odporu a provést čistou instalaci z flash disku. Samozřejmě jsme použili můj oblíbený netinstall, takže se všechny balíčky pěkně tahaly čerstvé z internetu.
Samozřejmě jsem chtěl zachovat všechny balíčky ze stávajícího systému, což naštěstí v Debianu není problém. Pokud byste to někdy potřebovali, popíšu sem jednoduchý postup. Varování na začátek: do nového systému si doinstalujte dselect. Je to stará utilita pro správu balíčků, která se už běžně nepoužívá, protože ji nahradil apt. Při tomto postupu ji ale budete potřebovat.
Ve starém systému si jednoduše zálohujete seznam nainstalovaných i odinstalovaných balíčků:
petr@stary# dpkg --get-selections > balicky
Soubor balicky
si přenesete do nového systému, kde musíte mít zmíněný dselect. Musíte si také přenést zdroje, ze kterých se instalují balíčky. Ty najdete v adresáři /etc/apt/sources.list.d/
a v souboru /etc/apt/sources.list
. Pokud nebudete mít příslušné zdroje k dispozici, některé balíčky se samozřejmě nenainstalují.
Teď na novém stroji provedete aktualizaci databáze balíčků ve zmíněném dselectu. Poté načtete seznam balíčků ze svého souboru balicky
a tím je označíte k instalaci. Nakonec je necháte nainstalovat.
petr@novy# dselect update petr@novy# dpkg --set-selections < balicky petr@novy# apt-get dselect-upgrade
A to je vše. Poslední příkaz vezme balíčky označené k instalaci a prostě je nainstaluje. Ještě jeden tip: Kdyby se něco nepodařilo a vy byste potřebovali balíčky označené k instalaci zase odznačit a začít od začátku, pokužijte k dpkg
parametr --clear-selections
.
Konfiguraci si už pak samozřejmě řešíte sami, ale z uživatelského hlediska stačí zkopírovat domovské adresáře a bude to fungovat. Systémovou konfiguraci si pak doladíte ručně, ideálně podle záloh starého /etc
.
[1] To nevím, ale mně bez dselectu neproběhlo ani označení balíčků. Ječelo to, že je nezná a nemá je v databázi, přitom jsem aptitude normálně aktualizoval. On totiž dpkg použije právě databázi z dselectu, kterou je třeba aktualizovat, jak jsem popsal. Já jsem taky příznivec aptitude, ale nevadí mi na takovou akci použít dselect.
dpkg --get-selections ale nezachová např. informace o tom, zda byl daný balíček nainstalován jako závislost. To může zanechat spoustu nepořádku při odstraňování starších věcí / dalším upgradu.
Lepší řešení (i když více "hacky") je třeba:
aptitude search ~i | grep "^i " | awk '{ print $2 }'
(pozor, vynechá to odinstalované balíky s existující konfigurací, částečně nainstalované balíky, apod.)
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 112 833×
Přečteno 89 918×
Přečteno 73 318×
Přečteno 58 204×
Přečteno 54 486×