这篇短文将向您展示如何从RPM包存档中提取单个或者多个文件。首先,我们下载一个示例包“hello”。
$ wget ftp://rpmfind.net/linux/opensuse/factory/repo/oss/suse/x86_64/hello-2.9-4.3.x86_64.rpm $ ls hello-2.9-4.3.x86_64.rpm
现在我们有一个选项,可以从上面的RPM包存档中提取全部或者单个文件。以下linux命令将所有文件提取到当前工作目录中:
$ rpm2cpio hello-2.9-4.3.x86_64.rpm | cpio -id 525 blocks $ ls hello-2.9-4.3.x86_64.rpm usr
上面的“rpm2cpio”首先将RPM转换为CPIO存档。然后我们将其STDOUT传递给一个'cpio'命令,该命令将其作为输入,并将其内容'-i提取到相应的目录'-d
。因此,“usr”目录现在包含了“hello-2.9-4.3.x86_64.rpm”rpm包存档中的所有提取文件。
或者,我们可以从RPM包存档中提取单个/选定的文件。为此,我们首先需要列出RPM包的内容,而不提取其内容。
下面命令只会简单地列出RPM包“hello-2.9-4.3.x86_64.RPM”的内容`
$ rpm -lqp hello-2.9-4.3.x86_64.rpm warning: hello-2.9-4.3.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 3dbdc284: NOKEY /usr/bin/hello /usr/share/doc/packages/hello /usr/share/doc/packages/hello/ABOUT-NLS
使用以下linux命令从RPM包中提取单个文件“/usr/bin/hello”,并将其保存到/tmp/
目录:
$ rpm2cpio hello-2.9-4.3.x86_64.rpm | cpio -iv --to-stdout ./usr/bin/hello > /tmp/hello
完成后,“hello”二进制可执行文件现在已保存到“/tmp/”目录中:
$ chmod +x /tmp/hello $ /tmp/hello Hello, world!
日期:2020-07-07 20:54:39 来源:oir作者:oir