三、rpm升级与卸载
1、升级命令和安装命令只有一个区别。rpm -ivh 升级为rpm -Uvh
2、升级包 用的也是包全名;新的升级包对于系统还是一个全新的包,所以要用包全名。
3、升级顾名思义,就是要有一个比当前版本更高的这样一个包才能升级,如果安装包装过了这个命令就不会再执行,如果没装过,这个升级命令就相当于安装命令。
1、因为这包安装过,直接可以使用包名。在操作安装时,会把包名写入到/var/lib/rpm/这个目录的数据库中,卸载时,是直接去数据库中找包名。
2、同理,卸载时,也没有必要一定在Passages这个目录下,卸载也是去数据库中找的。(安装时一定是在绝对路径或者再Passages这个目录下进行的)
3、卸载也有依赖性。
我们在安装阿帕奇时,先安装的tools ,再安装的2.2主包,然后装的manual包;那么在卸载的时候,就要先卸载manual包在卸载2.2 再卸载tools 包。
卸载命令中同样有选项--nodeps。但是使用不检查依赖性后,卸载了主包后,tools manual也不可再使用。
注意:这里卸载rpm包是通过指令来卸载,为什么不是直接删除相应文件夹来卸载? 因为rpm包安装时是安装到默认的文件路径,如果凭自己亲自删除文件,可能无法删除干净;但是对于源码包的安装,则可以直接删除相应文件夹,因为源码包安装的时候是要指定文件位置。
四、RPM的查询
RPM包的安装和卸载都应为依赖包存在使得安装和卸载操作不方便,我们一般使用yum来安装卸载rpm包。但是yum无法实现查询。rpm 还是需要rpm命令。
rpm -qa | grep httpd 可以查到包含httpd 的所有包。常用
rpm -qi 包名 查询已经安装的包的信息。这个信息是写rpm包的作则写入的。可以查询包的官方网站
rpm -qip 包全名 查询未安装的包的信息。要在Packages这个目录下。信息也是作者写入的。
既然这个包是包,说明包中就不止一个文件,这些文件在什么位置,可以用rpm -ql 查询文件位置
rpm -qlp 包全名,查询未安装包打算装的位置。
日志、运行文件
其他软件的文件安装位置:默认位置,常规位置,可更换
既然我们能知道这个包的文件安装的位置,那我们知道一个文件名,如何知道是属于哪个安装包
rpm -qf 系统文件名
哪我们cd 到etc下,找一个yum.conf yum的配置文件,我们查询这个文件属于的rpm包
但是我们在系统中创建的文件,查询所属的包,结果是找不到的
手动创建的文件,不是rpm包安装出来的。
查询阿帕奇安装需要依赖的包
但是这个查询意义不大。图中看到httpd 依赖linux的标准shell(bash)。linux的文件都是之前装好的。不如安装httpd是让报依赖性错误。
五、RPM包校验
然后我们进入到这个文件,修改下文件内容
加了个abc的注释
然后校验阿帕奇就会提示这个文件被修改了。一旦有提示,则表明这个文件被修改,(注意是否被攻击)。
1、校验结果显示s 说明文件大小被修改;
2、没有显示M证明权限未做修改;
3、5 代表md5校验和,我们用md5校验码验证软件的完整性(是否丢包、内容被串改等信息);
4、c 表示的是文件类型为配置文件。正常;如果显示g就要注意,是否出现漏洞或者被攻击。
作用举例:将系统重要文件或者命令误删了怎么处理:
如果将ls 命令文件误删后,就可以通过rpm包提取文件命令找回文件
我们所有文件都是通过rpm包安装的,我们可以将删除的文件在rpm包中打开,提取出来文件。
实验:
现在ls就可以正常使用。