Solucionar comportamiento de "aptitude", en el que no se resuelven dependencias e intenta desinstalar todo [Solucionado]

Aclaración: Esto que se indica más adelante (deshabilitar la múltiple-arquitectura) no es recomendable hacerlo a partir de la versión (inclusive) 12.04 Precise Pangolin, por las razones que se mencionan en el comentario número 12 de este hilo. Por lo tanto también se recomienda utilizar "apt-get" en lugar de "aptitude".


Resulta que a partir de [K]Ubuntu 11.04 Natty se introdujo el soporte de multi-arquitectura de paquetes para instalaciones de 64bits. Es decir, es posible instalar tanto paquetes i386 como de amd64. Esto es principalmente importante para los desarrolladores:
https://wiki.ubuntu.com/MultiarchSpec

La cuestión es que "aptitude" no soporta la múltiple arquitectura (al menos en Ubuntu) por lo que no resuelve bien las dependencias generando conflictos en los paquetes.
Bien, para deshabilitar la arquitectura en Natty(11.04), Oneiric (11.10) o posteriores, abrimos:

kdesudo kate /etc/dpkg/dpkg.cfg.d/multiarch

Y comentamos al inicio con una almohadilla "#" la única linea que figura, dejándola:

#foreign-architecture i386

Guardamos, cerramos y hacemos un:

sudo aptitude update

(o con apt-get)

Listo, aptitude resolverá correctamente dependencias en sistemas de 64 bits.

PD: Como solo sucede en instalaciones de 64bits, es posible que ese sea el motivo por el que algunos usuarios no hayan notado este comportamiento con aptitude

Saludos.

Hola
Excelente.
Gracias

Un misterio resuelto, excelente, Yafu.

Muchas gracias, Yafu. Veo que la razón por la que no me dio problemas a mí (como comenté) fue porque no había metido nada de 32 bits en ninguna de mis 2 compus :P

Por lo pronto, podemos dejar de lado algunas (solo algunas) de las teorías conspirativas contra Canonical :D

Un saludo

Frost escribió:

Veo que la razón por la que no me dio problemas a mí (como comenté) fue porque no había metido nada de 32 bits en ninguna de mis 2 compus :P

Hola. Creo que no es eso. El problema no sucede siempre que usas aptitude, solo aveces.
En realidad lo supongo, pero ahora que veo tengo unos cuantos paquetes i386 instalados ¿Los instalará Kubuntu por defecto? confuso

Vean si tienen paquetes instalados para i386 en sus sistemas de 64 bits:

sudo dpkg -l | grep :i386

Saludos.

Gracias w2tv

Como les comentaba, descubrí que tenía instalado muchas librerías para i386 en mi sistema amd64. Al parecer están instaladas por defecto desde que Ubuntu soporte multiarquitectura, y el paquete que instalaría todas esos paquetes sería "ia32-libs-multiarch".
Agradecería que el que tenga una instalación de 64bits comprobara si tiene esos paquetes instalados:

sudo dpkg -l | grep :i386

Si llegaran a tener problemas de dependencias luego de deshabilitar la multi-arquitectura como se indicó al principio de la guía, pueden purgar todo paquete i386 con:

sudo dpkg -P *:i386

Saludos.

Pues no, no tengo ninguno:

frost@frost-NB:~$ sudo dpkg -l | grep :i386
[sudo] password for frost:
frost@frost-NB:~$

... a menos que el filtro sea "i386" (sin ":")

frost@frost-NB:~$ sudo dpkg -l | grep i386
ii  libc6-i386                            2.13-0ubuntu13                             Embedded GNU C Library: 32-bit shared libraries for AMD64

Gracias Frost.
Está bien que tengas "libc6-i386", ese es un paquete para amd64. Solo los que terminan en ":i386" (con el "dos puntos") son los para 32 bits.
Ahora la curiosidad de saber cuándo se me instalaron todas esas librerías en paquetes para i386. De todas formas, purgando como he dicho antes el sistema queda libre de paquetes para 32bits.
Saludos.

cata3 debí dejarlo como estaba cuando se actualizo firefox y flash player depende de libfreetype6-i386 y libldap-2.4-2-i386 y no me dejaba instalarlo, le quite el # y actualizo perfecto smash

electron222 escribió:

cata3 debí dejarlo como estaba cuando se actualizo firefox y flash player depende de libfreetype6-i386 y libldap-2.4-2-i386 y no me dejaba instalarlo, le quite el # y actualizo perfecto smash

El problema, como dijo Frost, es cuando en la instalación del sistema de 64 bits tenemos paquetes para i386. Son los paquetes que terminan con ":i386" (con esos "dos puntos"), que no es lo mismo que algunos paquetes que tienen en el nombre "i386" que esos si son paquetes para amd64. En todo caso los nombres de los paquetes que comentas para la versión i386 serían: "libfreetype6:i386" y "libldap-2.4-2:i386" (con "dos puntos" en lugar del "guión")

Por eso antes dije que:

YAFU escribió:

Si llegaran a tener problemas de dependencias luego de deshabilitar la multi-arquitectura como se indicó al principio de la guía, pueden purgar todo paquete i386 con:

sudo dpkg -P *:i386

Es decir, el que tenga paquetes para 32 bits en su instalación de 64 y deshabilita la multiarquitectura, es muy probable que en algún momento tenga problemas de dependencias. Lo recomendable es limpiar el sistema de 64bits de paquetes para 32bits como he dicho (Recordando siempre poner esos "dos puntos"). Leer en consola todo lo que se purga o desinstala, por las dudas hay algo más que solo librerías y luego de purgar y deshabilitar la multiarquitectura, instalar su versión para amd64. En mi caso no hizo falta, se purgaron las i386 y las correspondientes versiones para amd64 ya estaban instaladas todas.
Saludos.