Existe-t-il une commande apt pour télécharger un fichier deb depuis les référentiels vers le répertoire en cours?

36

Je suis souvent intéressé par les déclencheurs d’installation (postinst, postrm) ou certaines parties de packages (comme /usr/share et /etc ). Actuellement, je lance la commande suivante pour récupérer le code source:

apt-get source [package-name]

L'inconvénient est que ce fichier est souvent beaucoup plus volumineux que le paquet binaire et ne reflète pas l'arborescence d'installation.

En ce moment, je télécharge les paquets via lien :

  1. Rechercher [package-name]
  2. Sélectionnez le package
  3. Cliquez sur amd64 / i386 pour le télécharger
  4. Télécharger le fichier réel

Cela prend trop de temps pour moi et en tant que personne qui aime vraiment le shell, j'aimerais faire quelque chose comme la prochaine commande ( imaginary ):

apt-get get-deb-file [package-name]

Je n’ai pas pu trouver quelque chose de ce genre dans la page du manuel d’apt-get . Le plus proche, j'ai trouvé le commutateur --download-only , mais cela place le package dans /var/cache/apt/archives (ce qui nécessite des autorisations root) et non dans le répertoire en cours.

    
posée Lekensteyn 15.03.2011 - 14:17
la source

6 réponses

47

Vous pouvez utiliser la sous-commande download de apt , apt-get ou aptitude . Par exemple, si $ PKG est le package que vous souhaitez, l’une de ces actions est la suivante:

apt-get download $PKG
apt download $PKG
aptitude download $PKG

Cela ne nécessite pas de privilèges root. La même chose peut également être approchée en utilisant apt-get et wget :

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

Cela va cependant récupérer tous les paquets nécessaires à l’installation du paquet, vous pouvez donc tenter de le limiter:

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

Vous pouvez également placer une ligne wget dans une fonction pour pouvoir l'utiliser comme une commande apt-download avec le nom du package en tant que paramètre:

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq  | cut -d"'" -f2); }

Notez les modifications: $ PKG est remplacé par $ 1 et le paramètre -c permet de continuer les téléchargements interrompus.

    
réponse donnée Kees Cook 16.03.2011 - 08:29
la source
8
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

Note:

Vous devez créer un dossier nommé partiel dans le dossier de destination.

    
réponse donnée mount.cifs 15.03.2011 - 14:33
la source
6

Dans Ubuntu 14.04 ( apt version du package 1.0.1ubuntu2 , je crois), apt-get inclut la commande download pour télécharger le package donné en tant que .deb dans le répertoire en cours.

Par exemple, supposons que nous voulions télécharger le gestionnaire de fichiers Ranger :

$ apt-get download ranger

Résultats dans:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb
    
réponse donnée Aaron Santavicca 18.07.2015 - 17:10
la source
3

Si vous voulez télécharger tous les paquets deb à partir d’une liste, vous pouvez le faire:

cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget

Il suffit de mettre un nom de paquet par ligne. Comme dans un fichier requirements.txt. Par exemple, avec un contenu comme celui-ci:

apache2-mpm-event
curl
dmidecode
ethtool
libapache2-mod-wsgi
libapache2-mod-python

J'espère que ça aide. ;)

    
réponse donnée Jayme Tosi Neto 14.04.2015 - 20:35
la source
0

/var/cache/apt/archives est lisible par le monde. Après apt-get -d , extrayez-le simplement dans votre répertoire personnel. Exécutez dpkg -e /var/cache/apt/archives/foo_version.deb foo dans votre répertoire personnel et les fichiers de contrôle seront transférés dans foo/ .

    
réponse donnée psusi 15.03.2011 - 15:12
la source
0

sudo apt-get install devscripts

dget [package-name]

    
réponse donnée Michael Terry 14.04.2015 - 20:49
la source

Lire d'autres questions sur les étiquettes