167 votos

¿Cómo saber de qué repositorio Ubuntu o Debian viene un paquete?

En Debian, como Ubuntu, ¿cómo se puede saber que el repositorio de un paquete se descarga desde, sin comienzo la descarga? aptitude show y apt-cache info mostrará la sección (por ejemplo, metapaquete, base, gráficos), pero no en el repositorio para que un paquete pertenece (por ejemplo, http://ppa.launchpad.net/mactel-support/ppa/ubuntu o http://us.archive.ubuntu.com/ubuntu/).

Al instalar el paquete, el repositorio actual aparece durante la descarga (es impreso en la "descarga de ..." la salida de apt y programas similares), pero cómo se puede obtener información en el repositorio que contiene el paquete (o una versión específica de un paquete) sin descarga y la instalación en primer lugar?

Además, ¿cómo se puede determinar el repositorio de código fuente de un paquete que ya está instalado?

202voto

Pierre Puntos 21

Corro apt-cache policy <package name>:

$ apt-cache policy wajig
wajig:
  Installed: 2.1
  Candidate: 2.1
  Version table:
 *** 2.1 0
        100 /var/lib/dpkg/status
     2.0.47 0
        500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages
        500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages

Eso significa que hay tres wajig paquetes:

  • Uno que está instalado (/var/lib/dpkg/status)

  • Uno que está disponible en un repositorio local (file:/home/wena/.repo_bin/)

  • Uno que está disponible en un repositorio remoto (ftp://ftp.is.co.za/debian), que también pasa a tener la misma versión (2.0.47) como el de un repositorio local


Además, apt-cache madison <package name> mostrará información similar en un formato tabular.

 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe amd64 Packages
 wajig |        2.2 | mirror://mirrors.ubuntu.com/mirrors.txt/ precise/universe Sources

28voto

derobert Puntos 26258

¡ Ajá! Al parecer, el propio apt comando no es apt-cache info , sino apt-cache showpkg .

$ apt-cache showpkg linux-generic
Package: linux-generic
Versions: 
2.6.31.19.32 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_karmic-security_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic-updates_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c

2.6.31.14.27 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_main_binary-amd64_Packages
                  MD5: 5d722da329763b9342d322f5a140005c


Reverse Depends: 
Dependencies: 
2.6.31.19.32 - linux-image-generic (5 2.6.31.19.32) 
2.6.31.14.27 - linux-image-generic (5 2.6.31.14.27) 
Provides: 
2.6.31.19.32 - 
2.6.31.14.27 - 
Reverse Provides: 

La File: línea proporciona la información del repositorio después de la /var/lib/apt/lists/ .

Hay un error informe que aptitude no puede mostrar el repositorio de origen, pero al parecer en la actualidad la función todavía está en la lista de deseos.

8voto

Sunny Puntos 874

Esto me funciona (muestra dónde está el paquete 2vcard):

$ grep 2vcard /var/lib/apt/lists/* | grep "Filename:"

/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-i386_Packages:Filename: pool/universe/2/2vcard/2vcard_0.5-3_all.deb

Puede aplicar filtrado adicional para verificar las versiones, etc., si se dispone de varias versiones.

6voto

kanaka Puntos 241

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

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

apt-cache showpkgmuestra los datos de la base de datos de repositorio (no qué está instalado) así que es otra forma de la misma información desde el grep.

Incluso sináptica no puede decir (en la pantalla de origen) Si deshabilita el repositorio y actualizar.

2voto

Danny Staple Puntos 385

O inspirado por Sunny puedes probar:

# list installed restricted packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'restricted' && echo $i; done

# list installed multiverse packages
for i in `dpkg --get-selections | awk '{ print $1 }'`; do egrep -lRI "^Filename: .*/${i}_[^/]+.deb" /var/lib/apt/lists/ | grep -q 'multiverse' && echo $i; done

PS. no fiable al 100%.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: