Jak przywrócić pojedynczy plik z pakietu?

19

Jak mogę to zrobić bez ponownej instalacji reszty plików?

Georg Schölly
źródło

Odpowiedzi:

21

Pobierz pakiet, na przykład transmission-daemon, za pomocą

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

rozpakuj paczkę za pomocą

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

przywróć plik, na przykład /etc/init.d/transmission-daemon

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

usuń reż

rm -rf ~/dummy
enzotib
źródło
2
Należy również zauważyć, że apt-get downloadpliki do pobrania do bieżącego katalogu roboczego.
4
Możesz uniknąć wyodrębnienia całego archiwum za pomocą potoku obejmującego dpkg-deb --fsys-tarfilei tar, podobnie jak:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
kojiro
1
/tmp/dummywydaje się wygodniejsze ~/dummyi konieczność jego usunięcia.
Karl Richter,
Preferuj, apt-get downloadponieważ apt-get --download-only installprzestanie działać , jeśli pakiet jest już zainstalowany. Jak wskazuje odpowiedź camypaj.
Julien Carsique
Aby rozwinąć na komentarz Kojiro jest, musiałem spojrzeć na to, co znajduje się domyślna wartość nginx„s worker_processesustawienie w szeregu maszyn. Więc wpadłem za pomocą następującego polecenia: 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

Wiem, że to trochę stare, ale oto moja poprawa:

$ sudo apt-get download <package-name>

zamiast

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

Miałem sytuację, w której pakiet był już zainstalowany (stąd proponowane rozwiązanie nie działa) i chciałem przywrócić tylko jeden plik konfiguracyjny, aby rozwiązać problem.

Twoje zdrowie

camypaj
źródło
3
jeśli masz już zainstalowany pakiet, zwykle znajduje się w nim /var/cache/apt/archives/i nie powinieneś go pobierać.
Ahmed Masud
2
Tak, ale tylko jeśli pakiet został zainstalowany stosunkowo niedawno, a archiwa nie zostały wyczyszczone ręcznie ani automatycznie.
joeytwiddle 29.01.16