apt-get build-dep est incapable de trouver un paquet source

16

J'ai déjà suivi ce guide pour désactiver le collage du bouton central de la souris sur mon Ubuntu 12.04.

Fonctionne comme un charme.

Maintenant, j'essaie de faire la même chose sur mon Linux Mint 17. Quand j'essaie de

sudo apt-get build-dep libgtk2.0-0

cela me donne la sortie suivante:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'
E: Unable to find a source package for gtk+2.0

Pour moi, il semble qu'apt-get soit en quelque sorte "résolu" 'libgtk2.0-0'par 'gtk+2.0', mais ne trouve aucun paquet nommé comme ça.

EDIT: bien que je puisse maintenant compiler le programme (voir ma réponse), je ne sais toujours pas ce que cela Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'signifie. Toute idée à ce sujet serait appréciée, merci!

panepeter
la source
Avez-vous activé le deb-srcréférentiel correspondant dans votre /etc/apt/sources.list?
Steeldriver

Réponses:

18

Comme d'autres l'ont déjà noté, assurez-vous que pour chaque deb …entrée dans /etc/apt/sources.listet /etc/apt/sources.list.d/*, vous avez une deb-src …entrée correspondante . Le reste de la ligne doit être identique. L' debentrée est pour les packages binaires (c'est-à-dire prêts à installer), la deb-srcest pour les packages source (c'est-à-dire prêts à compiler). La raison pour laquelle les deux types de sources sont séparées est qu'elles sont gérées très différemment: les packages binaires ont un mécanisme de suivi des dépendances et une liste actuellement installée, tandis que les packages source sont uniquement suivis afin de pouvoir être téléchargés facilement. Notez que lorsque vous discutez des référentiels de packages, le mot source signifie deux choses indépendantes: une source comme dans un emplacement de téléchargement des packages et un package source par opposition à un package binaire.

libgtk2.0-0est le nom d'un package binaire. Il est construit à partir d'un package source appelé gtk+2.0. La raison pour laquelle les noms des packages source et binaire ne correspondent pas toujours est que la construction d'un package source peut produire plusieurs packages binaires; par exemple, gtk+2.0est la source de 14 paquets car il est divisé en deux bibliothèques ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (… -dev ), documentation for developers (… -doc ), companion programs (libgtk2.0-bin`), etc.

Vous pouvez voir le nom du package source correspondant à un package binaire en vérifiant la Source: …ligne dans la sortie de dpkg -s BINARY_PACKAGE_NAME(si le package est installé) ou apt-cache show BINARY_PACKAGE_NAME. Vous pouvez répertorier les packages binaires produits par un package source avec aptitude search '?source-package(^SOURCE_PACKAGE_NAME$).

La commande apt-get sourcetélécharge un package source. Si vous lui donnez un argument qui n'est pas un package source connu, il le recherche dans la base de données des packages binaires installables et essaie de télécharger le package source correspondant. La commande apt-get build-depsuit la même approche pour déduire le nom d'un package source, puis interroge la base de données du package source pour obtenir une liste des packages binaires (la liste dans le Build-Dep:champ) et installe ces packages binaires.

L'interface graphique des sources logicielles a une case à cocher «activer les référentiels avec le code source» pour les référentiels officiels, assurez-vous qu'elle est cochée. Si vous ajoutez manuellement des référentiels tiers, assurez-vous d'ajouter à la fois les lignes deb-srcet deb.

Gilles 'SO- arrête d'être méchant'
la source
6

Grâce à @steeldriver, j'ai compris quoi faire.

Juste eu à ajouter le ling suivant à mon /etc/apt/sources.list:

deb-src ftp://ftp.de.debian.org/debian/ stable main contrib

Les référentiels deb-src contiennent les paquets sources (par opposition aux paquets binaires prêts à installer) nécessaires à la compilation.

Modifier: Après avoir ajouté cela, vous devez exécuter sudo apt-get update

panepeter
la source
5

Méthode CLI

sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update

Testé sur l'image Docker d'Ubuntu 18.04. Après ce changement, je peux réussir par exemple:

sudo apt-get build-dep hello

et avant le changement, il a échoué avec l'erreur:

E: You must put some 'source' URIs in your sources.list

software-properties-gtk option "Code source"

Depuis l'interface graphique, vous pouvez exécuter:

software-properties-gtk

puis sous l'onglet "Logiciel Ubuntu" cliquez sur "Code source":

entrez la description de l'image ici

Cela a ajouté quelques deb-srclignes sous /etc/apt/sources.list, et maintenant je peux le faire sudo apt-get build-dep <package>.

Testé sur Ubuntu 16.04 au 18.04.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
la source