Wie kann ich eine einzelne Datei aus einem Paket wiederherstellen?

19

Wie kann ich das tun, ohne auch die restlichen Dateien neu zu installieren?

Georg Schölly
quelle

Antworten:

21

Laden Sie das Paket beispielsweise transmission-daemonmit herunter

sudo apt-get --download-only install transmission-daemon

Packen Sie das Paket mit aus

mkdir ~/dummy
dpkg-deb -x /var/cache/apt/archives/transmission-daemon_*.deb ~/dummy

Stellen Sie beispielsweise die Datei wieder her /etc/init.d/transmission-daemon

sudo cp ~/dummy/etc/init.d/transmission-daemon /etc/init.d

Entferne das Verzeichnis

rm -rf ~/dummy
Enzotib
quelle
2
Es sollte auch beachtet werden, dass apt-get downloadDownloads in das aktuelle Arbeitsverzeichnis.
4
Sie können vermeiden , das gesamte Archiv Extrahieren eine Pipeline mit Beteiligung dpkg-deb --fsys-tarfileund tar, etwa so:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro
1
/tmp/dummyDas scheint bequemer ~/dummyund die Notwendigkeit, es zu entfernen.
Karl Richter
Vorziehen, apt-get downloadda apt-get --download-only installwird aufhören, wenn das Paket bereits installiert ist. Wie aus der Antwort von camypaj hervorgeht.
Julien Carsique
Um den Kommentar von kojiro zu erweitern, musste ich mir ansehen, wie der Standardwert für nginxdie worker_processesEinstellung auf einer Reihe von Maschinen lautet . So kam ich mit dem folgenden Befehl auf: for f in /var/cache/apt/archives/nginx-common*; do dpkg-deb --fsys-tarfile "$f" | tar xO ./etc/nginx/nginx.conf | grep worker_processes; done.
x-yuri
12

Ich weiß, dass dies ein bisschen alt ist, aber hier ist meine Verbesserung:

$ sudo apt-get download <package-name>

anstatt

$ sudo apt-get --download-only install <package-name>

Ich hatte eine Situation, in der das Paket bereits installiert war (daher funktionierte die vorgeschlagene Lösung nicht), und ich wollte nur eine Konfigurationsdatei wiederherstellen, um das Problem zu beheben.

Prost

camypaj
quelle
3
Wenn Sie ein Paket bereits installiert haben, befindet es sich normalerweise in /var/cache/apt/archives/und Sie sollten es nicht herunterladen müssen.
Ahmed Masud
2
Ja, aber nur, wenn das Paket vor relativ kurzer Zeit installiert wurde und die Archive nicht manuell oder automatisch bereinigt wurden.
Joeytwiddle