Как восстановить один файл из пакета?


Ответы:


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остановится, если пакет уже установлен. Как указано в ответе Камипая.
Жюльен Карсик

Для того, чтобы расширить свое присутствие на комментарии Кодзиро, я должен был смотреть на то , что значение по умолчанию 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.