『学了就忘』Linux软件包管理 — 44、在RPM包中提取文件
1、RPM包中文件的提取
为什么要做这个事呢?
在操作Linux系统的时候误删除一个文件,可以通过强制覆盖的方法可以把删除的文件还原。如果不是误删除,我只是修改了文件中的内容,但是我忘记源文件内容是什么,我修改不回来了。这个时候强制安装覆盖(--force选项)就解决不了问题了。因为强制安装覆盖,并不会对现已存在的文件做修改。Linux系统怕软件的强制安装覆盖把你现有的配置清空了。
像上面的情况,我想得到文件原来的状态,靠强制安装覆盖是行不通的。但你可以把文件删除了,在进行强制安装覆盖不就还原了,这样是可以的,但是我们还可以用一种方式来恢复,就是下面讲的RPM包中文件的提取。
提示:
其实在修改重要系统文件之前,应该先把文件做一下备份处理。
[root@localhost ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
然而你忘记了备份,然后文件你修改错误了,无法还原了,而且这个文件还不能删除。这种情况下,就需要使用RPM包的文件提取了。
RPM包中文件的提取,其实就是直接从RPM包中提取一个或者几个我需要的文件。
2、在RPM包中提取文件的操作
(1)cpio命令介绍
cpio命令主要有三种基本模式:
-o模式:指的是copy-out模式,就是把数据备份到文件库中;-i模式:指的是copy-in模式,就是把数据从文件库中恢复;-p模式:指的是复制模式,就是不把数据备份到cpio库中,而是直接复制为其他文件。
说明:
cpio命令本来是做备份和还原的,但是这个命令的备份和还原极其不方便。(不推荐用cpio命令做备份和还原),了解一下即可,具体例子也不用说了。- 如果需要从RPM包中提取文件,只能使用
cpio命令,因为RPM是二进制包,需要用到特殊的格式来处理二进制包,而cpio命令就符合。 - 换句话总结就是:不推荐用
cpio命令做备份和还原,还有其他更好的方式。但是可以用来做在RPM包中提取文件的事情。
注:
cpio命令做备份和还原例子就不总结了,需要的自己扩展,本文直接介绍运用cpio命令在RPM包中提取文件的使用。
(2)提取RPM包中文件
提示:上边介绍了
cpio命令,现在就用cpio命令来提取RPM包中需要的文件。
[root@localhost ~]# rpm2cpio 包全名|cpio-idv .文件绝对路径
rpm2cpio <— 将rpm包转换为cpio格式的命令
cpio <— 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
注意:
上边命令中的.,是表示当前目录,把提取出来的文件放入当前目录。如果不写.,提取出来的文件,会直接提取到文件的安装目录中,覆盖掉原有的配置文件。这不符合我们的操作习惯,我们的习惯是,把现有的文件和提取出来的文件进行比对,看看有什么不同,然后在确定是否替换,或者修改现有文件。
1)首先要确定文件属于哪个软件包
还记得-qf选项嘛,我们就需要这两个选项,命令如下:
[root@localhost ~]# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.2.15-53.e16.centosx86-_64.rpm
2)从RPM中提取文件
[root@localhost ~]# rpm2cpio /mnt/cdrom/packages/httpd-2.2.15-53.e16.centosx86-_64.rpm | cpio -idv ./etc/httpd/conf/httpd.conf
3)注意一下几点:
/mnt/cdrom/packages/httpd-2.2.15-53.e16.centosx86-_64.rpm表示RPM包路径。- RPM包中文件的路径和文件绝对路径(系统中的文件路径)是相等的,一样的。
./etc/httpd/conf/httpd.conf表示,当前目录下有一个/etc/httpd/conf/httpd.conf文件。到时候比对httpd.conf文件和现有文件,在决定下一步的操作。
如下图所示:

