web-dev-qa-db-fra.com

Existe-t-il une commande apt permettant de télécharger un fichier deb des référentiels vers le répertoire actuel?

Je suis souvent intéressé par les déclencheurs d'installation (postinst, postrm) ou par certaines parties de paquets (comme /usr/share et /etc). Actuellement, j'exécute 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 packages via http://packages.ubuntu.com/ :

  1. Recherche de [package-name]
  2. Sélectionnez le package
  3. Cliquez sur AMD64/i386 pour le télécharger
  4. Télécharger le fichier actuel

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

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

Je ne pouvais pas trouver quelque chose comme ça dans le page de manuel d'apt-get . Le plus proche que j'ai trouvé était le commutateur --download-only, mais cela place le paquet dans /var/cache/apt/archives (ce qui nécessite des autorisations root) et non dans le répertoire en cours.

43
Lekensteyn

Vous pouvez utiliser la sous-commande download de apt, apt-get ou aptitude. Par exemple, si $ PKG est le package que vous souhaitez, l'un de ceux-ci fera:

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

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

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

Cependant, tous les packages nécessaires à son installation seront récupérés. Vous pourrez donc tenter de le limiter:

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

Vous pouvez aussi mettre une ligne wget dans une fonction pour pouvoir l'utiliser comme commande apt-download avec le nom du paquet comme paramètre:

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

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

56
Kees Cook
Sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

Remarque:

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

8
mount.cifs

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

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

$ apt-get download ranger

Résulte en:

$ ls . | grep ranger
ranger_1.6.0-1_all.deb
6
Aaron Santavicca

Si vous voulez télécharger tous les paquets deb d'une liste, vous pouvez faire ceci:

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 cela t'aides. ;)

3
Jayme Tosi Neto

Sudo apt-get install devscripts

dget [package-name]

2
Michael Terry

/var/cache/apt/archives est lisible dans le monde entier. Après apt-get -d, extrayez-le 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 sauvegardés dans foo/.

0
psusi