¿Cómo averiguo de qué repositorio proviene un paquete?

147

¿Hay algún método o comando que pueda decir de qué repositorio proviene un paquete?

dfme
fuente
1
Esto es ambiguo. ¿Quiere decir: qué repositorios habilitados actualmente proporcionan un paquete con el nombre dado, o: qué repositorio se utilizó para instalar el paquete con ese nombre que está instalado actualmente? (Ambos son útiles Busco este último, no el primero..)
Reinier Mensaje

Respuestas:

112

Comandos necesarios:

  • dpkg -s <package>- le permite encontrar la versión que ha instalado. ( fuente )
  • apt-cache showpkg <package>- mostrará una lista de las versiones del paquete disponibles. Para cada versión, se proporcionará la fuente del paquete, en forma de un nombre de archivo de índice.

Si desea encontrar la fuente del paquete que está instalado actualmente, necesitará la salida de dpkg -s <package>. De lo contrario, simplemente puede mirar la salida de la versión más reciente por apt-cache showpkg <package>.

Ejemplo:

$ dpkg -s liferea
Package: liferea
Status: install ok installed
Priority: optional
Section: web
Installed-Size: 760
Maintainer: Ubuntu Developers <[email protected]>
Architecture: i386
Version: 1.6.2-1ubuntu6
...

$ apt-cache showpkg liferea
Package: liferea
Versions: 
1.6.2-1ubuntu6.1 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid-updates_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26

1.6.2-1ubuntu6 (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages
                  MD5: 557b0b803b7ed864e6d14df4b02e3d26
...

Desde el primer comando, puedo ver que Liferea versión 1.6.2-1ubuntu6 está instalada. Desde el segundo comando, puedo ver que esa versión aparece en la lista /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Sin demasiado esfuerzo, puedo deducir que la línea de origen contiene archive.ubuntu.com, ubuntu, lucid, y main.

Y, efectivamente, mi /etc/apt/sources.listcontiene la siguiente línea.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Michael Crenshaw
fuente
mac, gracias por tu respuesta detallada! Desafortunadamente no me ayuda con mi problema inicial de un problema de dependencia insatisfecha :-( Estoy tratando de instalar libqt4-opengl y dice: Los siguientes paquetes tienen dependencias insatisfechas: libqt4-opengl: Depende: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) pero 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 se instalará Depende: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) pero 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 se instalará
dfme
Es difícil ver a partir de eso cuál es el problema. Debe abrir una nueva pregunta para poder proporcionar detalles completos. Si lo hace, deje un enlace en un comentario. :-)
Michael Crenshaw
44
apt-cache policy <package name>(a partir de: superuser.com/a/236605/37279 )
franzlorenzon
¿Apto-caché {showpkg, policy} realmente muestra de dónde se instaló un paquete instalado , o simplemente dónde se instalaría en el momento de la consulta?
Croad Langshan
1
El último. Si generalmente uso trustylas fuentes de paquetes de Ubuntu , agrego temporalmente utopica mi sources.listpara instalar la versión 1.20ubuntu3 de init-system-helpersy luego elimino el repositorio nuevamente de mi sources.list, apt-cache showpkg init-system-helperssolo mentirá sobre la lista de paquetes original y apt-cache policy init-system-helperssolo indicará lo obvio.
blubberdiblub
104

Use el siguiente comando. Tiene mejor salida:

apt-cache policy <Package Name>

Para Ubuntu 16.04 y posterior, hay una forma más corta de hacerlo:

apt policy <Package Name>
Sub
fuente
11
¡Esta es la respuesta correcta! Los comandos en la respuesta de mac9416 necesitan una interpretación tediosa + adivinanzas basadas en su salida. Para obtener más información acerca de apt-cache policyconsulta superuser.com/a/236605/61370
pabouk
3
apt-cache policyes bueno, pero algunas veces necesitas apt-cache showpkgcomparar sumas MD5 del paquete. Ver tambiéndebsums --changed
gavenkoa
esta policyopción es la más útil cuando se compara consources.list
infinite-etcétera
¡Esta debería ser la respuesta aceptada! @pabouk tiene razón. Esta respuesta es más relevante para la pregunta que la actualmente aceptada.
HEXcube
Al igual que @ pablo-bianchi señaló en su respuesta , apt policy <package-name>se puede usar una versión aún más simple , desde 16.04LTS en adelante. Una vez que 14.04LTS se convierte en EOL en 2018, esta respuesta puede editarse para usar el comando más nuevo.
HEXcube
9

apt en Ubuntu 16.04+

Además apt-cache policy, showpkgy showahora tenemos un subcomando más simple y fácil de recordar: apt(no confunda con clásico apt-*):

apt policy <package> 

O la alternativa con más información apt show <package>, línea que comienza con "APT-Sources:" .

Descripción: este paquete proporciona herramientas de línea de comandos para buscar y administrar, así como consultar información sobre paquetes como acceso de bajo nivel a todas las funciones de la biblioteca libapt-pkg. Estos incluyen: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Comandos básicos de apt --help

Otros subcomandos fáciles de recordar también:

  • apt list - lista de paquetes basados ​​en nombres de paquetes
  • apt search - buscar en las descripciones de los paquetes
  • apt show - Mostrar detalles del paquete
  • apt update - actualizar la lista de paquetes disponibles
  • apt install - instalar paquetes
  • apt remove - eliminar paquetes
  • apt purge- eliminar paquetes y archivos de configuración :

    La eliminación de un paquete elimina todos los datos empaquetados, pero por lo general deja atrás los archivos de configuración de usuario pequeños (modificados), en caso de que la eliminación haya sido un accidente. Solo emitir una solicitud de instalación para el paquete eliminado accidentalmente restaurará su función como antes en ese caso. Por otro lado, puede deshacerse de estos restos llamando a purga incluso en paquetes ya eliminados. Tenga en cuenta que esto no afecta ningún dato o configuración almacenada en su directorio de inicio.

  • apt upgrade - Actualice el sistema instalando / actualizando paquetes

  • apt full-upgrade - Actualice el sistema eliminando / instalando / actualizando paquetes
  • apt edit-sources - editar el archivo de información de origen
Pablo A
fuente
apt policy xxxparece idéntico a apt-cache policy xxx, tal vez esto debería haber sido un comentario en su lugar. O al menos mencionar que apt showparece necesitar el -acambio para ver "registros adicionales" de otras fuentes
Xen2050
6

Lamentablemente, esta información no se registra durante la instalación del paquete. Puede hacer una suposición decente si el repositorio todavía está en la lista de fuentes y el repositorio todavía tiene el paquete:

grep -l PKG /var/lib/apt/lists/*

Incluso synaptic no puede decir si deshabilita el repositorio y la actualización.

canaca
fuente
4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

fuente

sBlatt
fuente
1

Esto es un poco más preciso:

apt-cache show <packagename> | grep "Version:"

La versión más nueva generalmente se instalará a menos que haya configurado apt-pinning o instale explícitamente una versión en particular.

mchid
fuente