Mám 32bitový systém, který běží na 64bitovém procesoru. Jak to převedu na 64bitovou verzi bez přeinstalace? Někde jsem viděl, že je to proveditelné díky novému rámci Multiarch.
Přijatá odpověď:
TL;DR: Je to proveditelné, ale složité. Níže jsem nastínil alternativu.
A teď dlouhý popis , a berte to s rezervou, protože jsem možná nezvolil nejlepší cestu:
Je to možné a tady je to, co jsem dělal poslední dvě noci:
Na wiki je záznam popisující starou školu bez podpory multiarch. Je to užitečné pro opravu poškozených balíčků.
Chcete-li provést migraci základního systému, postupujte takto:
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
Některé z vašich balíčků jsou pak amd64, ale většina zůstane i386. apt-get upgrade
se postará o některé balíčky, apt-get -f install
opraví některé chyby, ale většina balíčků zůstane i386. Pokud se s tím chcete vyrovnat, přeskočte tu záludnou část 😉
Pomocí dpkg --get-selections | grep :i386
vrátí všechny vaše balíčky, které budete muset stále migrovat.
Můj další nápad byl udělat:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Ale ukázalo se to jako špatný nápad:některé balíčky nejsou dostupné v amd64 (např. libc6-i686), apt-get bude zmatený a spousta balíčků se nainstaluje do obou verzí. V aptitude je třeba udělat hodně manuální práce.
Více potíží: Některé základní balíčky lze nahradit, takže budete mít vždy nainstalované binární soubory pro instalaci, ale některé balíčky budete muset odstranit a nainstalovat znovu, např. Měl jsem tento problém s dehtem. Získal jsem balíčky na jiném systému, extrahoval jsem balíčky přes ar p package.deb data.tar.gz | tar zx
a poté scp
upravte extrahované soubory pomocí scp -r ./* [email protected]_computer:/
, takže binární soubory jsou opět k dispozici. Opláchněte a opakujte a scp
ed soubory budou přepsány.
Co bych místo toho udělal
Při každém přepnutí systému jsem provedl následující:
Zálohujte /home
, /etc
(a možná /var
, /usr/local
, některé další soubory, které jste změnili, /root
, …, YMMV).
Získejte seznam nainstalovaných balíčků pomocí dpkg --get-selections > packagelist
a zkopírujte výsledný soubor packagelist
také.
Poté proveďte čistou reinstalaci Debianu, vytvořte znovu všechny uživatele, možná role atd.
Přeinstalujte všechny balíčky pomocí dpkg --set-selections < packagelist; apt-get -f install
.
Zkopírujte zálohované adresáře, soubory a máte většinou hotovo.
Jedna nevýhoda tohoto přístupu:Všechny vaše balíčky, včetně knihoven, budou označeny jako ručně nainstalované, takže nebudou odinstalovány, když už na nich nebude žádný balíček záviset.