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

28

Sur la page de apt-get man , vous trouverez ceci:

  

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

     

build-dep source_pkg
  Causes apt-get à installer / supprimer des paquets dans un    Essayez de satisfaire les dépendances de construction pour un package source.

Il semble que les deux essayent de satisfaire les dépendances, mais j'ai eu des résultats différents en installant matplotlib avec chacun de ceux-ci: apt-get intall ne fonctionnait pas avec mon pip install matplotlib ultérieur dans mon virtualenv, tandis que apt-get build-dep le faisait *.

* Ouais, j'avais besoin d'installer matplotlib dans un venv, mais pip ne pouvait pas résoudre certaines des dépendances, donc j'ai utilisé paresseusement pour le résoudre

    
posée Anto 26.07.2013 - 14:39
la source

2 réponses

33

La version courte.

apt-get install

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

apt-get build-dep

Cause à apt-get d’installer / supprimer des paquets pour tenter de satisfaire les dépendances de construction d’un paquet source.

La commande sudo apt-get build-dep packagename signifie que vous devez installer toutes les dépendances pour le "packagename" afin que je puisse le construire ". Ainsi, build-dep est une commande apt-get comme install, remove, update, etc.

La commande build-dep recherche les référentiels locaux du système et installe les dépendances de génération pour le package. Si le package n'existe pas dans le référentiel local, il retournera un code d'erreur.

Pour installer matplotlib, consultez Pour installer matplotlib sur Ubuntu

Source: ManPage & amp; Ravi Saive

    
réponse donnée Mitch 26.07.2013 - 15:00
la source
16

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

Par exemple, peut-être que je construis un binaire qui utilise openssl. Au moment de build , j'aurais besoin des fichiers d'en-tête openssl, qui sont en libssl-dev . Je voudrais alors lister ceci comme un Build-Depends .

Cependant, le binaire et le package qui en résultent n’ont pas besoin de l’en-tête et des autres fichiers de développement, aussi n’a-t-il pas besoin de libssl-dev pour installer . Ce ne serait pas dans Depends , alors. Mais libssl , la bibliothèque d'exécution à laquelle mes binaires sont liés, devrait être dans Depends .

Les sections man que vous avez citées indiquent ceci (il est question de "satisfaire les dépendances build " d'un package), mais sans connaissance préalable de l'utilisation de Build-Depends, cela peut être déroutant.

Consultez le guide des règles Debian pour la définition des champs de fichier de contrôle:

lien

voici la section sur Build-Depends. Notez qu'il se trouve sous l'en-tête "dépendances pour les sources ":

lien

Et celui-ci parle de Depends. Notez son en-tête sous l'en-tête Binary packages :

lien

    
réponse donnée roadmr 26.07.2013 - 15:43
la source

Lire d'autres questions sur les étiquettes