Arreglar paquete medio instalado

42

Recibo un error al usar sudo apt-get upgrade:

dpkg: error processing libgfortran3:amd64 (--configure):
  package libgfortran3:amd64 is not ready for configuration
  cannot configure (current status `half-installed')
Errors were encountered while processing:
  libgfortran3:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

No parece bloquear la instalación / actualización de otras aplicaciones. Creo que este problema surgió debido al apagado directo de mi PC mientras se actualizaba la aplicación.

¿Cómo puedo arreglar esto?

Barun
fuente

Respuestas:

38
sudo dpkg --remove --force-remove-reinstreq --dry-run libgfortran3:amd64

Eso es solo una carrera en seco. No estoy seguro de qué eliminar libgfortran3llevará, pero ejecute eso y vea. Suponiendo que no va a engullir todo el sistema, ejecútelo nuevamente sin el --dry-runy luego podrá sudo apt-get install ...recuperar los paquetes que necesita.

Oli
fuente
44
Resuelto, gracias! Para el registro, lo ejecuté y decía dpkg: warning: package is in a very bad inconsistent state; you should reinstall it before attempting a removalque descargué el paquete manualmente desde packages.ubuntu.com y ejecuté sudo dpkg -i WHERE/THE/DOWNLOADED/PACKAGE/IS. Entonces todo se volvió bueno.
Bora M. Alper
1
En mi caso, después de seguir estas instrucciones, simplemente ejecutando 'apt-get install -f' reinstalé el paquete y también reparé varios otros con dependencias rotas debido a ello. Esto fue para el paquete libx11-data en debian 7.
bchurchill
Sin --dry-run, como dijiste, funcionó para mí. ¡Gracias!
forvas
70

Para el error del paquete medio instalado, --reinstall funcionó para mí:

sudo apt-get install --reinstall packagename 
Eric Olson
fuente
1
Sí, pero una advertencia de que después de reinstalar packagename, apt-get procederá a configurar cualquier paquete medio configurado.
Cedric Knight
55
Esto es más seguro que la respuesta aceptada en mi humilde opinión.
Zanna
sudo apt-get install --reinstal ncurses-base y luego ejecuté la actualización sudo apt-get usando el usuario root (sudo -s), funcionó así ...
ArifMustafa
Excelente. solo esa solución resolvió mi problema
iWizard
Esto lo hizo por mí. php-pear me estaba dando dolor de cabeza. ¡Gracias!
pcarvalho
6
sudo apt install --reinstall packagename

Esto funciona como encanto. Resolvió un problema que había estado experimentando durante meses. Mi caso fue con el paquetelibmysqlcppconn7v5

Todo lo que hice fue correr sudo apt install --reinstall libmysqlcppconn7v5

Siech Ben
fuente
3

Tengo el mismo problema de "paquete a medio instalar" con un paquete de kibana. Tuve el siguiente error:

dpkg: error processing kibana (--configure):
package kibana is not ready for configuration
cannot configure (current status 'half-installed')
Errors were encountered while processing:
  kibana
E: Sub-process /usr/bin/dpkg returned an error code (1)

Si alguien todavía se enfrenta a este tipo de problema, puede intentar esto:

sudo rm /var/lib/dpkg/info/kibana*
cd /var/cache/apt/archives
sudo rm kibana*
apt-get --reinstall install kibana

Esto funciona para mi. Solo necesita reemplazar la palabra 'kibana' con el nombre del paquete medio instalado.

Anower Perves
fuente
2

Si desea arreglar esto a través de la GUI, puede usar synaptic. Synaptic es una excelente herramienta de administración de paquetes que solía incluirse en versiones anteriores de ubuntu. Para instalarlo:

sudo apt-get install synaptic

haga clic en arreglar paquetes rotos.

Mijo
fuente
synaptic no enumera el paquete en categoría rota :(
Barun
2

Esto debería solucionar su problema sin reinstalar el paquete.

sudo dpkg --force-remove-reinstreq --remove <package_name here>

Seguido por: sudo apt-get update

Código Geass
fuente
¿Por qué --force-remove-reinstreq? El administrador de paquetes no indica que se requiera una reinstalación. En general, una eliminación regular funciona bien para paquetes no configurados. -1
David Foerster
Es justo lo que hago cuando no sudo apt-get remove <packageestá disponible y no quiero volver a instalar ese paquete a medio instalar. Luego, lo uso --force-remove-reinstreqpara eliminar esos archivos basura ... PD: Está en Linux Mint ... Dudo si será ser diferente ya que Linux se basa en Ubuntu ..
CodeGeass
1
El administrador de paquetes funciona igual en todas las distribuciones basadas en Debian (eso es lo que dpkgsignifica después de todo), pero no debe usar --force-*"por si acaso". Los mensajes de error están allí por una razón y no deben ser tomados a la ligera por usuarios inexpertos, por lo que no debe sugerirles --force-*opciones innecesarias . De lo contrario, podríamos recomendar siempre usar --force-allo, mejor aún, eliminar las --force-*opciones por dpkgcompleto y hacer que sean el comportamiento predeterminado porque eso sería más fácil y más conveniente.
David Foerster
Está bien, admítelo ... Estaba más preocupado por hacer el trabajo que saber qué y cómo se hace exactamente ... Disculpas ...
CodeGeass
Hm ... solo estoy viendo que la respuesta aceptada sugiere lo mismo. Entonces podría estar equivocado acerca de --force-remove-reinstreqser innecesario. Pero eso también significa que su respuesta es (casi) un duplicado de la misma. Mejor suerte la próxima vez.
David Foerster