GNU/Linux >> Znalost Linux >  >> Debian

Debian – Jak převést 32bitový (x86) systém založený na Debianu na 64bitový?

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é.

Související:Jak zkontrolovat špatné bloky na fyzickém svazku LVM?

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.


Debian
  1. Jak nainstalovat Gradle na Debian 10

  2. Jak nainstalovat AnyDesk na Debian 10

  3. Debian – Jak spouštět 32bitové programy na 64bitovém Debianu/ubuntu?

  1. Jak zobrazit seznam nainstalovaných balíčků v Debianu

  2. Jak změnit název hostitele na Debian 10 Linux

  3. Jak nainstalovat Nextcloud 15 na Debian 9

  1. Jak nainstalovat Mono na Debian 11

  2. Jak nainstalovat LibreNMS na Debian 11

  3. Jak nakonfigurovat sources.list na Debianu 10