Correción del sistema de paquetes cuando no te deja instalar

Hola, visto un problema que tenia para desinstalar paquete y viendo que algunos no parecen haber encontrado una forma de desinstalarlos expongo aquí una idea un tanto arriesgada pero muy eficaz.

Muchas veces hemos querido desinstalar un paquete que no quiere dejarse desinstalar completamente y a veces por este error no nos deja actualizar el sistema, en mi caso me ocurrió, con un paquete que no es de Debian llamado psa-imp, bien la forma correcta de hacerlo en principio seria con un <i>apt-get remove --purge psa-imp</i>, pero resulta que te da un error en el script de desinstalación y por mucho que lo intentes de mil maneras el apt, aptitude o synaptic te lo sigue marcando para desinstalar, y puede que en algunas ocasiones ni te deje continuar.

Bien explico brevemente como desinstalarlo, pero aviso que es arriesgado y seria conveniente hacer una copia de seguridad para volver al estado anterior para no "descojonar" el sistema de paquetes.
Existe un fichero que depende del comando <i>dpkg</i> en donde se guarda el estado de todos los paquetes tanto instalados como los desinstalados, aunque se les haya echo un <i>--purge</i> continúan apareciendo allí, bien antes de hacer nada con este fichero indicare los pasos para asegurarnos que no dejamos "*****" en el sistema.

Primero vemos los archivos instalados en el paquete problemático, abrimos una consola como root y eliminamos todos y cada uno de los archivos indicados teniendo especial cuidado de no equivocarnos y borrar solo exclusivamente los indicados en las propiedades (para ello es mejor usar <i>synaptic</i> para tener una imagen clara de lo que hay que eliminar, incluidos los directorios), hay que tener cuidado de no eliminar carpetas de sistema, en mi caso psa-imp es una carpeta que se instala en el directorio /etc (esto no hay que borrarlo, ¿ok?, de todos modos te pone el nombre del archivo, si no queda ningún archivo dentro de este puedes eliminar la carpeta).

Bueno, continuamos. Después de haber hecho esto creamos una copia de seguridad del archivo /var/lib/dpkg/status con la siguiente orden (todo como root claro):

<i>cp /var/lib/dpkg/status /var/lib/dpkg/status_backup</i>

Posteriormente lo editamos. Si queréis abrir <i>kwrite</i> para que sea mas cómodo podéis actuar de la siguiente forma: como usuario normal ejecutas <i>kdesu kwrite /var/lib/dpkg/status</i>, esto te sacará una pantalla de autenticación en el entorno gráfico y se abrirá <i>kwrite</i> con permisos para modificar el archivo en cuestión.

L que tenemos que hacer es buscar en el archivo el nombre del paquete problemático y eliminar desde donde pone:

<b>Package: nombre_paquete_problematico</b>

hasta la siguiente linea en la que aparezca

<b>Package: nombre_paquete_cualquiera</b>

teniendo especial cuidado en dejar una línea en blanco entre la información de un paquete y otro paquete.

Después de realizar esto el paquete no aparecerá ya como instalado y podréis continuar con las instalaciones o desinstalaciones sin problemas.

Espero que esto os sirva.

Un saludo.

Enviado por diskoppix el 13 Julio, 2007 - 18:25.

vaya, lo de eliminarlos manualmente alguna vez se me había ocurrido,pero dudaba de su efectividad estando apt bloqueado,claro que desconocía el fichero «/var/lib/dpkg/status».

Hay que tomar nota del enlace para los que pregunten sobre el tema,se acabó el exit 0 (-_-)

Los ficheros de «/var/lib/dpkg/info» como .preinst, .postinst,etc ¿no dan problemas haciéndolo así ?

Enviado por skarfester el 15 Julio, 2007 - 20:34.

Hace poco yo hice algo así. El sistema no me dejaba instalar nvidia-glx porque se encontraba datos de nvidia-glx-legacy. Y no podía purgar este último (desinstalado ya estaba) porque se encontraba datos del primero. Un círculo vicioso.
Y el problema venía de un archivo del dpkg en el que aparecían líneas de un paquete y del otro, y al procesar daba el fallo.
Así que todo chulo borré las líneas de dichos paquetes y así pude completar la instalación.
No es muy ortodoxo, todo sea dicho.

Enviado por adslinex el 24 Julio, 2007 - 09:53.

Hola,
ya se que nadie se va a parar a hacer esto, pero por si a alguien le es más importante la supervivencia del sistema que eliminar pos ficheros instalados por el paquete que deseamos desinstalar, puede asegurarse de que sólo pertenecen (los ficheros) al paquete en cuestión, con los siguientes comandos:
# dpkg -L nombre_de_paquete //lista los ficheros instalados por el paquete en cuestión
# dpkg -S nombre_de_archivo //muestra que paquete instaló ese archivo
Una vez comprobado que sólo pertenece al paquete a desinstalar, puede eliminarse.
Saludos, adslinex

---
Sólo hay 10 tipos de personas, las que entienden el binario y las que no.

Enviado por Tigreci el 26 Julio, 2007 - 22:52.

Respuesta a vaya, lo de eliminarlos manualmente

Buenas diskoppix pues la verdad es que hace algunos dias que lo hice, por junio o por ahi mas o menos y no he tenido ningun problema derivado de hacer esta acción, me han ido el resto de instalaciones muy bien.

---
La seguridad es solo un estado mental.
Entre la satisfacción y la total decepción hay solo una acción.
Solo se que se todo lo que no se

Enviado por meolivares06 el 22 Junio, 2008 - 06:00.

Mi forma es:
mc /var/lib/info/dpkg

Alli busco *nombre_paquete* y luego elimino los post.... y pre.... casi siempre salen marcado con un asterisco y en color diferentes.

Despues de eliminar esto ejecuto dpkg --configure -a

Eso siempre me ha funcionado. A veces hay que repetir el proceso varias veces.