当前位置:网站首页>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 中的内容了。
边栏推荐
- cert-manager使用
- Redis集群概念与搭建
- Can't get data for duplicate urls using Scrapy framework, dont_filter=True
- 固件工程师到底是干什么?
- Machine learning (formula derivation and code implementation)--sklearn machine learning library
- MYSQL 修改时区的几种方法
- STP和RSTP的BPDU报文中flag位 对比+分析
- selenium IDE的3种下载安装方式
- 面试突击71:GET 和 POST 有什么区别?
- MySQL-存储过程-函数-
猜你喜欢

Mysql OCP 28题

Exception: Dataset not found. Solution

LINGO 18.0 software installation package download and installation tutorial

Scrapy + Selenium implements simulated login and obtains dynamic page loading data

"Easy to use" websites that others don't know, make you more efficient

015-平衡二叉树(一)

STP生成树(端口状态+端口角色+收敛机制 )|||| STP优化技术( uplinkfast技术+Portfast技术+backbonefast技术 )详解

分区分表(一)

RSTP(端口角色+端口状态+工作机制)|||| 交换机接口分析

【LeetCode】112. Path sum
随机推荐
The display of the article list and the basics of creating articles and article details
The window of the chosen data flow
MySQL-存储过程-函数-
10 Convolutional Neural Networks for Deep Learning 2
Does setting the following sysctl settings require a system reboot?
xtrabackup
pytorch installation error
For heavy two-dimensional arrays in PHP
110 MySQL interview questions and answers (continuous updates)
milvus
固件工程师到底是干什么?
Index (3)
MySQL 免安装版的下载与配置教程
AD环境搭建
MYSQL 修改时区的几种方法
慢 SQL 分析与优化
Mysql OCP 26题
Validate floating point input
索引(三)
MySQL-TCL语言-transaction control language事务控制语言