43 votes

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

Sur la page de l'homme apt-get, on peut trouver ceci :

install pkg(s)
Cette option est suivie par un ou plusieurs packages désirés pour l'installation. Chaque package est un nom de package, pas un nom de fichier complètement qualifié (par exemple, dans un système Fedora Core, glibc serait l'argument fourni, 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
Fait en sorte que apt-get installe/supprime des packages dans le but de satisfaire les dépendances de compilation pour un package source.

Il semble que les deux tentent de satisfaire des dépendances, mais j'ai obtenu des résultats différents en installant matplotlib avec chacun d'eux : apt-get intall n'a pas fonctionné avec mon pip install matplotlib ultérieur dans mon environnement virtuel, tandis que apt-get build-dep a fait l'affaire*.

* Oui, j'avais besoin d'installer matplotlib dans un venv, mais pip n'a pas pu résoudre certaines des dépendances, alors j'ai paresseusement utilisé apt pour le résoudre

49voto

Mitch Points 102545

La version abrégée.

apt-get install

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

apt-get build-dep

Force apt-get à installer/supprimer des packages afin de satisfaire les dépendances de construction d'un package source.

La commande sudo apt-get build-dep nomdupackage signifie "installer toutes les dépendances pour 'nomdupackage' afin de pouvoir le construire". Ainsi, build-dep est une commande apt-get comme install, remove, update, etc.

La commande build-dep recherche les dépôts locaux du système et installe les dépendances de construction pour le package. Si le package n'existe pas dans le dépôt local, elle renverra un code d'erreur.

Pour installer matplotlib, consultez Pour installer matplotlib sur Ubuntu

Source : ManPage & Ravi Saive

26voto

roadmr Points 32606

La différence réside dans le fait que les dépendances sont nécessaires au moment de l'exécution plutôt qu'au moment de la construction.

Par exemple, peut-être que je construis un binaire qui utilise openssl. Au moment de la construction, j'aurais besoin des fichiers d'en-tête openssl, qui se trouvent dans libssl-dev. Je les listerais ensuite en tant que Build-Depends.

Cependant, le binaire et le package résultant n'ont pas besoin des fichiers d'en-tête et d'autres fichiers de développement, donc au moment de l'installation, je n'aurais pas besoin de libssl-dev. Ce ne serait pas dans Depends, alors. Mais libssl, la bibliothèque d'exécution à laquelle mon binaire est lié, devrait être dans Depends.

Les sections du manuel que vous avez citées indiquent ceci (il mentionne "satisfaire les dépendances de la construction d'un package"), mais sans connaissances préalables sur l'utilisation de Build-Depends, cela peut être déroutant.

Jetez un œil au guide de la politique Debian pour les définitions des champs des fichiers de contrôle:

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

voici la section sur Build-Depends. Notez qu'elle est sous l'en-tête "dépendances pour les packages source":

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

Et celui-ci parle de Depends. Notez qu'il est sous l'en-tête Paquets Binaires:

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

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