Як відновити один файл із пакета?


Відповіді:


21

Завантажте пакет, наприклад transmission-daemon, за допомогою

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

розпакуйте пакет

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

відновити файл, наприклад /etc/init.d/transmission-daemon

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

видаліть реж

rm -rf ~/dummy

2
Слід також зазначити, що apt-get downloadзавантаження в поточний робочий каталог.

4
Ви можете уникнути вилучення весь архів з допомогою трубопроводу з участю dpkg-deb --fsys-tarfileі tar, наприклад , так:dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file
Кодзіро

1
/tmp/dummyздається більш зручним це ~/dummyі необхідність його видалити.
Карл Ріхтер

Віддайте перевагу, apt-get downloadоскільки apt-get --download-only installвін зупиниться, якщо пакет уже встановлений. Як зазначено у відповіді camypaj.
Жульєн Карсік

Для того, щоб розширити свою присутність на коментарі Кодзіро, я повинен був дивитися на те , що значення за замовчуванням nginx«S worker_processesустановок на ряді машин. Тому я придумав таку команду: 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

Я знаю, що це трохи старе, але ось моє вдосконалення:

$ sudo apt-get download <package-name>

замість

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

У мене виникла ситуація, коли пакет уже встановлений (отже, запропоноване рішення не спрацювало), і я хотів відновити лише один конфігураційний файл, щоб усунути проблему.

Ура


3
якщо у вас вже встановлений пакет, він, як правило, знаходиться в ньому, /var/cache/apt/archives/і вам не доведеться його завантажувати.
Ахмед Масуд

2
Так, але лише в тому випадку, якщо пакет був встановлений відносно недавно, а архіви не були очищені вручну або автоматично.
joeytwiddle
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.