it-swarm.com.de

Gibt es einen apt-Befehl zum Herunterladen einer deb-Datei aus den Repositorys in das aktuelle Verzeichnis?

Ich interessiere mich oft für die Installationsauslöser (postinst, postrm) oder bestimmte Teile von Paketen (wie /usr/share und /etc). Derzeit führe ich den nächsten Befehl zum Abrufen des Quellcodes aus:

apt-get source [package-name]

Der Nachteil ist, dass diese Datei oft viel größer als das Binärpaket ist und nicht den Installationsbaum widerspiegelt.

Im Moment lade ich die Pakete über http://packages.ubuntu.com/ herunter:

  1. Suche nach [package-name]
  2. Paket auswählen
  3. Zum Download auf AMD64/i386 klicken
  4. Laden Sie die aktuelle Datei herunter

Das dauert mir zu lange und als jemand, der die Shell wirklich mag, möchte ich so etwas wie den nächsten ( imaginären ) Befehl machen:

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

Ich konnte so etwas nicht in der apt-get-Manpage finden. Am ehesten habe ich den Schalter --download-only gefunden, der das Paket jedoch in /var/cache/apt/archives (für den Root-Berechtigungen erforderlich sind) und nicht im aktuellen Verzeichnis ablegt.

43
Lekensteyn

Sie können den Unterbefehl download von apt, apt-get oder aptitude verwenden. Wenn zum Beispiel $ PKG das gewünschte Paket ist, ist Folgendes möglich:

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

Dies erfordert keine Root-Rechte. Das gleiche kann auch mit apt-get und wget approximiert werden:

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

Dadurch werden jedoch alle für die Installation des Pakets erforderlichen Pakete abgerufen, sodass Sie versuchen können, es stattdessen einzuschränken:

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

Sie können auch eine wget-Zeile in eine Funktion einfügen, um sie als Befehl apt-download mit dem Paketnamen als Parameter verwenden zu können:

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

Beachten Sie die Änderungen: Die $ PKG wird durch $ 1 ersetzt, und der Parameter -c ermöglicht das Fortsetzen unterbrochener Downloads.

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

Hinweis:

Sie müssen einen Ordner mit dem Namen partial im Zielordner erstellen.

8
mount.cifs

In Ubuntu 14.04 (apt Paketversion 1.0.1ubuntu2, glaube ich) enthält apt-get den Befehl download, um das angegebene Paket als .deb in das aktuelle Verzeichnis herunterzuladen .

Angenommen, wir möchten den Dateimanager Ranger herunterladen:

$ apt-get download ranger

Ergebnisse in:

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

Wenn Sie alle deb-Pakete von einer Liste herunterladen möchten, können Sie dies tun:

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

Geben Sie einfach einen Paketnamen pro Zeile ein. Wie in einer requirements.txt-Datei. Zum Beispiel mit Inhalten wie diesem:

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

Hoffe das hilft. ;)

3
Jayme Tosi Neto

Sudo apt-get install devscripts

dget [package-name]

2
Michael Terry

/var/cache/apt/archives ist weltweit lesbar. Nach apt-get -d entpacken Sie es einfach von dort in Ihr Home-Verzeichnis. Führen Sie dpkg -e /var/cache/apt/archives/foo_version.deb foo aus, während Sie sich in Ihrem Ausgangsverzeichnis befinden, und die Steuerdateien werden in foo/ gespeichert.

0
psusi