Question Comment savoir à partir de quel dépôt Ubuntu ou Debian est livré un paquet?


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

Lors de l’installation du paquet, le dépôt réel apparaît lors du téléchargement (il est imprimé dans la sortie "download from ..." des programmes apt et similaires), mais comment peut-on obtenir des informations sur le référentiel contenant le paquet version d'un paquet) sans pour autant le télécharger et l'installer en premier?

En outre, comment peut-on déterminer le référentiel source pour un package déjà installé?


164
2018-02-09 19:14


origine


Je trouve cela l'un des défauts de Apt; Il est tout simplement difficile de savoir à partir de quel référentiel fournit un certain paquet dans les outils du programme d'installation du paquet. - quack quixote


Réponses:


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:

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

  • Celui qui est disponible à partir d'un référentiel local (file:/home/wena/.repo_bin/)

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


Aditionellement, 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

202
2018-01-22 22:00



Mais cela ne montre pas d'où vient le paquet installé, n'est-ce pas? - Adobe
@Adobe Dans mon cas, le 2.1 la version n'est disponible dans aucun référentiel. C'est construit localement. - Tshepang
Quel est le signe du paquet installé? *** ou /var/lib/dpkg/status ? - SuB
Peut-être les deux? Pas certain. - Tshepang
Lorsque le paquet n'est pas installé, apt-cache policy dit: Installed: (none). - John McGehee


Aha! Apparemment, le bon apt commande n'est pas apt-cache info, mais plutôt, 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: 

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

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


27
2018-02-10 00:57



Cette caractéristique d'aptitude est toujours sur la liste 8 ans plus tard et je ne sais pas pourquoi cette réponse (apt-cache showpkg) n'est pas marqué comme correct. - Csaba Toth


Cela fonctionne pour moi (montre où le paquet 2vcard est):

$ 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.


8
2018-02-09 19:41



Pragmatique. Je suis surpris que cette information ne soit accessible par aucun des frontaux à dpkg, bien que. - gotgenes
@got Il est disponible: superuser.com/questions/106794/ - Tshepang


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 un autre (comme Ubuntu) via sudo apt install aptitude
  • ne nécessite pas de privilèges administratifs (au moins pour la commande ci-dessous)
  • a une belle ncurses GUI (mais la plupart du temps utilisé sans elle)
  • fournit un très joli résultat. Pour afficher les versions des packages, utilisez aptitude versions commander:

    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 super pouvoirs de vache

La lettre devant chaque chaîne indique le statut du paquet, je est installé et p est purgé (ou jamais installé), stable, essai et instable sont des définitions de référentiel, le nombre à la fin est un priorité des broches.

Une mise en garde concernant les versions récentes d'aptitude mérite d'être mentionnée ici: par défaut, elle affiche tous les paquets, y compris le nom que vous recherchez, donc utilisez un regex magie un peu à chercher par le nom strict, par exemple aptitude versions ^kde-workspace$.


8
2018-01-12 11:32



Belle commande mais elle ne répertorie pas le dépôt comme demandé. - bjhend
Réellement Cela fait. - TranslucentCloud
Vous ne comprenez pas Des PPA supplémentaires peuvent être installés. Il est important de savoir si un package provient d'un tel PPA. En fait, c'est ce que j'essaie de comprendre maintenant - si c'est le cas, je peux supprimer l'APP, réduisant ainsi le risque de problèmes. - reinierpost
Oui, vous avez raison, avec versions vous pouvez simplement vérifier les valeurs d'épinglage appropriées des paquets donnés, pas les mises en pension associées. C'est quand même utile si vous connaissez toutes vos pensions et comment elles sont épinglées. - TranslucentCloud


Malheureusement, cette information n'est pas enregistrée lors de l'installation du paquet. Vous pouvez faire une supposition décente si le référentiel est toujours dans la liste source et si le référentiel contient toujours le package:

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

apt-cache showpkgmontre des 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 de grep.

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


6
2017-10-20 21:42





Ou, inspiré par Sunny, vous pouvez essayer:

# 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. pas précis à 100%.


2
2018-01-22 15:55