
He visto muchas respuestas sobre cómo reparar un paquete roto en múltiples distribuciones, lo que parece ser muy útil y resolver los problemas. Pero tengo curiosidad por saber cómo se rompe un paquete.
Estaba solucionando problemas de una canalización que usaba un apt-get install
comando y no se pudo instalar alguna dependencia. Después de algunos intentos, pude hacer que la canalización funcionara. Pero buscando soluciones, descubrí que apt-get tiene un --fix-broken
indicador muy útil, que resolvió mi problema. Pero la pregunta sigue siendo,¿cual fue el problema? No tengo claro cómo encontrar el problema exacto que --fix-broken
me resolvió.
Mirando su página de manual, hay información genérica sobre:
Fix; attempt to correct a system with broken dependencies in place. This option, when
used with install/remove, can omit any packages to permit APT to deduce a likely
solution. If packages are specified, these have to completely correct the problem. The
option is sometimes necessary when running APT for the first time; APT itself does not
allow broken package dependencies to exist on a system. It is possible that a system's
dependency structure can be so corrupt as to require manual intervention.
En el caso de una tubería, cuyo sistema está instanciado en este momento, ¿qué podría haber pasado con el paquete que lo hizo fallar? ¿Alguien puede profundizar más sobre cómo funcionan estas banderas? Y más concretamente, ¿cómo se rompe un paquete?
Respuesta1
La rotura típica que apt install --fix-broken
soluciona son las dependencias que faltan. La forma habitualesoLo que sucede es usarlo dpkg
para instalar directamente un paquete: dpkg
sabrá si faltan dependencias, pero no puede recuperar las dependencias que faltan, por lo que el paquete terminará parcialmente instalado (instalado pero no configurado). apt install --fix-broken
resuelve las dependencias rotas e instala los paquetes necesarios, o elimina paquetes completamente rotos si sus dependencias no se pueden resolver.
Si ustedsonSi lo usa dpkg
directamente, normalmente es mejor usarlo apt install
: puede apuntarlo a un paquete local y resolverá sus dependencias durante la instalación.
Respuesta2
Un paquete es solo una pieza de software con una lista de dependencias. Si su sistema tiene algunas instalaciones no estándar (creadas desde el código fuente, por ejemplo), o si ha vinculado una versión específica de un paquete (usando "dpkg hold" o "dnf --exclude") para evitar interrumpir alguna otra instalación , luego intentar instalar un paquete que requiere un estado diferente de todos esos paquetes dependientes fallará, lo que dará como resultado un paquete "roto".
Es importante tener en cuenta que es posible que no haya ningún problema con el paquete o el estado de su sistema. El paquete original puede estar bien con su compilación manual (lo que sea), pero como no es lo que esesperadose ve roto.