这一节和老师学习了软件包的使用


首先看看如何rpm的使用,这个命令可以用来查询,安装,卸载,更新软件包


简单的说,后面跟q是查询,i是安装,u是更新,e是卸载,V是验证,我们挨个来看看


首先是查询, -qa表示查询所有已经安装的包,如下所示


RHCE 学习笔记(13)  RPM 和 YUM_ rhel7


值得一提的是RPM本质是一个别人预先编译好的包,不同文件的路径已经事先配置好了。如果想查看一个安装包到底把文件安装到了哪些目录,可以通过cpio来解压查看


RHCE 学习笔记(13)  RPM 和 YUM_ rh124_02


-ql可以查看已经安装的的软件包的相关路径


RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_03


-qf可以通过文件的路径来查看是由什么软件包安装的

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_04


-q 有很多组合选项,看看


RHCE 学习笔记(13)  RPM 和 YUM_rhce_05


-qc 可以查看配置文件


RHCE 学习笔记(13)  RPM 和 YUM_rhce_06


-qlp可以查看包的信息

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_07


现在看看如何安装,常用的搭配是 -ivh,如下所示,注意他有个警告信息,这是为什么呢? 这是因为红帽的软件包都使用了数字签名,基本原理是A对一个随机值C生成哈希值D,然后用私钥加密D得到E,然后把加密过后的E和随机值C都发送给B,B用公钥解密E之后匹配随机值的哈希值D,看是否一致


因为本机上面尚未安装公钥,因为无法通过验证

RHCE 学习笔记(13)  RPM 和 YUM_  yum_08


我们也可以通过-K来验证

RHCE 学习笔记(13)  RPM 和 YUM_rhce_09


解决方式很简单,导入公钥就行了

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_10


RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_11


导入之后测试一下警告已经没有了

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_12


接下来看看更新软件包 rpm -Uvh XXX


更新的本质是卸载旧版本,然后按照新版本。普通的软件包是不能多版本共存的,因此如果直接使用 -ivh安装最新版本的包,他会提示冲突,需要使用-Uvh更新才可以;

不过,内核可以多版本共存,因此更新内核的时候不可以用-Uvh,而是应该用-ivh


查看当前的内核

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_13



最后,看看-V 验证软件包,安装了一个软件包,之后可以通过-V来看看是否有文件被修改了


新装的ftp服务没有做任何修改

RHCE 学习笔记(13)  RPM 和 YUM_rhce_14

修改一下README

RHCE 学习笔记(13)  RPM 和 YUM_  yum_15


上面用RPM安装包有一个问题就是包的依赖,往往一个软件包还依赖于其他的软件包,如果一个个手动安装非常麻烦,如何解决呢,可以使用yum直接从指定的yum源服务器那里自动下载所有依赖的软件包


下面是一个练习,配置两台服务器,rhce7-01的yum源指向本地光盘,rhce7-00指向rhce7-01的ftp服务器


配置文件repo文件可以在/etc/yum.repos.d/下面配置


RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_16


注意gpgcheck我写的是0,如果是1,需要配置公钥还需要指定路径

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_17


清空一下缓存,注意有警告


RHCE 学习笔记(13)  RPM 和 YUM_rhce_18

这些插件不需要的话,可以手动关闭掉,把对应的enabled改成0就行了

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_19

RHCE 学习笔记(13)  RPM 和 YUM_rhce_20



在01下面,指向本地,所以baseurl=file:///var/ftp/iso

RHCE 学习笔记(13)  RPM 和 YUM_rhce_21

RHCE 学习笔记(13)  RPM 和 YUM_rhce_22


接下来在01上安装ftp服务

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_23


重启一下

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_24


FTP下面创建一个子目录/iso,然后挂载光盘


RHCE 学习笔记(13)  RPM 和 YUM_ rh124_25


清空缓存,删掉防火墙的策略,然后确认SELinux的状态是否允许进程访问

RHCE 学习笔记(13)  RPM 和 YUM_rhce_26


回到00,再确认一下

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_27


测试一下repolist,成功通过

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_28


了解yum源以后,来看看yum有哪些选项 yum list可以列出该软件包是否已安装

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_29


如果想查找一个包,可以通过 search在yum源中来搜索

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_30


可以通过 remove来删除一个包

RHCE 学习笔记(13)  RPM 和 YUM_  yum_31


可以通过install 来安装,他会自动解决依赖关系


RHCE 学习笔记(13)  RPM 和 YUM_rhce_32


更新包可以通过 update

RHCE 学习笔记(13)  RPM 和 YUM_ rh124_33



如果只想下载软件包而不安装,可以指定下载和下载路径

RHCE 学习笔记(13)  RPM 和 YUM_rhce_34


确认下载成功

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_35


如果忘记了某个软件是由什么包安装的,可以通过 whatprovides 来查


比如scp服务就是通过openssh包安装的

RHCE 学习笔记(13)  RPM 和 YUM_rhce_36


查看yum源可以通过 repolist

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_37


查询,安装的时候可以手动的屏蔽安装源

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_38


还可以通过info来查看包的信息

RHCE 学习笔记(13)  RPM 和 YUM_  yum_39


有些功能相似相关的包会放入一个组中,可以通过yum grouplist查看

RHCE 学习笔记(13)  RPM 和 YUM_rhce_40


可以通过 groupinstall 直接安装整个组

RHCE 学习笔记(13)  RPM 和 YUM_  yum_41


一些第三方的软件包,还可以通过在互联网下载,比如 pkgs.org


最后看看如何手动创建一个源,并处理相关的依赖关系?


我手动创建一个目录,然后拷贝一些rpm包进去,然后修改repo文件指向这个目录


RHCE 学习笔记(13)  RPM 和 YUM_ rh124_42


如果直接执行yum repolist会报错,因为他找不到repodata这个目录

RHCE 学习笔记(13)  RPM 和 YUM_ rhel7_43


没有的话那么手动创建一个好了


RHCE 学习笔记(13)  RPM 和 YUM_ rh124_44


再试试就成功了

RHCE 学习笔记(13)  RPM 和 YUM_rhce_45