如何从包中还原单个文件?


Answers:


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
kojiro

1
/tmp/dummy似乎更方便,~/dummy并且需要将其删除。
Karl Richter

首选,apt-get download因为apt-get --download-only install如果该软件包已安装,它将停止。如camypaj的回答所示。
Julien Carsique

要扩展kojiro的评论,我必须查看一系列机器上nginxworker_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/而不必下载它。
Ahmed Masud 2014年

2
是的,但前提是该软件包是相对较新的安装,并且尚未手动或自动清除存档。
joeytwiddle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.