Comment savoir de quel référentiel provient un paquet?

147

Existe-t-il une méthode ou une commande permettant de déterminer de quel référentiel provient un paquet?

dfme
la source
1
C'est ambigu. Voulez-vous dire: quels référentiels actuellement activés fournissent un package avec le nom donné, ou: quel référentiel a été utilisé pour installer le package avec ce nom qui est actuellement installé? (Les deux sont utiles. Je cherche le dernier, pas l'ancien.)
Reinier Post

Réponses:

112

Commandes nécessaires:

  • dpkg -s <package>- vous permet de trouver la version de ce que vous avez installée. ( source )
  • apt-cache showpkg <package>- affichera une liste des versions du paquet disponible. Pour chaque version, la source du package, sous la forme d'un nom de fichier d'index, sera indiquée.

Si vous voulez trouver la source du paquet actuellement installé, vous aurez besoin de la sortie de dpkg -s <package>. Sinon, vous pouvez simplement regarder la version la plus récente en sortie apt-cache showpkg <package>.

Exemple:

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

Dès la première commande, je peux voir que la version 1.6.2-1ubuntu6 de Liferea est installée. À partir de la deuxième commande, je peux voir que cette version est répertoriée dans /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_main_binary-i386_Packages.

Sans trop d' effort, je peux en déduire que la ligne de source contient archive.ubuntu.com, ubuntu, lucidet main.

Et bien sûr, my /etc/apt/sources.listcontient la ligne suivante.

deb http://archive.ubuntu.com/ubuntu lucid main universe restricted multiverse
Michael Crenshaw
la source
mac, merci pour votre réponse détaillée! Malheureusement, cela ne m'aide pas avec mon problème initial de dépendance non résolue :-( J'essaie d'installer libqt4-opengl et cela dit: Les paquets suivants ont des dépendances non remplies: libqt4-opengl: Depends: libqtcore4 (= 4: 4.6.2-0ubuntu5.1) mais 4: 4.7.0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 doit être installé Dépend de: libqtgui4 (= 4: 4.6.2-0ubuntu5.1) mais 4: 4.7. 0 ~ beta1 + git20100522-0ubuntu1 ~ lucid1 ~ ppa1 + appmenu20100624 doit être installé
dfme
Il est difficile de voir à partir de là quel est le problème. Vous devriez ouvrir une nouvelle question afin de pouvoir fournir des détails complets. Si vous le faites, laissez un lien dans un commentaire. :-)
Michael Crenshaw
4
apt-cache policy <package name>(de: superuser.com/a/236605/37279 )
franzlorenzon
Apt-cache {showpkg, policy} indique-t-il réellement à partir de quel emplacement un paquet installé a été installé , ou juste à partir de quel endroit il serait installé au moment où il est interrogé?
Croad Langshan
1
Le dernier. Si j'utilise généralement les trustysources de paquets Ubuntu , puis ajouter temporairement utopicà mon sources.listordinateur afin d'installer la version 1.20ubuntu3 de init-system-helpers, puis supprimer à nouveau le référentiel de mon ordinateur sources.list, apt-cache showpkg init-system-helpersnous mentirons à propos de la liste de paquets d'origine et énoncerons apt-cache policy init-system-helpersl'évident.
blubberdiblub
104

Utilisez la commande suivante. Il a un meilleur rendement:

apt-cache policy <Package Name>

Pour Ubuntu 16.04 et les versions ultérieures, il existe un moyen plus simple de le faire:

apt policy <Package Name>
Sous
la source
11
C'est la bonne réponse! Les commandes de la réponse de mac9416 nécessitent une interprétation fastidieuse + des suppositions basées sur leur sortie. Pour plus d'informations sur apt-cache policyvoir aussi superuser.com/a/236605/61370
pabouk
3
apt-cache policyC’est bien, mais il faut parfois apt-cache showpkgcomparer les sommes MD5 du paquet. Voir aussidebsums --changed
gavenkoa
cette policyoption est la plus utile pour comparer avecsources.list
infinite-etcetera le
Cela devrait être la réponse acceptée! @pabouk a raison. Cette réponse est plus pertinente pour la question que celle actuellement acceptée.
HEXcube
Comme l'a souligné @ pablo-bianchi dans sa réponse , une apt policy <package-name>méthode encore plus simple peut être utilisée à partir de 16.04LTS. Une fois que 14.04LTS devient EOL'd en 2018, cette réponse peut être modifiée pour utiliser la commande la plus récente.
HEXcube
9

apt sur Ubuntu 16.04+

À côté apt-cache policy, showpkget showmaintenant, nous avons un plus simple, avec des sous-commandes faciles à retenir: apt(ne pas confondre avec classique apt-*):

apt policy <package> 

Ou l'alternative avec plus d'informations apt show <package>, ligne commençant par "APT-Sources:" .

Description: ce paquet fournit des outils de ligne de commande pour la recherche et la gestion, ainsi que la recherche d'informations sur les paquets, ainsi qu'un accès de bas niveau à toutes les fonctionnalités de la bibliothèque libapt-pkg. Ceux - ci comprennent: apt-get, apt-cache, apt-cdrom, apt-config, apt-key.

Commandes de base de apt --help

Autres sous-commandes faciles à retenir:

  • apt list - liste les paquets en fonction des noms de paquets
  • apt search - rechercher dans les descriptions de paquets
  • apt show - Afficher les détails du forfait
  • apt update - mettre à jour la liste des paquets disponibles
  • apt install - installer des paquets
  • apt remove - supprimer les paquets
  • apt purge- supprimer les packages et les fichiers de configuration :

    Supprimer un paquet supprime toutes les données empaquetées, mais laisse généralement de petits fichiers de configuration (modifiés) derrière, au cas où la suppression serait un accident. En émettant simplement une demande d'installation pour le paquet supprimé accidentellement, sa fonction sera restaurée comme auparavant. D'autre part, vous pouvez vous débarrasser de ces restes en appelant purge, même sur les paquets déjà supprimés. Notez que cela n’affecte pas les données ou la configuration stockées dans votre répertoire de base.

  • apt upgrade - mettre à jour le système en installant / mettant à jour des paquets

  • apt full-upgrade - mettre à jour le système en supprimant / installant / mettant à jour les paquets
  • apt edit-sources - éditer le fichier d'information source
Pablo A
la source
apt policy xxxsemble identique à apt-cache policy xxx, peut-être que cela aurait dû être un commentaire à la place. Ou du moins, mentionnez qu'il apt showsemble nécessaire de -achanger de "disques" à partir d'autres sources
Xen2050
6

Malheureusement, ces informations ne sont pas enregistrées lors de l'installation du package. Vous pouvez deviner de manière décente si le référentiel est toujours dans la liste des sources et qu'il contient toujours le package:

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

Même Synaptic ne peut pas dire si vous désactivez le référentiel et le mettez à jour.

Kanaka
la source
4
sudo grep *packagename* /var/lib/apt/lists/* | grep "Filename:"

la source

sBlatt
la source
1

C'est un peu plus précis:

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

La version la plus récente sera généralement installée à moins que vous ayez défini apt-pinning ou installé explicitement une version particulière.

mchid
la source