[英]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.