Comment lister / télécharger les dépendances récursives d'un paquet debian?

j'ai besoin de lister/télécharger toutes les dépendances récursives d'un paquet debian.

supposez que je doive installer le paquet A. deb et cela dépend du paquet B. deb et nouveau paquet B. deb dépend du Paquet C. deb.

j'ai besoin de télécharger tous les paquets dépendants récursifs afin qu'ils puissent être installés sur une autre machine sans accès internet.

Merci.

17
demandé sur Oerd 2014-02-25 12:13:07

4 réponses

pour une raison quelconque apt-rdepends n'a pas fonctionné pour moi (lors de la recherche du paquet" docker-engine", il a manqué la dépendance sur libltdl7 qui a été introduit avec docker-engine 1.11.1-0 ).

donc j'ai trouvé la suite de commande suivante.

liste récursive des dépendances

$ apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends <your-package-here> | grep "^\w" | sort -u

(vous devez évidemment changer <your-package-here> à la fin de la ligne avec le paquet que vous voulez analyser)

la clé ici est l'option --recurse . Malheureusement, vous ne pouvez pas spécifier le contenu que vous voulez (ou je n'ai pas trouvé le chemin) donc vous devez désactiver toutes les dépendances indésirables pour garder seulement les "dépendances". C'est un peu verbeux et difficile à retenir!

De l'apt-cache de la page de manuel:

par défaut les depends et rdepends impriment toutes les dependencies

téléchargez ces dépendances

afin de télécharger ces dépendances, lancez la commande suivante qui les téléchargera dans le répertoire de travail courant:

$ apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends <your-package-here> | grep "^\w" | sort -u)

si vous souhaitez installer ces dépendances

cela élargit légèrement la question posée, mais il semble correspondre à intention de la question.

vous avez besoin de construire le index de la juste téléchargé paquet. Ceci est fait à partir du même dossier où tout .DEB a été téléchargé:

$ dpkg-scanpackages . | gzip -9c > Packages.gz

alors il suffit de copier ce dossier (tous .deb + les paquets.gz file) au système cible qui n'a pas accès à Internet et ajoute le dossier à la liste des sources APT.

$ echo "deb file:<your folder here> ./" | sudo tee -a /etc/apt/sources.list
$ sudo apt-get update

et voilà

sur un système sans accès Internet, je peux installer un paquet (Docker dans mon exemple) et ses dépendances:

$ sudo apt-get install docker-engine
23
répondu Yann Vo 2018-02-07 11:34:35

vous pouvez utiliser apt-rdepends pour obtenir toutes les dépendances pour un paquet récursivement. Et en transmettant le résultat à grep, vous ne pouvez avoir que les noms de paquets et omettre les informations inutiles.

exemple :

 $ apt-rdepends cowsay | grep -E '^[a-zA-Z0-9]'

Sortie :

cowsay
perl
libbz2-1.0
libc6
libgcc1
gcc-4.9-base
multiarch-support
libdb5.3
libgdbm3
dpkg
liblzma5
libselinux1
libpcre3
tar
libacl1
libattr1
zlib1g
install-info
perl-base
perl-modules

vous pouvez ensuite télécharger ces paquets en utilisant apt-get download $package et les installer hors ligne sur votre machine.

5
répondu Mehdi Yedes 2016-04-21 10:46:09

comme midihenry a souligné-installer le paquet apt-rdepends et ensuite exécuter ce

$ apt-rdepends gcc | awk ' ~ /^Depends:/{print }' | xargs apt-get download

cette ligne obtiendra toutes les dépendances récursivement et, en regardant la deuxième pipe, va télécharger tous les paquets par nom à partir du stdio, qui est ce que la ligne -

awk ~ /^Depends:/{print } ne. imprime les noms des paquets. Si vous exécutez ces commandes additivement, vous verrez ce que je veux dire.

2
répondu Evgeny Danilenko 2017-05-23 12:10:27

si vous voulez seulement télécharger un paquet Debian, alors:

apt-get -d package

ou

apt-get download package

Sinon si vous voulez juste une liste des dépendances d'un paquet:

apt-cache depends package

évidemment, remplacez package par le nom du paquet que vous souhaitez consulter.

0
répondu Oerd 2014-02-25 08:22:53