[英]How to extract RPM files to specific package from Java
I want to extract a rpm file to target directory from Java code.我想从 Java 代码中提取一个 rpm 文件到目标目录。 I'm aware of the following approaches:
我知道以下方法:
rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv)
rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv)
rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv)
as command line. rpm2cpio mypackage.rpm | (cd /target/dir; cpio -idmv)
作为命令行。 This is not really Java and I worry the portability by hardcoding this command.CpioArchiveInputStream
.CpioArchiveInputStream
。 I hit java.io.IOException: Unknown magic
when trying to read the rpm file.java.io.IOException: Unknown magic
。 My guess is that this library is too old to adapt to new archive/compression types. Is there a better approach that I'm not aware of?有没有我不知道的更好的方法? Ideally something that works like a
TarArchiveInputStream
would be perfect.理想情况下,像
TarArchiveInputStream
这样工作的东西是完美的。
This is the middle ground that I found working:这是我发现可行的中间立场:
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());
}
Not perfect, but makes it easier so that we only rely on a new process to read file.不完美,但更容易让我们只依赖一个新进程来读取文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.