你会时常发现从一个包文件中释放出一个或更多的文件很有必要,实现它你一般可以如下去做:
1
、安装包
2
、复制你需要的文件
3
、将包删除
但是更简单的办法是使用rpm2cpio
rpm2cpio
可以做什么?
顾名思义,rpm2cpio
是将rpm
包文件转换成cpio
归档文件,因为其主要的目的就是过滤,其他的也就不需要特别指定了,rpm2cpio
只有一个属性,别无其他。
指定的属性是将包文件转换,如果在命令行中没有指定文件名,rpm2cpio
将从标准的输入读取并将之转换成cpio
归档文件,让我们看一个例子:
#
rpm2cpio logrotate-1.0-1.i386.rpm
0707020001a86a000081a4000000000000000000000001313118bb000002c200000008000
000030000000000000000000000190000e73eusr/man/man8/logrotate.8." logrotate
- log fi
le rotator
.TH rpm 8 "28 November 1995" "Red Hat Software" "Red Hat Linux"
.SH NAME
(注:这里仅贴出开始的几行)
上面究竟发生了什么?记住:rpm2cpio出生就是过滤只用,它的标准输出是将包中的文件过滤为cpio归档,
如果你没有在你的屏幕上没有作重定向的话。这里有一个讲明其原因的例子:
#
rpm2cpio logrotate-1.0-1.i386.rpm > blah.cpio
#
file blah.cpio
blah.cpio: ASCII cpio archive (SVR4 with CRC)
#
这样我们将一个logrotate包含的所有文件都用rpm2cpio直接转换,然后将其重定向到blah.cpio文件,接下来我们用file程序来检验,它确实是个真正的cpio归档文件,下面的命令和上述同样的说明rpm2cpio从标准输入来读取包文件:
#
cat logrotate-1.0-1.i386.rpm | rpm2cpio > blah.cpio
一个更真实的例子--列出rpm包所包含的文件
毫无疑问,rpm2cpio可以从rpm包转换成cpio归档,While there's nothing wrong with using rpm2cpio
to actually create a cpio
archive file, it's takes a few more steps and uses a bit more disk space than is strictly necessary. A somewhat cleaner approach would be to pipe rpm2cpio
's output directly into cpio
:
#
rpm2cpio logrotate-1.0-1.i386.rpm | cpio -t
usr/man/man8/logrotate.8
usr/sbin/logrotate
14 blocks
在这里例子中,当rpm2cpio建立一个cpio归档后,我们用到cpio的-t这个参数,-t的意思是“内容列表“,这会为你提取某个文件而得到正确的文件和路径提供了更好的捷径。
从rpm包中提取文件
紧接着上面的例子,我们从logrotate包文件中提取man页,在内容列表中,我们可以看到man page的全路径/usr/man/man8/logrotate8,我们需要的就是将文件名和路径如下指示:
#
rpm2cpio logrotate-1.0-1.i386.rpm |cpio -ivd usr/man/man8/logrotate.8
usr/man/man8/logrotate.8
14 blocks
在这个例子中,用到了cpio的-i ,-v和-d参数,对这个cpio文件作了如下的操作:
1、从归档中提取一个或多个文件
2、显示任何文件的处理,
3、建立指定文件的全部路径目录。
那么最后文件到底放到那里了呢?cpio的最后一个参数-d有明确的暗示,先让我们来看下:
#
ls -al
total 5
-rw-rw-r-- 1 root root 3918 May 30 11:02 logrotate-1.0-1.i386.rpm
drwx------ 3 root root 1024 Jul 14 12:42 usr
#
cd usr
#
ls -al
total 1
drwx------ 3 root root 1024 Jul 14 12:42 man
#
cd man
#
ls -al
total 1
drwx------ 2 root root 1024 Jul 14 12:42 man8
#
cd man8
#
ls -al
total 1
-rw-r--r-- 1 root root 706 Jul 14 12:42 logrotate.8
#
cat logrotate.8
.\" logrotate - log file rotator
.TH rpm 8 "28 November 1995" "Red Hat Software" "Red Hat Linux"
.SH NAME
logrotate \- log file rotator
.SH SYNOPSIS
\fBlogrotate\fP [configfiles]
.SH DESCRIPTION
\fBlogrotate\fP is a tool to prevent log files from growing without
…
在这之前,当前目录是没有/usr/man/man8的目录的,很明显cpio -d在logrotate.8文件之前建立了全部,据此,使cpio安全的在通常的系统目录使用成为可能,而且你知道自己在做什么!
http://blog.chinaunix.net/u/6303/showart_357246.html
分享到:
相关推荐
例如,如果你想要查看某个RPM包中包含哪些文件,或者在不安装包的情况下提取特定文件,那么使用rpm2cpio会非常方便。Python3作为解释型的高级编程语言,提供了丰富的库和强大的文本处理能力,使得开发这样的工具成为...
可以使用 rpm2cpio 命令来解压。 * 解压:rpm2cpio FileName.rpm | cpio -div .deb 文件 ----- .deb 文件是使用 deb 算法压缩的文件。可以使用 ar 命令来解压。 * 解压:ar p FileName.deb data.tar.gz | tar ...
然后使用rpm2cpio命令解压缩MegaCli软件包:`rpm2cpio MegaCli-8.02.16-1.i386.rpm | cpio –idmv`。 MegaCli命令使用 MegaCli提供了许多命令来管理和维护存储系统。例如,使用`./opt/MegaRAID/MegaCli/MegaCli -...
使用工具 rpm2cpio 和 cpio 可以获取 rpm 包中的文件。例如: rpm2cpio xxx.rpm | cpio -vir 参数 i 和 extract 相同,表示提取文件。v 表示指示执行进程。d 和 make-directory 相同,表示根据包中文件原来的路径...
libaio-0.3.105-2.i386.rpm libaio-0.3.105-2.x86_64.rpm libaio-devel-0.3.105-2.i386.rpm libaio-devel-0.3.105-2.x86_64.rpm libgcc-3.4.6-3.i386.rpm libstdc -3.4.6-11.x86_64.rpm libstdc++-3.4.6-11.i386.rpm...
离线安装包,亲测可用
* rpm2cpio package.rpm | cpio –idmv:查看 RPM 包中的文件 这些命令可以帮助我们更好地控制和管理 RPM 包。 使用 Gradle 制作 RPM 包需要了解 RPM 包的制作过程和 Gradle 的插件机制,通过 gradle-ospackage-...
cpio-2.10-10.el6.i686.rpm是centos工具包。
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
下载的rpm包需要被解压,可以使用rpm2cpio和cpio组合命令来实现: rpm2cpio httpd-2.2.3-43.el5.centos.3.i386.rpm | cpio -idmv 解压后,你将找到/usr/bin/ab这个文件。然后将其拷贝到系统的/usr/bin目录下,以便...
rpm2cpio Lib_Utils-1.00-09.noarch.rpm | cpio -idmv rpm2cpio MegaCli-8.00.48-1.i386.rpm | cpio -idmv cp opt/MegaRAID/MegaCli/MegaCli64 /sbin/ cp opt/MegaRAID/MegaCli/MegaCli /sbin/
1. 运行`rpm2cpio py2pack-0.3.18-1.src.rpm | cpio -idmv`来提取源码。 2. 进入解压后的目录,例如`cd py2pack-0.3.18-1/`。 3. 用`python setup.py install`来安装py2pack到你的Python环境。 **4. Python开发与...
rpm2cpio g++.rpm | cpio -idmv ``` 2. 安装RPM包: ``` sudo rpm -ivh /path/to/g++.rpm ``` 这里,请将"/path/to/g++.rpm"替换为实际的RPM包路径。 安装完成后,GCC和G++就可用于开发和编译C和C++程序。...
- 使用`rpm2cpio`解压`.rpm`文件,例如:`rpm2cpio telnet-0.17-60.el7.x86_64.rpm | cpio -idmv` - 找到解压后的文件,通常位于`/usr/bin/`或其他路径下。 - 对于服务器软件包,还需要将服务配置为开机启动,使用`...
2. **解压RPM包**:使用`rpm2cpio`命令将RPM文件转换为cpio格式,然后使用`cpio`解压提取源代码: ```bash rpm2cpio ll-core-1.9-1.src.rpm | cpio -idmv ``` 3. **进入源代码目录**:解压后,你会找到一个包含...
查看包文件内容通常可以使用工具如`cpio`,例如,通过`rpm2cpio`将.rpm包转换为cpio格式,然后用`cpio`命令列出或提取包内的文件。例如,`rpm2cpio package_file.rpm | cpio -itv`可以预览包内文件,而`rpm2cpio ...
如果在修复过程中发现丢失的文件,可以通过cpio和rpm2cpio命令提取出丢失的文件,并将其放回原来的位置。 cpio是一个用于备份和恢复文件的工具,可以通过重定向的方式将文件打包备份,也可以用来解压以“.cpio”...
15. `rpm2cpio` 和 `cpio`:可以用来解压RPM包并提取其中的文件。 RPM还支持网络安装,如`rpm -ivh http://url_to_package.rpm`,直接从URL下载并安装RPM包。 在处理源代码包时,使用`--recompile`或`--rebuild`...
通过本文档的介绍,我们不仅了解了RPM的基本概念和使用方法,还深入探讨了构建RPM包的过程以及如何构建能够在多种架构上运行的软件包。RPM的强大功能为Linux系统的软件管理和分发提供了坚实的基础。无论是对于软件...