GNU/Linux >> Linux Esercitazione >  >> Debian

Debian:come convertire un sistema basato su Debian a 32 bit (x86) in 64 bit?

Ho un sistema a 32 bit che funziona su un processore a 64 bit. Come posso convertirlo in tutto a 64 bit, senza reinstallarlo? Ho visto da qualche parte che è fattibile grazie al nuovo framework Multiarch.

Risposta accettata:

TL;DR: È fattibile, ma complicato. Ho delineato un'alternativa in fondo.

Ora la descrizione lunga , e prendilo con le pinze, perché forse non ho preso la strada migliore:

È possibile, ed ecco cosa ho fatto nelle ultime due notti:
C'è una voce wiki che descrive il modo della vecchia scuola senza supporto multiarch. È utile per riparare i pacchetti rotti.

Per migrare il tuo sistema di base, procedi come segue:

$ 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

Alcuni dei tuoi pacchetti sono quindi amd64, ma la maggior parte rimarrà i386. apt-get upgrade si occuperà di alcuni pacchetti, apt-get -f install riparerà alcuni errori, ma la maggior parte dei pacchetti rimarrà i386. Se vuoi farcela, salta la parte difficile 😉

Usando dpkg --get-selections | grep :i386 restituirà tutti i tuoi pacchi, che dovrai ancora migrare.

La mia prossima idea era di fare:

# apt-get install `dpkg --get-selections \
  | grep i386 \
  | awk {'gsub(/:i386/, ":amd64"); print $1'}`

Ma si è rivelata una cattiva idea:alcuni pacchetti non sono disponibili in amd64 (ad esempio libc6-i686), apt-get sarà confuso e molti pacchetti verranno installati in entrambe le versioni. C'è molto lavoro manuale in attitudine da fare.

Più difficoltà: Alcuni pacchetti essenziali possono essere sostituiti, in modo da avere sempre i binari installati per l'installazione, ma alcuni pacchetti dovranno essere rimossi e installati nuovamente, ad es. Ho avuto questo problema con tar. Ho ottenuto i pacchetti su un altro sistema, ho estratto i pacchetti tramite ar p package.deb data.tar.gz | tar zx e poi scp ed i file estratti tramite scp -r ./* [email protected]_computer:/ , quindi i binari sono di nuovo disponibili. Risciacquare e ripetere, e il scp ed i file verranno sovrascritti.

Cosa farei invece

Ho fatto quanto segue, ogni volta che ho cambiato sistema:

Eseguire il backup di /home , /etc (e forse /var , /usr/local , alcuni altri file che hai modificato, /root , …, YMMV).

Ottieni un elenco di pacchetti installati con dpkg --get-selections > packagelist e copia il file risultante packagelist anche.

Correlati:come verificare la presenza di blocchi danneggiati su un volume fisico LVM?

Quindi esegui una reinstallazione pulita di Debian, crea di nuovo tutti gli utenti, forse i ruoli, ecc.

Reinstalla tutti i pacchetti con dpkg --set-selections < packagelist; apt-get -f install .

Copia di nuovo le directory e i file di backup e il gioco è quasi fatto.

Uno svantaggio di questo approccio:tutti i tuoi pacchetti, incluse le librerie, verranno contrassegnati come installati manualmente, quindi non verranno disinstallati quando nessun pacchetto dipende più da loro.


Debian
  1. Come elencare i pacchetti installati su Debian

  2. Come modificare il nome host su Debian 10 Linux

  3. Come installare Gradle su Debian 10

  4. Come installare AnyDesk su Debian 10

  5. Debian:come eseguire programmi a 32 bit su una Debian/ubuntu a 64 bit?

Come installare PostgreSQL 14 su Debian 11

Come automatizzare le attività su Debian 11

Come installare gli aggiornamenti di sicurezza in Ubuntu e Debian

Come rimuovere i pacchetti da Ubuntu e Debian

Come installare webmin su Debian 11

Come verificare il sistema Linux è a 32 o 64 bit?