繁体   English   中英

如何从Java提取RPM文件到特定的package

[英]How to extract RPM files to specific package from Java

我想从 Java 代码中提取一个 rpm 文件到目标目录。 我知道以下方法:

  • 运行rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv) rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv)作为命令行。 这不是真正的 Java,我担心硬编码这个命令的可移植性。
  • 使用CpioArchiveInputStream 我在尝试读取 rpm 文件时遇到了java.io.IOException: Unknown magic 我的猜测是这个库太旧而无法适应新的存档/压缩类型。

有没有我不知道的更好的方法? 理想情况下,像TarArchiveInputStream这样工作的东西是完美的。

这是我发现可行的中间立场:

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(String.format("rpm2cpio %s", packagePath));
try (CpioArchiveInputStream cpioStream = new CpioArchiveInputStream(proc.getInputStream())) {
    System.out.println(cpioStream.getNextCPIOEntry().getName());
}

不完美,但更容易让我们只依赖一个新进程来读取文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM