如何从包中恢复单个文件?

Geo*_*lly 24 package-management

如何在不重新安装其余文件的情况下执行此操作?

enz*_*tib 27

下载包,例如transmission-daemon,使用

sudo apt-get --download-only install transmission-daemon
Run Code Online (Sandbox Code Playgroud)

mkdir ~/dummy
dpkg-deb -x /var/cache/apt/archives/transmission-daemon_*.deb ~/dummy
Run Code Online (Sandbox Code Playgroud)

恢复文件,例如 /etc/init.d/transmission-daemon

sudo cp ~/dummy/etc/init.d/transmission-daemon /etc/init.d
Run Code Online (Sandbox Code Playgroud)

删除目录

rm -rf ~/dummy
Run Code Online (Sandbox Code Playgroud)

  • 您可以避免使用包含 `dpkg-deb --fsys-tarfile` 和 `tar` 的管道来提取整个存档,如下所示: `dpkg-deb --fsys-tarfile "$package"*.deb | tar -x ./path/to/file` (5认同)
  • 还需要注意的是,`apt-get download` 会下载到当前工作目录 `.` (2认同)

小智 15

我知道这有点旧,但这是我的改进:

$ sudo apt-get download <package-name>
Run Code Online (Sandbox Code Playgroud)

代替

$ sudo apt-get --download-only install <package-name>
Run Code Online (Sandbox Code Playgroud)

我遇到了包已经安装的情况(因此,建议的解决方案不起作用),我只想恢复一个配置文件,以解决问题。

干杯

  • 如果你已经安装了一个包,那么它通常可以在`/var/cache/apt/archives/` 中找到,你不应该下载它。 (3认同)
  • 是的,但前提是该软件包是最近安装的,并且档案尚未手动或自动清理。 (2认同)