使用 RPM 中的目录作为不同工具的参数

使用 RPM 中的目录作为不同工具的参数

我需要从某个文件夹中获取一个文件夹转速包装内含数量。罐文件。我的想法是也许可以将它以流的形式传递给java-cp命令作为它的类路径?

我正在开发的项目构建了 10 多个大型 RPM,对于每个 RPM,我需要针对其执行某个程序,该程序需要驻留在 RPM 中的应用程序的类路径。

我偶然发现了一个名为rpm2cpio可以通过管道传输到CPIO命令。但现在我的知识越来越贫乏。我不确定是否可以不将 cpio 包的内容提取到磁盘,而是使用其中的文件流,过滤掉某个文件夹并将其用作另一个命令的参数?

为什么我要尝试这个只是因为提取所有的磁盘上的内容将是一个 IO 密集型操作,如果可能的话我很乐意避免这种操作。

答案1

rpm -qlp package.rpm

将列出其中包含的文件package.rpm而不将其完整提取,并且即使在大 RPM 上也应该足够快。使用该文件列表,您应该能够构建您想要的类路径。

要从 RPM 中提取特定目录及其所有内容,您需要创建该目录,然后使用cpio从 RPM 中提取相关文件:

cd /tmp
mkdir ./the/requested/directory
rpm2cpio /path/to/the/package.rpm | cpio -i ./the/requested/directory/\*

相关内容