Come ripristinare un singolo file da un pacchetto?


Risposte:


21

Scarica il pacchetto, ad esempio transmission-daemon, con

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

decomprimere il pacchetto con

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

ripristinare il file, ad esempio /etc/init.d/transmission-daemon

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

rimuovere la dir

rm -rf ~/dummy

2
Va anche notato che i apt-get downloaddownload nella directory di lavoro corrente.

4
Puoi evitare di estrarre l'intero archivio usando una pipeline che coinvolge dpkg-deb --fsys-tarfilee tar, in questo modo:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro

1
/tmp/dummysembra più conveniente ~/dummye la necessità di rimuoverlo.
Karl Richter,

Preferisci apt-get downloadpoiché apt-get --download-only installsi arresterà se il pacchetto è già installato. Come indicato dalla risposta di Camypaj.
Julien Carsique,

Per espandere il commento di Kojiro, ho dovuto guardare a ciò che è il valore predefinito di nginx's worker_processesimpostazione su una gamma di macchine. Così mi è venuta con il seguente comando: 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

So che è un po 'vecchio, ma ecco il mio miglioramento:

$ sudo apt-get download <package-name>

invece di

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

Ho avuto una situazione in cui il pacchetto era già installato (quindi la soluzione proposta non funzionava) e volevo ripristinare solo un file di configurazione, al fine di risolvere il problema.

Saluti


3
se hai già installato un pacchetto, in genere si trova in /var/cache/apt/archives/e non dovresti scaricarlo.
Ahmed Masud,

2
Sì, ma solo se il pacchetto è stato installato relativamente di recente e gli archivi non sono stati puliti manualmente o automaticamente.
joeytwiddle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.