185 votes

Comment savoir de quel dépôt Ubuntu ou Debian provient un paquet ?

Sur un système basé sur Debian, y compris Ubuntu, comment peut-on savoir de quel dépôt un paquet sera téléchargé, sans commencer réellement le téléchargement ? aptitude show y apt-cache info montrera le section (par exemple, métapackage, base, graphiques), mais pas les dépôt à laquelle un paquet appartient (par ex, http://ppa.launchpad.net/mactel-support/ppa/ubuntu o http://us.archive.ubuntu.com/ubuntu/ ).

Lors de l'installation du paquet, le dépôt réel apparaît pendant le téléchargement (il est imprimé dans la sortie "downloading from ..." d'apt et des programmes similaires), mais comment obtenir des informations sur le dépôt contenant le paquet (ou une version spécifique d'un paquet) ? sans le télécharger et l'installer d'abord ?

De plus, comment déterminer le référentiel source d'un paquet déjà installé ?

220voto

tshepang Points 3241

Je cours 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

Cela signifie qu'il y a trois wajig paquets :

  • Celui qui est installé ( /var/lib/dpkg/status )

  • Un qui est disponible à partir d'un dépôt local ( file:/home/wena/.repo_bin/ )

  • Un qui est disponible à partir d'un dépôt distant ( ftp://ftp.is.co.za/debian ), qui se trouve également avoir la même version ( 2.0.47 ) comme celui d'un dépôt local


En outre, apt-cache madison <package name> affichera des informations similaires sous forme de tableau.

 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

29voto

derobert Points 26258

Aha ! Apparemment, le bon apt n'est pas apt-cache info mais à la place, 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: 

El File: fournit les informations sur le référentiel après la ligne /var/lib/apt/lists/ .

Il y a un rapport de bogue qui aptitude ne peut pas afficher le référentiel source mais il semble qu'à l'heure actuelle, cette fonctionnalité soit encore sur la liste des souhaits.

9voto

Neurotransmitter Points 1133

Je me demande pourquoi personne n'a mentionné aptitude . Je l'utilise tout le temps.

L'aptitude est :

  • Livré par défaut avec de nombreuses distributions basées sur Debian. Peut être installé sur d'autres (comme Ubuntu) via sudo apt install aptitude .

  • Ne nécessite pas de privilèges administratifs (du moins pour la commande ci-dessous).

  • Il a une belle ncurses GUI (mais la plupart du temps utilisé sans).

  • Fournit une très jolie sortie. Pour afficher les versions des paquets, utilisez aptitude versions commandement :

     me@wheezy:~$ aptitude versions kde-standard
     Package kde-standard:                        
     i A 5:77+deb7u1     stable              500
     p A 5:84            testing,unstable    130
  • N'a pas de pouvoirs de super-vache.

La lettre qui précède chaque chaîne indique le statut du paquet, i est installé et p est purgé (ou n'a jamais été installé), stable , tests y instable sont des définitions de référentiel, le nombre à la fin est une priorité de la broche .

Une mise en garde concernant les versions récentes d'aptitude vaut la peine d'être mentionnée ici : par défaut, il affiche tous les paquets, qui incluent le nom que vous recherchez, donc utilisez une balise regex un peu de magie pour rechercher par le nom strict, par exemple aptitude versions ^kde-workspace$ .

8voto

Sunny Points 941

Cela fonctionne pour moi (montre où se trouve le paquet de 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

Vous pouvez appliquer un filtrage supplémentaire pour vérifier les versions, etc., si plusieurs versions sont disponibles.

6voto

kanaka Points 251

Malheureusement, cette information n'est pas enregistrée lors de l'installation du paquet. Vous pouvez faire une estimation raisonnable si le référentiel est toujours dans la liste des sources et si le référentiel a toujours le paquet :

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

apt-cache showpkg montre les données de la base de données du référentiel (pas ce qui est installé), donc c'est une autre forme de la même information provenant du grep.

Même synaptic ne peut pas dire (dans l'écran d'origine) si vous désactivez le référentiel et mettez à jour.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X