当前位置:网站首页>rpm文件解包提取 cpio
rpm文件解包提取 cpio
2022-08-03 09:37:00 【larance】
解包原因
因为出于某些原因,不能进行安装,或者只是需要用到其中的一个静态库,又不想通过源码编译去获取,可以采用这种方法。总所周知,源码编译比rpm安装来的慢太多,而且中途可能需要安装很多的依赖,如llvm,libc,g++等,版本如果不对又是很多的麻烦。
解包方法
先将rpm包转成cpio归档文件,直接进行提取即可。注意:最好创建一个文件夹,在新文件夹内提取,不然可以文件太大,污染目录。
方法如下:点击查看代码
mkdir temp && cd temp
#将rpm包放进临时目录
mv ../*.rpm .
#转化rpm包并提取
rpm2cpio *.rpm | cpio -div
cpio
cpio [选项] > 文件名或者设备名
cpio [选项] < 文件名或者设备名
功能
cpio
命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以 .cpio
或者 .tar
结尾的文件。
描述
选项说明:详细选项说明参看下表, 包括:选项、含义
-o 将文件拷贝打包成文件或者将文件输出到设备上。
-i 将打包文件解压或者将设备上的备份还原到系统。
-t 查看 cpio 打包的文件内容或者输出到设备上的文件内容。
-v 显示打包过程中的文件名称。
-d 在 cpio 还原文件的过程中,自动的建立相应的目录。
-c 一种较新的存储方式。
-B 让默认的Blocks可以增大到 5120 bytes ,默认Blocks为 512 bytes ,这样做的好处是可以加快存取速度。
注意,
cpio
恢复的路径,如果cpio
在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,同理,如果在打包备份用的是相对路径,还原时也将恢复到相对路径下。cpio
无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而find
命令的输出刚好做到了这点,因此,cpio
命令一般和find
命令配合使用。cpio
恢复的时候不会自动覆盖同名文件。- 不会创建目录而是直接解压到当前文件夹。
举例
将 etc
目录备份
$find ./etc -print |cpio -ov >etc.cpio
要恢复文件的时候
#cpio -idv
只是查看 etc.cpio
文件,可以使用
# cpio -tv
输入之后,输出如下:
drwxrwxr-x 4 quiethea quiethea 0 Nov 4 17:14 etc
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/2
drwxrwxr-x 2 quiethea quiethea 0 Nov 4 17:07 etc/11
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/11/11
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/4
drwxrwxr-x 2 quiethea quiethea 0 Nov 4 17:07 etc/22
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/3
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/1
-rw-rw-r-- 1 quiethea quiethea 0 Nov 4 17:07 etc/5
这样显示得是将要恢复得文件得名称。
其它
现在,内核刚刚启动的时候,会事先挂一个 initrd
内存文件系统,这个 initrd
文件系统镜像可以由 cpio
制作。参见内核源码文档 initrd.txt
。
例如我有一个非常简单的文件系统 rootfs
, 制作镜像方法如下
$cd rootfs
$find . | cpio -c -o -v |gzip -9 -n >../ramdisk.img
这样,父目录下会生成一个 ramdisk.img
压缩文件系统镜像。
将镜像解压恢复成文件系统的命令
$mkdir rootfs
$cp ramdisk.img rootfs
$cd rootfs
$mv ramdisk.img ramdisk.img.gz
$gunzip ramdisk.img.gz
$cpio -i <ramdisk.img
$rm ramdisk.img
这样,当前目录下就是原来 rootfs
中的内容了。
边栏推荐
- mysql 事务原理详解
- The display of the article list and the basics of creating articles and article details
- CRT命令按键
- System io statistics
- MySQL 免安装版的下载与配置教程
- select statement in go
- Machine learning (formula derivation and code implementation)--sklearn machine learning library
- Flink Yarn Per Job - 提交应用
- 深度学习之 10 卷积神经网络2
- Does setting the following sysctl settings require a system reboot?
猜你喜欢
Mysql OCP 29题
AD环境搭建
STP生成树选举结果查看及验证
Scrapy + Selenium 实现模拟登录,获取页面动态加载数据
MySQL-TCL语言-transaction control language事务控制语言
ClickHouse 数据插入、更新与删除操作 SQL
Rabbit and Falcon are all covered, Go lang1.18 introductory and refined tutorial, from Bai Ding to Hongru, the whole platform (Sublime 4) Go lang development environment to build EP00
多媒体数据处理实验3:图像特征提取与检索
SQL exam questions
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
随机推荐
MySQL8重置root账户密码图文教程
Redis cluster concept and construction
select statement in go
Partition table (1)
固件工程师到底是干什么?
机器学习(公式推导与代码实现)--sklearn机器学习库
Mysql OCP 30题
【字节面试】word2vector输出多少个类别
Redis的基础与django使用redis
【LeetCode】112.路径总和
C language two-dimensional array is called with one-dimensional array
Does setting the following sysctl settings require a system reboot?
深度学习之 10 卷积神经网络1
CRT命令按键
gpnmb+ gpnmb-AT2 cell idling mapping Epithelial cell idling mapping
go泛型使用方法
Mysql OCP 29题
R语言ggplot2可视化数据点重合的散点图、数据点有重合、使用geom_smooth函数基于lm方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
机器学习(公式推导与代码实现)--sklearn机器学习库