85 votes

Comment télécharger toutes les dépendances et tous les paquets dans un répertoire ?

J'essaie d'installer un paquet sur une machine sans connexion Internet. Ce que je veux faire, c'est télécharger tous les paquets et les dépendances sur une machine AVEC une connexion Internet, puis tout envoyer par sneaker-net sur l'ordinateur hors ligne.

J'ai joué avec le apt-get y apt-cache mais je n'ai pas trouvé de moyen rapide et facile de télécharger le paquet et les dépendances en une seule fois dans un répertoire de mon choix. Comment faire ? Est-ce que j'aborde ce problème correctement ? Comment installer des paquets hors ligne qui ont beaucoup de dépendances ?

100voto

onno Points 11

La réponse marquée présente le problème que les paquets disponibles sur la machine qui effectue les téléchargements peuvent être différents de ceux de la machine cible, et donc que le jeu de paquets peut être incomplet.

Pour éviter cela et obtenir toutes les dépendances, utilisez ce qui suit :

apt-get download $(apt-rdepends <package>|grep -v "^ ")

Certains paquets renvoyés par apt-rdepends n'existent pas avec le nom exact de apt-get download à télécharger (par exemple, libc-dev ). Dans ce cas, filtrez ces noms exacts (assurez-vous d'utiliser la fonction ^<NAME>$ de sorte que d'autres noms apparentés, par exemple libc-dev-bin que faire ne sont pas ignorées).

apt-get download $(apt-rdepends <package>|grep -v "^ " |grep -v "^libc-dev$")

Une fois téléchargé, vous pouvez déplacer le .deb sur une machine sans Internet et les installer :

sudo dpkg -i *.deb

53voto

panticz.de Points 14

La même question a déjà reçu une réponse ici : Comment lister/télécharger les dépendances récursives d'un paquetage debian ?

essayer :

PACKAGES="wget unzip"
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
  --no-conflicts --no-breaks --no-replaces --no-enhances \
  --no-pre-depends ${PACKAGES} | grep "^\w")

42voto

metalheart Points 3376
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>

21voto

FSp Points 153

En aptitude --download-only ... L'approche ne fonctionne que si vous avez une distro debian avec une connexion internet entre les mains.

Si vous ne le faites pas, je pense qu'il est préférable d'exécuter le script suivant sur la machine debian déconnectée :

apt-get --print-uris --yes install <my_package_name> | grep ^\' | cut -d\' -f2 >downloads.list

déplacez le fichier downloads.list sur une machine linux (ou non linux) connectée, et exécutez :

wget --input-file myurilist

Ensuite, vous pouvez les copier sur une clé USB et les installer sur votre machine debian déconnectée.

Crédits : http://www.tuxradar.com/answers/517

9voto

Ceci téléchargera tous les Debs dans le répertoire courant, et n'échouera PAS s'il ne trouve pas de candidat.

De plus, il n'est PAS nécessaire d'avoir sudo pour exécuter sript !

nano getdebs.sh && chmod +x getdebs.sh && ./getdebs.sh

#!/bin/bash

package=ssmtp

apt-cache depends "$package" | grep Depends: >> deb.list

sed -i -e 's/[<>|:]//g' deb.list

sed -i -e 's/Depends//g' deb.list

sed -i -e 's/ //g' deb.list

filename="deb.list"

while read -r line
do
    name="$line"
    apt-get download "$name"
done < "$filename"

apt-get download "$package"

Note : J'ai utilisé cet exemple parce que j'essayais en fait de DL les Deps pour SSMTP et cela a échoué sur debconf-2.0, mais ce script m'a permis d'obtenir ce dont j'avais besoin !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X