¿Cómo restaurar un solo archivo de un paquete?

19

¿Cómo puedo hacer esto sin reinstalar también el resto de los archivos?

Georg Schölly
fuente

Respuestas:

21

Descargue el paquete, por ejemplo transmission-daemon, con

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

desempaquete el paquete con

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

restaurar el archivo, por ejemplo /etc/init.d/transmission-daemon

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

eliminar el directorio

rm -rf ~/dummy
enzotib
fuente
2
También debe tenerse en cuenta que las apt-get downloaddescargas en el directorio de trabajo actual.
44
Puede evitar extraer todo el archivo utilizando una tubería que implique dpkg-deb --fsys-tarfiley tar, de esta manera:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro
1
/tmp/dummyParece más conveniente eso ~/dummyy la necesidad de eliminarlo.
Karl Richter
Prefiero apt-get downloadya que apt-get --download-only installse detendrá si el paquete ya está instalado. Como lo indica la respuesta de camypaj.
Julien Carsique
Para ampliar el comentario de kojiro, tuve que mirar cuál es el valor predeterminado de nginxla worker_processesconfiguración de en una gama de máquinas. Así me ocurrió con el siguiente 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

Sé que esto es un poco viejo, pero aquí está mi mejora:

$ sudo apt-get download <package-name>

en lugar de

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

Tuve una situación en la que el paquete ya estaba instalado (por lo tanto, la solución propuesta no funcionó), y quería restaurar solo un archivo de configuración, para solucionar el problema.

Salud

camypaj
fuente
3
Si ya tiene un paquete instalado, normalmente se encuentra en él /var/cache/apt/archives/y no debería tener que descargarlo.
Ahmed Masud
2
Sí, pero solo si el paquete se instaló hace relativamente poco tiempo y los archivos no se han limpiado manual o automáticamente.
joeytwiddle