Cómo eliminar paquetes rotos en ubuntu

38

No puedo eliminar el paquete roto. Use el siguiente comando: sudo apt-get -f install pero obtengo la siguiente respuesta:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Intenté varios comandos como

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Pero no obtuve ningún resultado. No puedo instalar synaptic. ¿Alguna idea de cómo puedo eliminar el paquete roto?

Krasimir
fuente
Aquí pocas respuestas han sugerido --force-remove-reinstreqy --force-overwrite. Tenga en cuenta que debe usar estos dos (especialmente el primero) solo si es un experto en Linux, ya que puede dañar su sistema por completo.
g_p

Respuestas:

55

ejecuta este comando para eliminar paquetes rotos en ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

después de eliminar el paquete, actualice su sistema con el comando

sudo apt-get update

reinicie el sistema después de una actualización exitosa.

premal
fuente
55
Este comando siempre debe evitarse ya que rompe su sistema más de lo que repara
rancho
2
@rancho depende de qué paquete sea.
Philip
bonito, la forma en que Gus package_name siempre escritura, sin embargo, ver una lista de 900 líneas en un formato loca, por ejemplo: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). esperar en LTS realmente me ha hecho este truco loco.
nyxee
@rancho "te rompe el sistema más de lo que repara" ¿puedes explicarlo? man dpkgno ayuda mucho
Stéphane Gourichon
Esto fue lo único que funcionó para mí. Rompí mi mysql al actualizar el paquete. Ahora no podía purgar ni reinstalar. Entonces esto me salvó la vida.
Ankit Singhaniya
11

Abra su terminal y use el siguiente comando

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

debería resolver tu problema.

g_p
fuente
11

He encontrado que:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Funciona mejor. Si le da un error de que no eliminará un paquete porque depende de otro paquete, elimine también ese otro paquete. Tendrá que repetir este paso varias veces y luego reinstalar los paquetes eliminados.

Esta force-remove-reinstreqes LA "opción nuclear" de eliminar un paquete. Solo falla si hay otro paquete dependiendo del que está a punto de eliminar. De nuevo, en ese caso, también eliminó el paquete dependiente.

Bryan Wilcutt
fuente
LA opción nuclear funcionó donde las purgas, limpie, reinstala, elimina automáticamente, a través de ambos dpkgy apt-getfalló. Gracias.
LAFK dice Reinstate a Monica el
Esta es la mejor solución si solo quieres bombardear todo y comenzar de nuevo. ¡Me ahorró mucho tiempo! (También usé --purge after --remove)
andersevenrud
Por favor, ¿puede dar algunas sugerencias sobre cómo llenar eso package_namecuando tenemos más de 1000 líneas (algunas duplicadas) en los archivos de registro de apt ...
nyxee
4

Esto solucionó mi problema:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
Krasimir
fuente
Entonces, márquelo como la respuesta correcta.
jarno
Funciona perfectamente.
Shubham Patel
3

Abra su terminal y pegue estas líneas tras líneas

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

vuelva a intentarlo

rɑːdʒɑ
fuente
2

El mismo error se repite si lo hacemos apt-get cleanya apt-get -f installmenos que eliminemos los datos basura del /var/lib/dpkg/statusarchivo en Ubuntu.

Supongamos que necesitamos eliminar el paquete roto apache. Inicialmente tenemos que abrir el archivo de estado y buscar el paquete apache. Elimine la descripción completa del paquete y guarde el archivo de estado. Luego intente usar apt-get -f instally apt-get clean.

usuario649305
fuente
2

nada de lo anterior funcionó para mí. finalmente edité el archivo / var / lib / dpkg / status y eliminé los paquetes de allí.

Aunque no recomendaría hacer esto, solo si algo falla ...

BonifatioK
fuente
Esto parece ser lo único que funcionó para mí. Incluso la llamada 'opción nuclear' de --force-remove-reinstreq no pudo eliminar el paquete ofensivo. Gracias Señor.
alex
1

Nada de lo anterior funcionó para mí

He utilizado sudo aptitude.

Encontró el error de inmediato y ofreció opciones. Lo seleccionas y lo arregla.

Aryeh Beitz
fuente
También me lo arregló en Debian: esta era la única solución que funcionaba para mí. ¡Ninguno de los comentarios anteriores funcionó para mí! ¡Gracias!
Hirbod
0

Aquí hay uno:

actualice su lista de paquetes de esta manera

 sudo apt-get update

luego limpie cualquier paquete parcial

 sudo apt-get autoclean

Ahora limpia el caché de apt

 sudo apt-get clean

Ahora elimine cualquier dependencia innecesaria

 sudo apt-get autoremove

desde el comando anterior, puede identificar cualquier paquete roto y eliminarlo de manera forzada de esta manera

 sudo dpkg --remove --force-remove-reinstreq package_name

Finalmente limpie cualquier otro paquete con dependencias

 sudo apt-get -f install 

Dime como te va.

Olu Smith
fuente
Creo que este comando es incorrecto: `sudo dpkg --remove -force --force-remove-reinstreq package_name.
Juan Simón
Ji ... ¿cuál es el camino correcto?
Olu Smith
0
  1. consulta todos los paquetes que están instalados hoy o ayer awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 causó el problema, así que elimino el paquete sudo dpkg -r wine-qqintl:i386

  3. hecho.

Ming Zhanghui
fuente
1
ok, podemos obtener paquetes así instalados recientemente, pero esto no responde a la pregunta que pregunta cómo eliminar paquetes rotos
Zanna
0

Tuve un problema con el paquete kodi roto. Abrí el administrador de paquetes sináptico y usé el filtro "roto" para localizar el paquete y lo marqué para eliminarlo por completo. Funcionó como un campeón.

Joe
fuente