GNU/Linux >> Tutoriales Linux >  >> Debian

Debian:¿cómo convertir un sistema basado en Debian de 32 bits (x86) a 64 bits?

Tengo un sistema de 32 bits que se ejecuta en un procesador de 64 bits. ¿Cómo lo convierto para que sea de 64 bits sin volver a instalarlo? He visto en alguna parte que es factible como resultado del nuevo marco Multiarch.

Respuesta aceptada:

TL;RD: Es factible, pero complicado. He esbozado una alternativa en la parte inferior.

Ahora la descripción larga , y tómalo con pinzas, ya que puede que no haya tomado la mejor ruta:

Es posible, y esto es lo que hice durante las últimas dos noches:
Hay una entrada de wiki que describe el método de la vieja escuela sin compatibilidad con varias arquitecturas. Es útil para reparar paquetes rotos.

Para migrar su sistema base, haga lo siguiente:

$ 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

Algunos de sus paquetes son amd64, pero la mayoría seguirá siendo i386. apt-get upgrade se encargará de algunos paquetes, apt-get -f install reparará algunos de los errores, pero la mayoría de los paquetes seguirán siendo i386. Si quieres lidiar con esto, sáltate la parte difícil 😉

Usando dpkg --get-selections | grep :i386 devolverá todos sus paquetes, que aún tendrá que migrar.

Mi siguiente idea fue hacer:

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

Pero resultó ser una mala idea:algunos paquetes no están disponibles en amd64 (por ejemplo, libc6-i686), se confundirá apt-get y se instalarán muchos paquetes en ambas versiones. Se debe hacer mucho trabajo manual en aptitud.

Más dificultades: Algunos paquetes esenciales se pueden reemplazar, de modo que siempre tendrá los binarios instalados para la instalación, pero algunos paquetes deberán eliminarse e instalarse nuevamente, p. Tuve este problema con el alquitrán. Obtuve los paquetes en otro sistema, extraje los paquetes a través de ar p package.deb data.tar.gz | tar zx y luego scp editó los archivos extraídos a través de scp -r ./* [email protected]_computer:/ , por lo que los binarios vuelven a estar disponibles. Enjuague y repita, y el scp los archivos editados se sobrescribirán.

Qué haría en su lugar

He hecho lo siguiente cada vez que cambié de sistema:

Copia de seguridad /home , /etc (y tal vez /var , /usr/local , algunos otros archivos que ha cambiado, /root , …, YMMV).

Obtenga una lista de paquetes instalados con dpkg --get-selections > packagelist y copie el archivo resultante packagelist también.

Relacionado:¿Cómo verificar si hay bloques defectuosos en un volumen físico LVM?

Luego haga una reinstalación limpia de Debian, cree todos los usuarios nuevamente, tal vez roles, etc.

Vuelva a instalar todos los paquetes con dpkg --set-selections < packagelist; apt-get -f install .

Vuelva a copiar los directorios y archivos de los que se ha realizado una copia de seguridad y habrá terminado casi por completo.

Una desventaja de ese enfoque:todos sus paquetes, incluidas las bibliotecas, se marcarán como instalados manualmente, por lo que no se desinstalarán cuando ningún paquete dependa más de ellos.


Debian
  1. Cómo enumerar los paquetes instalados en Debian

  2. Cómo cambiar el nombre de host en Debian 10 Linux

  3. Cómo instalar Gradle en Debian 10

  4. Cómo instalar AnyDesk en Debian 10

  5. Debian:¿cómo ejecutar programas de 32 bits en un Debian/ubuntu de 64 bits?

Cómo instalar PostgreSQL 14 en Debian 11

Cómo automatizar tareas en Debian 11

Cómo instalar actualizaciones de seguridad en Ubuntu y Debian

Cómo eliminar paquetes de Ubuntu y Debian

Cómo instalar webmin en Debian 11

¿Cómo verificar que el sistema Linux sea de 32 bits o de 64 bits?