可以看到只从RPM包中提取了一个httpd.conf文件。
提示:只是知道有这个功能即可,需不需要用看你自己的实际情况。
『学了就忘』Linux软件包管理 — 44、在RPM包中提取文件的更多相关文章
- 『学了就忘』Linux软件包管理 — 43、RPM包的校验和证书
目录 1.RPM包的校验 (1)RPM包校验基本命令 (2)校验某个系统文件是否被修改举例 (3)验证内容中8个信息的具体内容 (4)文件类型有哪些 2.RPM包的证书 (1)数字证书 (2)数字证书 ...
- 『学了就忘』Linux服务管理 — 77、RPM包安装基于xinetd的服务的管理
目录 1.基于xinetd服务的启动管理 (1)telnet服务安装 (2)telnet服务启动 2.基于xientd服务的自启动管理 现在Linux系统中基于xinetd的服务越来越少了,但Linu ...
- 『学了就忘』Linux服务管理 — 76、RPM包安装的服务管理
目录 1.独立服务的启动管理 2.独立服务的自启动管理 方式一: 方式二:(推荐) 方式三: 3.验证 1.独立服务的启动管理 (1)使用/etc/init.d/目录中的启动脚本启动服务(推荐) [r ...
- 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作
目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...
- 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍
目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...
- 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载
目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...
- 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序
目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...
- 『学了就忘』Linux软件包管理 — 46、yum命令详细介绍
目录 1.yum命令的查询操作 2.使用yum命令安装服务 3.使用yum命令升级服务 4.使用yum命令卸载服务 5.yum组管理命令 (1)查询可以安装的软件组 (2)查询软件组内包含的软件 (3 ...
- 『学了就忘』Linux软件包管理 — 45、yum源文件详细说明
目录 1.yum源文件解析 2.查看yum源文件 3.搭建本地光盘yum源 第一步: 第二步: 第三步: 提示:RPM包的在线安装就是yum安装,yum安装需要依据yum源文件内容配置来寻找软件.本文 ...
随机推荐
- Incorrect datetime value: 时间添加失败原因
在进行单元测试中通过 new Date() 方式添加时间时,报了 Data truncation: Incorrect datetime value:这样的错误(我数据库表的时间类型是 datetim ...
- FastAPI(58)- 使用 OAuth2PasswordBearer 的简单栗子
背景 假设在某个域中拥有后端 API(127.0.0.1:8080) 并且在另一个域或同一域的不同路径(或移动应用程序)中有一个前端(127.0.0.1:8081) 并且希望有一种方法让前端使用用户名 ...
- 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
1.简介 有些测试场景或者事件,Selenium根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作.比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某 ...
- HPE ProLiant 系列服务器Microsoft Windows 2008 R2系统下网卡绑定方法
HPE Network Configuration Utility(以下简称NCU) 网卡绑定工具,用户可以通过该工具很方便的把服务器的多个网卡捆绑到一起以达到容错和增加可用带宽的目的. 1.打开NC ...
- 为什么下一个十年的主战场在 Serverless?
作者 | 不瞋 阿里云 Serverless 负责人 "唯有超越,才能让我们走下去." 这是不瞋在阿里的第十年.从 2010 年加入阿里云,不瞋参与了阿里云飞天分布式系统的研发,历 ...
- javascript-jquery对象的属性处理
1.attr()方法:获取元素某个属性的值. $("img").attr("title");//获得第一个<img>元素的title属性 $(&qu ...
- 经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择
前言 本文介绍一篇CVPR2020的论文,它在paperswithcode上获得了16887星,谷歌学术上有261的引用次数. 论文主要介绍了目标检测现有的研究进展.anchor-based和 ...
- 【UE4 C++】定时器 Timer 与事件绑定
概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理.全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委 ...
- [对对子队]会议记录4.18(Scrum Meeting9)
今天已完成的工作 何瑞 工作内容:修复了一些关卡1的bug 相关issue:搭建关卡1 相关签入:4.18签入1 4.18签入2 梁河览 工作内容:实现了音量控制,添加了BGM 相 ...
- [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建
技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...