"Pero se refiere a otro paquete". - Encontrar ese paquete

24

No es inusual que un usuario de Ubuntu (u otra distribución con administración de paquetes apt) encuentre el error:

user@box ~ $ sudo apt-get install x
[sudo] password for user: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package x is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'x' has no installation candidate

Se han formulado varias preguntas al respecto en varios sitios de StackExchange, por ejemplo, openvpn en AskUbuntu, pero generalmente se trata de cómo obtener el paquete específico a pesar del error.

No he encontrado ningún paquete que no se encuentre simplemente (aunque no siempre fácilmente) determinando si todavía está distribuido, y bajo qué repositorio si es así, y asegurándome de que el repositorio esté en apt.sources, o lo peor llega a lo peor descargando un .deb o fuente para compilar.

Entonces, mi pregunta es más general, y aunque supongo que tiene una respuesta bastante simple y, por lo tanto, no es emocionante, no puedo pensar cómo encontrarla con los métodos convencionales de los motores de búsqueda, por lo que recurro a AskUbuntu: ¿Hay un comando u opción que pueda? utilizar para determinar qué paquete / qué paquetes hacen referencia al paquete que falta?

Arlo James Barnes
fuente

Respuestas:

13

Puede buscar el paquete con apt-cache:

apt-cache search x

Esto generará todos los paquetes que de una forma u otra hacen referencia a x.

Henrique Ferreira
fuente
2
Bueno, eso suena razonable ... excepto que no funciona para mí. apt-get install libtinfo6los informes no están disponibles pero se refieren a otro paquete, pero apt-cache search libtinfo6no arrojan resultados. ¿Hay alguna otra forma de hacer algo similar?
Erhannis
@Erhannis ¿'terminfo' trae algo? Creo que a veces este error aparece cuando un paquete se renombra descuidadamente.
Arlo James Barnes
No estoy seguro. Actualicé a la próxima versión de Debian, y ese paquete aparentemente ya no da ese error. Sin terminfoembargo, lo intentaré la próxima vez que suceda; ya sucedió antes y es probable que vuelva a suceder.
Erhannis
23

A veces esto sucede porque APT simplemente no sabe nada de lo que estás hablando, pero eso se puede resolver ejecutando:

sudo apt-get update

Después de ejecutar este, típicamente el error desaparece debido apty apt-getsaber cómo hacer lo que te pido ahora.

Wayne Workman
fuente
44
Probablemente quisiste decir apt-get updateseguido por apt-get upgrade -yporque -yomite la confirmación del usuario. No tiene sentido usarlo con apt-get update. Aun así, esto no responde a la pregunta, en absoluto.
44
@CelticWarrior: Estoy de acuerdo con esta respuesta en principio porque actualizar la información del repositorio de paquetes puede resolver este problema si uno intenta instalar un paquete desde un PPA agregado recientemente y se olvidó de ejecutarlo apt-get update.
David Foerster
77
@ user589808 No creo que sea un buen consejo en absoluto. No es necesaria una actualización de apt-get, y golpear ciegamente -y a todo puede romper más cosas de las que arregla. Así que Wayne era correcto en su sintaxis.
loco genial
1
apt-get updateresponde a la pregunta AB (el paquete existe en el repositorio pero apt-get instally apt-cacheno sé nada de él.)
dcorking
1
Para llegadas posteriores, los comentarios anteriores discuten una versión anterior de esta respuesta. La respuesta actual sudo apt-get updateestá libre de controversias y fue la solución correcta para mí.
Daryn