Installer uniquement les dépendances d'un paquet donné dans Debian ou Ubuntu (apt)

18

Existe-t-il un meilleur moyen d'installer uniquement les dépendances requises d'un package, au lieu de l'installer directement avec apt-get (ou tout autre frontend de dpkg), puis de le supprimer immédiatement, en laissant de côté ses dépendances?

Vinícius Ferrão
la source

Réponses:

22

apt-cache depends pkgname affichera les dépendances d'un package.

Si vous voulez tout en une seule commande, vous pourriez faire pire que:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
la source
16

apt-get fournit une commande pour cela ...

apt-get build-dep <package name>

À partir des pages de manuel que vous obtenez

build-dep oblige apt-get à installer / supprimer des packages pour tenter de satisfaire les dépendances de build d'un package source. Par défaut, les dépendances sont satisfaites pour construire le package en mode natif. Si vous le souhaitez, une architecture hôte peut être spécifiée avec l'option --host-architecture à la place.

Nathan Crock
la source
9
Ne pourrait-il pas y avoir de différence entre build dependencieset dependencies? Comme dans, si vous installez normalement un programme, vous obtenez des dépendances qu'il doit réellement exécuter, et avec les dépendances de construction, je pense plus aux bibliothèques, aux compilateurs, à des trucs comme ça. Donc, comme je ne suis pas sûr (cette réponse a des votes positifs) mais il me semble qu'il n'est pas trivial que l'obtention de dépendances de construction soit la même chose que l'obtention des dépendances (d'exécution) des packages?
Nanne
1
Vous avez raison. Au moment de répondre à cette question, il y a très longtemps, je n'avais pas une compréhension complète de la différence entre les dépendances de génération (temps de génération) et les dépendances (temps d'exécution). Merci d'avoir clarifié Nanne!
Nathan Crock
4

aptitude vous permettra de spécifier une requête au lieu d'un nom de package lors de l'installation. Si vous souhaitez installer les dépendances du package nommé foo, vous pouvez installer les packages qui ont une dépendance inverse sur foo:

aptitude install '?reverse-depends(foo)'

ou

aptitude install '~Rfoo'

Le problème avec l'installation puis la suppression d'un package est que tous les packages qui sont installés en tant que dépendances seront marqués comme "installés automatiquement" et seront supprimés par toute action d'installation / suppression / mise à niveau par aptitude ou lorsque vous exécutez, apt-get autocleansauf si vous exécutez les marquer comme installés manuellement à l'aide de aptitude markou de la apt-markcommande.

Cependant, cela soulève la question de savoir pourquoi vous voudriez faire cela, ma meilleure supposition est que vous essayez d'installer des dépendances pour certains logiciels que vous allez compiler à la main. Dans ce cas, vous devez d'abord installer les dépendances de construction avec apt-get build-dep packagename, mais vous devez ensuite créer un package factice qui a les dépendances d'exécution (qui diffèrent généralement des dépendances de build) en utilisant le equivpackage pour construire un package factice avec les dépendances correctes pour votre programme compilé manuellement. Voir les informations sur equivsdans le APT HOWTO

Ragoût
la source
3

En cas de construction de pkgname à partir des sources

apt-get build-dep pkgname
eri
la source
1
dépendances de construction sont des dépendances non exécution
sehe
>> En cas de construction de pkgname à partir des sources
eri
Je ne sais pas où cela est garanti / documenté. De plus, cela ne fait toujours pas la même chose pour n'importe quel but. J'utilise build-dep tout le temps mais j'aimerais vraiment une meilleure réponse à la question actuelle. J'en ai besoin aussi.
sehe