`
Fangrn
  • 浏览: 818521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用rpm2cpio

阅读更多

你会时常发现从一个包文件中释放出一个或更多的文件很有必要,实现它你一般可以如下去做:

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
分享到:
评论

相关推荐

    rpm2cpio:使用Python3从RPM中提取CPIO有效负载

    例如,如果你想要查看某个RPM包中包含哪些文件,或者在不安装包的情况下提取特定文件,那么使用rpm2cpio会非常方便。Python3作为解释型的高级编程语言,提供了丰富的库和强大的文本处理能力,使得开发这样的工具成为...

    linux下 tar解压 gz解压 bz2等各种解压文件使用方法

    可以使用 rpm2cpio 命令来解压。 * 解压:rpm2cpio FileName.rpm | cpio -div .deb 文件 ----- .deb 文件是使用 deb 算法压缩的文件。可以使用 ar 命令来解压。 * 解压:ar p FileName.deb data.tar.gz | tar ...

    linux系统下MegaCli使用方法.pdf

    然后使用rpm2cpio命令解压缩MegaCli软件包:`rpm2cpio MegaCli-8.02.16-1.i386.rpm | cpio –idmv`。 MegaCli命令使用 MegaCli提供了许多命令来管理和维护存储系统。例如,使用`./opt/MegaRAID/MegaCli/MegaCli -...

    rpm安装详解

    使用工具 rpm2cpio 和 cpio 可以获取 rpm 包中的文件。例如: rpm2cpio xxx.rpm | cpio -vir 参数 i 和 extract 相同,表示提取文件。v 表示指示执行进程。d 和 make-directory 相同,表示根据包中文件原来的路径...

    linux系统上安装oracle 11g所需要的rpm包

    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...

    cpio-2.12-10.el8.x86_64.rpm

    离线安装包,亲测可用

    gradle制作rpm包

    * rpm2cpio package.rpm | cpio –idmv:查看 RPM 包中的文件 这些命令可以帮助我们更好地控制和管理 RPM 包。 使用 Gradle 制作 RPM 包需要了解 RPM 包的制作过程和 Gradle 的插件机制,通过 gradle-ospackage-...

    cpio-2.10-10.el6.i686.rpm

    cpio-2.10-10.el6.i686.rpm是centos工具包。

    cpio-2.12-11.el8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    CentOS环境下单独安装apachebench的方法

    下载的rpm包需要被解压,可以使用rpm2cpio和cpio组合命令来实现: rpm2cpio httpd-2.2.3-43.el5.centos.3.i386.rpm | cpio -idmv 解压后,你将找到/usr/bin/ab这个文件。然后将其拷贝到系统的/usr/bin目录下,以便...

    Linux_MegaCLI.zip

    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/

    Python库 | py2pack-0.3.18-1.src.rpm

    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开发与...

    OEL/Redhat/CentOS gcc、g++的全套rpm安装包

    rpm2cpio g++.rpm | cpio -idmv ``` 2. 安装RPM包: ``` sudo rpm -ivh /path/to/g++.rpm ``` 这里,请将"/path/to/g++.rpm"替换为实际的RPM包路径。 安装完成后,GCC和G++就可用于开发和编译C和C++程序。...

    Red Hat Telnet离线安装包

    - 使用`rpm2cpio`解压`.rpm`文件,例如:`rpm2cpio telnet-0.17-60.el7.x86_64.rpm | cpio -idmv` - 找到解压后的文件,通常位于`/usr/bin/`或其他路径下。 - 对于服务器软件包,还需要将服务配置为开机启动,使用`...

    Python库 | ll-core-1.9-1.src.rpm

    2. **解压RPM包**:使用`rpm2cpio`命令将RPM文件转换为cpio格式,然后使用`cpio`解压提取源代码: ```bash rpm2cpio ll-core-1.9-1.src.rpm | cpio -idmv ``` 3. **进入源代码目录**:解压后,你会找到一个包含...

    Linux教程-linux软件包管理.docx

    查看包文件内容通常可以使用工具如`cpio`,例如,通过`rpm2cpio`将.rpm包转换为cpio格式,然后用`cpio`命令列出或提取包内的文件。例如,`rpm2cpio package_file.rpm | cpio -itv`可以预览包内文件,而`rpm2cpio ...

    13-1-RHEL7-Linux软件包安装管理-RPM

    如果在修复过程中发现丢失的文件,可以通过cpio和rpm2cpio命令提取出丢失的文件,并将其放回原来的位置。 cpio是一个用于备份和恢复文件的工具,可以通过重定向的方式将文件打包备份,也可以用来解压以“.cpio”...

    Linux RPM 命令参数使用详解_docx1

    15. `rpm2cpio` 和 `cpio`:可以用来解压RPM包并提取其中的文件。 RPM还支持网络安装,如`rpm -ivh http://url_to_package.rpm`,直接从URL下载并安装RPM包。 在处理源代码包时,使用`--recompile`或`--rebuild`...

    RPM how-to

    通过本文档的介绍,我们不仅了解了RPM的基本概念和使用方法,还深入探讨了构建RPM包的过程以及如何构建能够在多种架构上运行的软件包。RPM的强大功能为Linux系统的软件管理和分发提供了坚实的基础。无论是对于软件...

Global site tag (gtag.js) - Google Analytics