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包中提取文件的更多相关文章

  1. 『学了就忘』Linux软件包管理 — 43、RPM包的校验和证书

    目录 1.RPM包的校验 (1)RPM包校验基本命令 (2)校验某个系统文件是否被修改举例 (3)验证内容中8个信息的具体内容 (4)文件类型有哪些 2.RPM包的证书 (1)数字证书 (2)数字证书 ...

  2. 『学了就忘』Linux服务管理 — 77、RPM包安装基于xinetd的服务的管理

    目录 1.基于xinetd服务的启动管理 (1)telnet服务安装 (2)telnet服务启动 2.基于xientd服务的自启动管理 现在Linux系统中基于xinetd的服务越来越少了,但Linu ...

  3. 『学了就忘』Linux服务管理 — 76、RPM包安装的服务管理

    目录 1.独立服务的启动管理 2.独立服务的自启动管理 方式一: 方式二:(推荐) 方式三: 3.验证 1.独立服务的启动管理 (1)使用/etc/init.d/目录中的启动脚本启动服务(推荐) [r ...

  4. 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作

    目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...

  5. 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍

    目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...

  6. 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载

    目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...

  7. 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序

    目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...

  8. 『学了就忘』Linux软件包管理 — 46、yum命令详细介绍

    目录 1.yum命令的查询操作 2.使用yum命令安装服务 3.使用yum命令升级服务 4.使用yum命令卸载服务 5.yum组管理命令 (1)查询可以安装的软件组 (2)查询软件组内包含的软件 (3 ...

  9. 『学了就忘』Linux软件包管理 — 45、yum源文件详细说明

    目录 1.yum源文件解析 2.查看yum源文件 3.搭建本地光盘yum源 第一步: 第二步: 第三步: 提示:RPM包的在线安装就是yum安装,yum安装需要依据yum源文件内容配置来寻找软件.本文 ...

随机推荐

  1. win32 TreeCtrl控件通知消息, LVN_SELCHANGED和LVN_ITEMCHANGED用法

    今天出了个奇怪的问题,当我在主窗口上创建一个用模板对话框的子窗口时, 在子窗口上放的TreeCtrl控件不响应LVN_SELCHANGED消息,也是晕死了, 我以为是消息捕获的问题,我在主窗口上也捕获 ...

  2. Android12系统源码分析:NativeTombstoneManager

    Android12系统源码分析:NativeTombstoneManager 概述 android12新增的system_server进程(LocalService)本地服务,用于管理native t ...

  3. python日志配置及调用

    0.日志基础操作 import logging logging.basicConfig( #1.日志输出的位置,终端和文件 filename='access.log', #,不指定默认打到终端上 #2 ...

  4. oracle扩展表空间

    1.  查看表空间的名字及文件所在的位置 select tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) tot ...

  5. IL合集

    由于之前写的表达式树合集,未编写任何注释且是以图片的形式展现给大家,在这里向各位看官道歉了,接下来为大家奉上新鲜出炉的香喷喷的IL合集,后面会持续更新,各位看官点关注不迷路,之前答应的手写IOC以及多 ...

  6. 洛谷4400 BlueMary的旅行(分层图+最大流)

    qwq 首先,我们观察到题目中提到的每天只能乘坐一次航班的限制,很容易想到建分层图,也就是通过枚举天数,然后每天加入一层新的点. (然而我一开始想的却是erf) 考虑从小到大枚举天数,然后每次新建一层 ...

  7. android和IOS自动化定位方法

    元素定位 方法:id定位,name定位(text定位),class_name定位, accessibility_id定位,xpath定位等 (目前1.5版本的已经不支持name定位了),所以APP的定 ...

  8. Vue3学习(三)之网站首页布局开发

    一.前言 上篇文章已经提到集成Ant Design Vue后,和Element Ui一样,还是组件的使用,然后就是复制粘贴改了. 二.实际案例 先搞个布局布局看看,也就是我们说的layout,如下图: ...

  9. Python - faker

    安装 faker pip install Faker pip install Dumper 设置生成器 from faker import Faker fake = Faker() 它可以通过访问以想 ...

  10. 苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功

    苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功 这是苹果wwdc2021 推出的新功能 参考官网链接 App Store Server API | Apple Deve ...