Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员,手工去安装每个rpm包,使管理员在维护大量Linux服务器时更加轻松自如。特别是拥有大量Linux主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对lnterner的依赖。
yum软件仓库通常借助HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据(Repodata)【文章下方有解释】,其中收集了目录下所有rpm包的头部信息。
在安装虚拟机时镜像中一共有4620个包,但是在安装虚拟机时只会安装1000多个包。所以会需要使用yum来将即将使用而不存在软件包下载到本地;
搭建yum之前“df”查看一下系统盘的挂载情况;
由于实验在虚拟机中进行,安装yum需要将物理机上的镜像通过光驱添加到虚拟机上,挂载到虚拟机的“rhel7.3”【名字自起】这个目录下,以便于使用镜像中的安装包。
1.将物理机上的镜像通过光驱添加到虚拟机上;
选择要使用的虚拟机,在虚拟机关闭的状态下,点击灯泡图标后再点击Add Hardware后添加光驱
将设备类型Device Type选择为CDROM device,点击Manager选择真机的镜像;全部设置后点击Finish完成操作;
此时除点击灯泡会出现光盘图片外;在虚拟机显示界面也会出现光盘图像
至此,物理机上的镜像通过光驱添加到虚拟机上工作完成;默认情况下,光驱是挂载在/run/media/root【登陆用户】/RHEL-7.3 Server.x86_64这个目录下;可以利用df命令进行查看
2.挂载光驱镜像到虚拟机的“rhel7.3”【名字自起】目录,以便于使用镜像中的安装包
上图中的/dev/sr0就是桌面上的光盘,因为默认的挂载目录名有空格不能识别,所以应该在 / 目录重新创建了一个目录rhel7.3作为光驱的挂载点
用mount命令进行挂载之后,rhel7.3目录下就会出现很多的文件和目录,这些文件和目录就是在安装系统时的镜像里面的内容。
3.配置yum,使其指向**/rhel7.3**这个目录。在/etc/yum.repos.d/目录下创建一个文件huijie,其后缀名必须为repo,编辑的内容如下:
[root@localhost huijie]# vim /etc/yum.repos.d/huijie.repo修改完成后,使用以下命令将yum源刷新:
[root@localhost huijie]# yum clean all #对yum源文件进行清空 [root@localhost huijie]# yum repolist #yum刷新至此yum搭建完成。
dhcp的软件包在操作系统的镜像中就有。
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
如果要安装dhcp,可以先使用以下命令查看yum源中是否有该软件包
[root@localhost huijie]# yum list dhcp由上图可以看到yum源中存在dhcp的软件包dhcp.x86_64,故可以使用以下命令在yum中直接安装dhcp:
[root@localhost huijie]# yum install -y dhcp在文章刚开始有提到仓库数据(Repodata):依赖性说明数据库;
Repodate目录下放置的是软件源里面所有rpm包的元数据和它们的依赖关系;使yum安装软件时不需要处理依赖关系;
是存放新创建的以repo为结尾的配置文件所指向的目录下的软件的路径、索引等;以dhcp为例:在yum安装dhcp的过程中,首先访问.repo所指向的文件目录,即file:///rhel7.3;然而yum并不能识别为安装软件,所以就需要一个存放可以供yum识别的目录文件,去保证yum可以进行下载,此时yum就浏览访问repodata目录,索引dhcp,匹配路径进行下载。
查看一下防火墙中是否有了已允许http服务:
如图火墙允许的services中已有了http服务
建立共享目录,并挂在镜像文件到共享目录上 mkdir /var/www/html/rhel7.1 #在http服务默认文件发布目录下创建rhel7.1文件夹 umount /westos #卸载刚刚的yum源 mount /der/br0 /var/www/html/rhel7.1 #将镜像挂载到http发布目录的rhel7.1文件夹下
注意:取消先前实验的挂载来使实验环境干净
测试:在浏览器中输入:http://本机ip/rhel7.1;可以看到镜像中的内容
开机自动挂载iso
给文件添加执行权限:chmod +x /etc/rc.d/rc.local 方便系统开启时执行文件;
所有的rpm软件包放到一个目录中,这个目录中只能存在rpm文件;
一般存放在http默认文件发布目录下(在默认发布目录下创建一个sofeware目录):
[root@localhost huijie]# cd /var/www/html [root@localhost html]# ls rhel7.3 software如何将主机上的rpm包复制到虚拟机上:
[root@DESKTOP-JG9UKER software]# scp wps-office-10.1.0.5672-1.a21.x86_64.rpm root@172.25.22.1:/var/www/html/software注意:在ip地址后一定需要跟“ :”表示说明一下;另外命令执行过程中,前期缓冲较慢可能是因为所传位置DNS是打开状态;需要进入到所传位置的相关文件下修改配置文件;
root@localhost software]# vim /etc/ssh/sshd_config在文件内搜索DNS找到后,将yes改为no
修改成功后执行重启命令systemctl restart sshd
此时虚拟机相关文件夹下即可查看到所传rpm包
执行“createrepo -v /存放软件包目录 ”:使之生效,会生成一个repodata目录
[root@localhost software]# createrepo -v . #注意 createrepo -v后需要跟一个目录,否则会报错执行完成后可以ls查看一下
为什么官方软件yum可以安装 ?
可以识别依赖性 因为依赖性全部已经在库里面;yum不能安装第三方软件, 因为不能识别依赖性,因此应该使用一个createrepo 工具给第三方软件添加依赖性的数据库;这样安装的时候就直接生成,自己自动去识别依赖性,第三方软件库每次添加一个安装包,都要create一次,生成一次。
redhat packages manager软件包名称详解 kolourpaint-4.10.5-4.el7.x86_64.rpm
[1]kolourpaint软件名称[2]4.10.5版本[3]4.el7适用系统[4]x86_64架构[5]rpm适用rpm体系软件在本地yum源指向文件中添加如下内容
[root@localhost software]# vim /etc/yum.repos.d/rhel7.3.repo执行yum clean all
这样第三方软件仓库中的内容也可以使用yum直接安装了;
查看依赖性关系
yum update 更新(慎重使用,当yum源版本与系统版本不一致时使用,一般不用)
在企业当中会先备份原来的,再彻底卸载,然后重新安装一个新的版本 如果直接更新版本的话,可能会导致系统崩溃,一般不会做更新 而且更新比较麻烦,文件数量多,一般采用重新安装的办法
yum info software 查看软件信息
依赖性关系:安装一个软件时会提醒你需要另外一个(死循环)
只有本地yum源的时候安装第三方软件会出现死循环;此时就要先用rpm命令强行安装一个,再用yum命令寻找依赖性的那个再去安装,yum与rpm结合使用。用yum命令进行安装可以解决大多数的问题,但是不能解决死循环的问题;用rpm命令安装软件可以解决死循环的问题;系统是什么样的版本就用什么样的安装包。
屏蔽32位软件
需要修改配置文件,在[root@localhost ~]# vim /etc/yum.conf文件中添加exclude=*x86_64*这一行;
执行 yum list all,所有64位的软件包全部被屏蔽
未添加前
添加后
可以看到添加前仍存在i686:32位文件;添加后64位会高亮且不再有32位文件