Comment restaurer un seul fichier à partir d'un package?

19

Comment puis-je faire cela sans réinstaller le reste des fichiers également?

Georg Schölly
la source

Réponses:

21

Téléchargez le package, par exemple transmission-daemon, avec

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

déballer le colis avec

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

restaurer le fichier, par exemple /etc/init.d/transmission-daemon

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

supprimer le dir

rm -rf ~/dummy
enzotib
la source
2
Il convient également de noter que les apt-get downloadtéléchargements dans le répertoire de travail actuel.
4
Vous pouvez éviter d'extraire l'archive entière en utilisant un pipeline impliquant dpkg-deb --fsys-tarfileet tar, comme ceci:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro
1
/tmp/dummysemble plus pratique que cela ~/dummyet la nécessité de le supprimer.
Karl Richter
Préférer apt-get downloadpuisque apt-get --download-only installs'arrêtera si le package est déjà installé. Comme indiqué par la réponse de camypaj.
Julien Carsique
Pour développer le commentaire de Kojiro, je devais regarder ce qui est la valeur par défaut nginxde » worker_processesréglage sur une gamme de machines. Alors je suis venu avec la commande suivante: 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

Je sais que c'est un peu vieux, mais voici mon amélioration:

$ sudo apt-get download <package-name>

au lieu de

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

J'ai eu une situation où le paquet était déjà installé (par conséquent, la solution proposée ne fonctionnait pas), et je voulais restaurer un seul fichier de configuration, afin de résoudre le problème.

À votre santé

camypaj
la source
3
si un package est déjà installé, il se trouve généralement dans /var/cache/apt/archives/et vous ne devriez pas avoir à le télécharger.
Ahmed Masud,
2
Oui, mais uniquement si le package a été installé relativement récemment et que les archives n'ont pas été nettoyées manuellement ou automatiquement.
joeytwiddle