Linux中yum源的配置、搭建、使用、rpm命令

it2025-01-20  14

实验内容:Linux中yum源的配置、搭建及使用

实验环境:redhat7.3虚拟机

实验结果:dhcp、http、共享yum、第三方yum、yum黑白名单

yum简介

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

借助于YUM软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,而无需管理员,手工去安装每个rpm包,使管理员在维护大量Linux服务器时更加轻松自如。特别是拥有大量Linux主机的本地网络中,构建一台源服务器可以大大缓解软件安装、升级等对lnterner的依赖。

yum服务器概述

yum软件仓库通常借助HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据(Repodata)【文章下方有解释】,其中收集了目录下所有rpm包的头部信息。

yum源的搭建

在安装虚拟机时镜像中一共有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搭建完成。

一、通过对虚拟机yum源配置,安装dhcp 

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,匹配路径进行下载。

 

二、通过对虚拟机yum源配置,实现安装资源共享(httpd)

yum install -y httpd #安装http包;-y表示执行过程中yes/no选择yes,减少人机交互

systemctl start httpd 打开http服务

systemctl enable httpd 设置开机自启动

firewall-cmd --permanent --add-service=http 在防火墙策略中允许http服务

firewall-cmd --reload 刷新防火墙

查看一下防火墙中是否有了已允许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命令的使用

yum clean all清除所有的yum缓存,才会使用新的yum源yum repolist列出软件仓库信息yum install software安装一个软件yum update更新yum list software查看软件yum list all查看所有软件yum list installed列出所有已安装软件yum list available列出可安装软件yum reinstall software重新安装软件yum remove software卸载软件yum info software查看软件信息yum search software信息根据软件信息查找软件yum whatprovides file根据文件信息找出包含此文件信息的软件(不管有没有装过该软件)yum history查看系统中软件管理信息yum history info 数字对数字为id的信息进行显示yum groups list列出软件组yum groups info查看软件组的信息yum groups install sfgroup安装软件组yum groups remove sfgroup卸载软件组

yum update 更新(慎重使用,当yum源版本与系统版本不一致时使用,一般不用)

在企业当中会先备份原来的,再彻底卸载,然后重新安装一个新的版本 如果直接更新版本的话,可能会导致系统崩溃,一般不会做更新 而且更新比较麻烦,文件数量多,一般采用重新安装的办法

yum info software 查看软件信息

依赖性关系:安装一个软件时会提醒你需要另外一个(死循环)

只有本地yum源的时候安装第三方软件会出现死循环;此时就要先用rpm命令强行安装一个,再用yum命令寻找依赖性的那个再去安装,yum与rpm结合使用。用yum命令进行安装可以解决大多数的问题,但是不能解决死循环的问题;用rpm命令安装软件可以解决死循环的问题;系统是什么样的版本就用什么样的安装包。

 五、用rpm命令处理软件

rpm -i安装软件rpm -v显示软件安装的过程rpm -h采用hash加密​rpm -e卸载rpm -q查看rpm -a显示所有rpm -p查找软件包rpm -ql查看软件在系统中的安装文件路径rpm -qlp查看未安装的软件在系统中如果安装后产生文件的路径rpm -qf根据某个文件找出此文件属于那个安装包(压根没装过不行,装过删了)rpm -qc查看软件的配置文件名称rpm -qd查看软件的帮助文件rpm --scritps查看脚本rpm --nodeps安装软件忽略软件依赖rpm --force强行安装(只要没有依赖性)rpm -Kv检测软件包是否被篡改

六、yum的黑白名单

屏蔽32位软件

需要修改配置文件,在[root@localhost ~]# vim /etc/yum.conf文件中添加exclude=*x86_64*这一行;

执行 yum list  all,所有64位的软件包全部被屏蔽

未添加前

添加后

可以看到添加前仍存在i686:32位文件;添加后64位会高亮且不再有32位文件

最新回复(0)