Quelle est la différence entre apt-get install et apt-get build-dep?

33

Sur la page d' apt-get man , on peut trouver ceci:

install pkg (s)
Cette option est suivie par un ou plusieurs packages souhaités pour l'installation. Chaque paquet est un nom de paquet, pas un nom de fichier qualifié complet (par exemple, dans un système Fedora Core, glibc serait l'argument fourni et non pas glibc-2.4.8.i686.rpm).
Tous les packages requis par le (s) package (s) spécifié (s) pour l'installation seront également récupérés et installés .
[...]

build-dep source_pkg Force
apt-get à installer / supprimer des paquetages dans le but de satisfaire les dépendances de construction d'un paquet source.

On dirait que les deux essaient de satisfaire les dépendances, mais j’ai eu des résultats différents lors de l’ installationmatplotlib avec chacun d’eux: apt-get intallne marchait pas avec pip install matplotlibmes versions ultérieures dans mon environnement virtuel, alors apt-get build-depque *.

*Ouais, je devais installer matplotlibdans un venv, mais pip ne pouvait pas résoudre certaines des dépendances, alors j'ai utilisé paresseusement apt afin de le résoudre

Anto
la source

Réponses:

39

La version courte.

apt-get install

installe un nouveau package, résolvant et téléchargeant automatiquement les packages dépendants. Si le paquet est installé, essayez de mettre à niveau vers la dernière version.

apt-get build-dep

Amène apt-get à installer / supprimer des paquetages pour tenter de satisfaire les dépendances de construction d’un paquet source.

La commande sudo apt-get build-dep packagenamesignifie installer toutes les dépendances pour 'nom_package' afin que je puisse le construire ". Donc, build-dep est une commande apt-get tout comme installer, supprimer, mettre à jour, etc.

La build-depcommande recherche dans les référentiels locaux du système et installe les dépendances de construction du package. Si le package n'existe pas dans le référentiel local, il renverra un code d'erreur.

Pour installer matplotlib, voir Installation de matplotlib sur Ubuntu

Source: ManPage & Ravi Saive

Mitch
la source
19

La différence est de savoir si les dépendances sont nécessaires au moment de l' exécution par opposition à au moment de la construction .

Par exemple, je construis peut-être un binaire qui utilise openssl. Au moment de la construction , il me faudrait les fichiers d’en-tête openssl, qui sont au format libssl-dev. J'énumérerais alors ceci en tant que Build-Depends.

Cependant, le binaire et le package résultants n'ont pas besoin de l'en-tête ni d'autres fichiers de développement. Par conséquent, lors de l' installation , je n'ai pas besoin de cela libssl-dev. Ce ne serait pas dans Depends, alors. Mais libsslla bibliothèque d’exécution à laquelle mon fichier binaire lié doit être située Depends.

Les sections man que vous avez citées indiquent ceci (il est question de "satisfaire les dépendances de construction " d'un paquet), mais sans connaissance préalable du moment où Build-Depends est utilisé, cela peut prêter à confusion.

Consultez le guide des politiques de Debian pour la définition des champs du fichier de contrôle:

http://www.debian.org/doc/debian-policy/ch-controlfields.html

voici la section sur Build-Depends. Notez que c'est dans l'en- tête "dépendances pour les paquets sources ":

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps

Et celui-ci parle de dépend. Notez qu'il est dans l'en- tête des packages binaires :

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps

roadmr
la source
Merci. Il semblerait que j’aurais besoin de construire-dep pour construire une bibliothèque à partir des sources .. selon votre description.
kchoi