提取多个 rpm 文件并覆盖现有文件

提取多个 rpm 文件并覆盖现有文件

我在一个目录中有一堆 rpm 文件,其中所有 rpm 文件都被提取为 /usr/.. 我想提取所有 rpm 文件并覆盖现有文件。

我通常使用 file-roller -f *.rpm 来执行此操作,它会调出 GUI 询问提取位置,然后执行其工作。由于 file-roller 在 14.04 上崩溃(上次我在 12.04 上执行此操作),我正在寻找另一种方法来完成这项工作

如果我使用文件滚动器 GUI(在 nautilus 中选择所有 rpm 文件)并在此处提取,这将导致有几个文件夹 usr、usr(1)、usr(2) ... usr(102)。

有什么应用程序或其他方法可供我使用吗?

答案1

提取 RPM 包内容的最简单方法是将rpm2cpio太平洋保险协会命令。这提供了一种命令行方式来解压当前目录中的 RPM 以获取软件包内容,而忽略软件包的元数据和依赖项。

例如,要解压当前目录中的所有 RPM,请使用

for rpm in *.rpm; do rpm2cpio $rpm | cpio -idm; done

这也会将内容提取到当前目录,并且所有文件都将归当前用户所有,就像以普通用户身份提取 tarball 一样。

cpio 命令只能将文件提取到当前目录,因此文件将始终提取到运行 cpio 的目录中。要将内容放在不同的目录中,您可以使用

for rpm in *.rpm; do rpm2cpio $rpm | ( cd /path/to/dir && cpio -idm ); done

或者

for rpm in /path/to/packages/*.rpm; do rpm2cpio $rpm | cpio -idm; done

相关内容