Linux系统:yum仓库

目录

一、yum

1、yum概述

2、yum仓库

3、yum实现过程原理

二、yum配置文件详解

1、主配置文件

2、yum仓库设置文件

3、yum日志文件

三、yum命令详解

1、查询

1.1 yum list [软件名]

1.2 yum info [软件名]

1.3 yum search <关键词>

1.4 yum provides <关键词>

1.5 yum grouplist [包组名]

1.6 yum groupinfo [包组名]

2、yum安装升级

2.1 yum install [软件名]

2.2 yum groupinstall [包组名]

2.3 yum update

2.4 yum groupupdate

3、卸载软件

3.1 yum remove [软件名]

3.2 yum groupremove [包组名]

3.3 yum history

四、搭建yum仓库的方式 

1、通过ftp服务搭建内网yum仓库

2、通过httpd服务搭建内网yum仓库 

3、通过httpd服务搭建外网清华云仓库

五、误将rpm软件删除的解决方法

六、 为新软件搭建yum安装

七、将epel源下载到本地

八、 离线安装软件

九、升级内核


一、yum

1、yum概述

yum(Yellowdog Updater, Modified)是一种在Linux发行版中用于包管理的工具。它是为了方便管理Red Hat系列发行版(如CentOS、Fedora等)的软件包而开发的

  • 功能:yum用于安装、更新和删除软件包,以及解决软件包之间的依赖关系。它可以从预配置的软件源(repositories)中获取软件包,并自动解决依赖关系,确保所需的依赖包也被安装
  • 软件源(Repositories):yum使用软件源来获取软件包。软件源是包含软件包的在线仓库,可以是官方提供的源或第三方源。yum配置文件中包含了默认的软件源,你也可以添加自定义的软件源
  • 依赖解决:yum可以自动解决软件包之间的依赖关系。当你安装一个软件包时,如果它需要其他软件包作为依赖,yum会自动下载并安装这些依赖包
  • 软件包管理:yum提供了一组命令,用于搜索、安装、更新和删除软件包
  • 依赖关系管理:yum可以管理软件包之间的依赖关系。它会自动检查并安装所需的依赖包,确保软件包的正确安装和运行
  • 配置文件:yum的配置文件位于 /etc/yum.conf 和 /etc/yum.repos.d/ 目录下。在配置文件中,你可以指定默认的软件源、代理设置、缓存设置等
  • 插件:yum支持插件机制,可以通过插件扩展其功能。插件可以提供额外的命令、功能和增强的用户体验

2、yum仓库

yum仓库(Repository)是一种包含软件包的集合,用于在Linux系统中安装、更新和管理软件。它是yum包管理工具的核心组成部分,提供了一个集中的位置,用户可以从中获取软件包并解决软件包之间的依赖关系

  • 软件源(Repositories):yum仓库通常由软件源组成。软件源是包含软件包的在线仓库,可以是官方提供的源或第三方源。软件源中包含了软件包的元数据信息,如软件包的名称、版本、依赖关系等
  • 软件包的获取:通过yum仓库,用户可以获取所需的软件包。yum会从配置的软件源中下载软件包,并自动解决软件包之间的依赖关系
  • 官方和第三方仓库:官方仓库由Linux发行版的官方团队维护,包含了官方支持的软件包。第三方仓库由社区或其他组织维护,可能包含一些官方仓库中不包含的软件包
  • 仓库配置:yum仓库的配置信息通常存储在 /etc/yum.repos.d/ 目录下的配置文件中。每个仓库通常由一个单独的配置文件来定义,其中包含了仓库的名称、URL、GPG密钥等信息
  • 仓库的更新:仓库中的软件包会不断更新,以包含最新的版本和修复。通过定期更新软件源,用户可以获取最新的软件包和安全更新
  • 本地仓库:除了在线仓库外,用户还可以创建本地仓库,将软件包存储在本地服务器上,并通过yum访问。这种方式可以在没有网络连接的情况下安装软件包,或者在局域网内共享软件包
  • 仓库的管理:系统管理员可以添加、删除、启用或禁用仓库,以控制系统中可用的软件包来源。这使得管理员可以更好地控制系统中安装的软件包

3、yum实现过程原理

Linux系统:yum仓库_第1张图片

①客户端根据配置文件找到服务端

②客户端将元信息下载到本地(元信息: 安装包的位置,以及安装的依赖关系)

③根据元信息去下载对应的安装包到本地后,然后安装

④安装完成后再删除安装包(删除需要一定的时间)

二、yum配置文件详解

1、主配置文件

位置:/etc/yum.conf

[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever   //yum下载的RPM包的缓存目录 $basearch代表硬件架构 $releasever系统版本比如7
keepcache=0                                     //是否保存缓存  0代表不保存,1代表保存
debuglevel=2                                    //调试级别了解即可
logfile=/var/log/yum.log					    // 日志文件位置
exactarch=1								        //是否允许不同版本的rpm安装
obsoletes=1									    //update 的一个参数是否可以允许旧版本的运行	
gpgcheck=1                                      //验证秘钥
plugins=1                                       //是否允许插件1代表可以
installonly_limit=5                             //保存几个内核 5代表5个
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

注:

yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量

2、yum仓库设置文件

位置:/etc/yum.repos.d/*.repo

3、yum日志文件

位置:/var/log/yum.log

三、yum命令详解

命令 不加关键字 加入关键词、软件包、软件包组
yum list 显示所有可用包 单个的可安装包
yum info 显示所有可用包的信息 单个具体的信息
yum search \ 模糊查找所有的相关信息
yum provides \ 精确查找
yum grouplist 显示所有可用包组 显示具体的包组
yum groupinfo 显示所有的包组具体信息 显示具体的包组的具体信息
yum install \ 安装具体软件包
yum groupinstall \ 安装具体软件包组
yum update 所有软件升级 具体软件升级
命令 不加关键字 加入关键词、软件包、软件包组
yum group update 所有包组升级 具体包组升级
yum remove \ 卸载具体软件
yum groupremove \ 卸载具体包组软件
yum history 查看当前yum操作历史 \
yum history undo 加入序号卸载序号里安装的软件 \
yum history redo 加入序号重新执行序号里的操作 \

1、查询

1.1 yum list [软件名]

显示yum仓库里指定的安装包,如不加软件名是显示所有的可用包

Linux系统:yum仓库_第2张图片

1.2 yum info [软件名]

显示指定安装包的详细信息

Linux系统:yum仓库_第3张图片

1.3 yum search <关键词>

根据关键字查找软件安装包,相当于只需要知道这个包里的某个关键字,就会全部给匹配出来

Linux系统:yum仓库_第4张图片

1.4 yum provides <关键词>

查询某个程序来源于哪个安装包

Linux系统:yum仓库_第5张图片

1.5 yum grouplist [包组名]

查询指定的安装包组, 不加包组名就是显示所有安装包组

Linux系统:yum仓库_第6张图片

1.6 yum groupinfo [包组名]

显示指定安装包组的详细信息

Linux系统:yum仓库_第7张图片

2、yum安装升级

2.1 yum install [软件名]

安装软件包

Linux系统:yum仓库_第8张图片

2.2 yum groupinstall [包组名]

安装软件包组

如安装GNOME桌面
[root@localhost ~]#yum -y upgrade
[root@localhost ~]#yum -y groups install "GNOME Desktop"

2.3 yum update

更新安装包,后面加具体包名称就是更新单个安装包,不加就是更新全部安装包

首先需要更新的安装包库,否则也无法更新

2.4 yum groupupdate

更新安装包组,后面加具体包组名称就是更新单个安装包组,不加就是更新全部安装包组

首先需要更新的安装包组库,否则也无法更新

3、卸载软件

3.1 yum remove [软件名]

必须加软件名,表示卸载已安装的软件

3.2 yum groupremove [包组名]

必须加软件包组名,用于从系统中移除指定的软件包组

3.3 yum history

查看历史的使用记录

①yum remove只能卸载指定软件的主包,无法卸载其依赖关系的安装包

Linux系统:yum仓库_第9张图片

②可用yum history查看yum安装的历史记录

Linux系统:yum仓库_第10张图片

 ③查看第六次yum具体安装的信息

Linux系统:yum仓库_第11张图片

④解决依赖关系的安装包

Linux系统:yum仓库_第12张图片

以上步骤就可以完全卸载干净指定的软件 

#如果后悔卸载该软件,可以使用该命令重新安装一遍
yum history redo 6 

四、搭建yum仓库的方式 

前提:关闭防火墙和临时防护

systemctl   stop  firewalld      #关闭防火墙
setenforce  0                    #关闭临时防护

1、通过ftp服务搭建内网yum仓库

#服务端操作:
[root@localhost ~]#yum install -y vsftpd     #下载vsftpd服务程序
[root@localhost ~]#systemctl start vsftpd    #开启vsftpd服务
[root@localhost ~]#mkdir /var/ftp/centos7    #在ftp服务器根目录下新建centos7目录用于挂载光盘
[root@localhost ~]#mount /dev/sr0 /var/ftp/centos7/    #挂载光驱到ftp服务器根目录下的centos7目录

***********************************************************
#客户端操作:
[root@localhost ~]#cd /etc/yum.repos.d/       #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak        #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak    #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim ftp.repo     #编辑yum仓库的配置文件
[ftp]                                    #yum仓库的描述
name=ftp                                 #指定yum仓库名
baseurl=ftp://172.16.12.10/centos7       #指定安装包的位置是在ftp服务器根目录的centos7目录下
gpgcheck=0                               #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all       #清除缓存
[root@localhost yum.repos.d]#yum makecache       #重新下载元数据
[root@localhost yum.repos.d]#yum list            #查看yum源的来源是否是ftp
[root@localhost ~]#yum install -y tree           #测试安装软件是否成功

2、通过httpd服务搭建内网yum仓库 

#服务端操作:
[root@localhost ~]#yum install -y httpd     #下载httpd服务程序
[root@localhost ~]#systemctl start httpd    #开启httpd服务
[root@localhost ~]#mkdir /var/www/html/centos7    #在httpd服务器根目录下新建centos7目录用于挂载光盘
[root@localhost ~]#mount /dev/sr0 /var/www/html/centos7    #挂载光驱到http服务器根目录下的centos7目录

***********************************************************
#客户端操作:
[root@localhost ~]#cd /etc/yum.repos.d/       #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak        #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak    #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim http.repo     #编辑yum仓库的配置文件
[http]                                    #yum仓库的描述
name=http                                 #指定yum仓库名
baseurl=http://172.16.12.10/centos7       #指定安装包的位置是在http服务器根目录的centos7目录下
gpgcheck=0                               #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all       #清除缓存
[root@localhost yum.repos.d]#yum makecache       #重新下载元数据
[root@localhost yum.repos.d]#yum list            #查看yum源的来源是否是http
[root@localhost ~]#yum install -y tree           #测试安装软件是否成功

 3、通过httpd服务搭建外网清华云仓库

#客户端操作:
[root@localhost ~]#cd /etc/yum.repos.d/           #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak            #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak        #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim tsinghua.repo     #编辑yum仓库的配置文件
[tsinghua]                                         #yum仓库的描述
name=tsinghua                                      #指定yum仓库名
baseurl= https://mirrors.aliyun.com/centos/7/os/x86_64/    
#指定安装包的位置是在清华云上
gpgcheck=0                                       #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all       #清除缓存
[root@localhost yum.repos.d]#yum makecache       #重新下载元数据
[root@localhost yum.repos.d]#yum list            #查看yum源的来源是否是tsinghua
[root@localhost ~]#yum install -y tree           #测试安装软件是否成功
CentOS系统的yum源:
#阿里云
https://mirrors.aliyun.com/centos/$releasever/ 
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/ 
#华为云
https://repo.huaweicloud.com/centos/$releasever/ 
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/


EPEL的yum源:
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64

#更新源:
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/

五、误将rpm软件删除的解决方法

[root@localhost ~]#rpm -e rpm              #删除不了,一般也不会有人删除
[root@localhost ~]#rpm -e rpm --nodeps     #强制删除rpm

Linux系统:yum仓库_第13张图片

进入急救模式:安装rpm包

①reboot重启后,选择“Troubleshooting”,再选择“Rescue a CentOS system”,最后选择“Continue”后,进入急救模式

②重新安装rpm包

rpm -ivh /run/install/repo/Packages/rpm-4.11.3-25.e17.x86_64.rpm  --root=/mnt/sysimage/

Linux系统:yum仓库_第14张图片

六、 为新软件搭建yum安装

假设tree为新软件,此时客户要求使用yum命令安装此软件

#将新软件以“rpm”结尾的安装包移动到规定目录下,软件包找开发要
#模拟将tree的安装包放到规定目录下,在建立元数据
[root@localhost ~]#cd /opt
[root@localhost opt]#mount /dev/sr0 /mnt
[root@localhost opt]#mkdir tree
[root@localhost opt]#cp /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm /opt/tree
[root@localhost opt]#cd tree
[root@localhost tree]#mkdir Packages
[root@localhost tree]#mv tree-1.6.0-10.el7.x86_64.rpm Packages/
[root@localhost tree]#cd ..                     #返回上级目录
[root@localhost opt]#createrepo -v tree         #创建tree软件的元数据
[root@localhost tree]#cd /etc/yum.repos.d/       #切换到规定的目录
[root@localhost yum.repos.d]#mkdir bak        #新建bak目录,用于存放网络yum源
[root@localhost yum.repos.d]#mv *.repo bak    #将网络yum源移到bak目录下,减少干扰
[root@localhost yum.repos.d]#vim tree.repo     #编辑yum仓库的配置文件
[tree]                                    #yum仓库的描述
name=tree                                 #指定yum仓库名
baseurl=file:///opt/tree                  #指定安装包的位置
gpgcheck=0                                #不检测安装包的安全性
[root@localhost yum.repos.d]#yum clean all       #清除缓存
[root@localhost yum.repos.d]#yum makecache       #重新下载元数据
[root@localhost yum.repos.d]#yum list            #查看yum源的来源
[root@localhost ~]#yum install -y tree           #测试安装软件是否成功

①将软件包移动到规定目录下,创建新软件的元数据 

Linux系统:yum仓库_第15张图片

Linux系统:yum仓库_第16张图片 ③编辑配置文件

Linux系统:yum仓库_第17张图片

④测试

Linux系统:yum仓库_第18张图片

Linux系统:yum仓库_第19张图片

七、将epel源下载到本地

也可安装其他源,如阿里源、腾讯源等,然后再下载到本地目录

[root@localhost ~]#yum install epel-release
#安装epel源,生成epel仓库文件
[root@localhost ~]# reposync -r epel -p /data/
#下载同步epel源到本地目录

Linux系统:yum仓库_第20张图片

八、 离线安装软件

①在可以上网的主机上下载该软件的安装包,然后将安装包及其依赖关系下载到指定的文件夹下

②然后将该文件夹打包,通过NFS、FTP等文件传输工具共享给离线的主机,该离线的主机就可以安装软件了

能上网的主机:
[root@localhost ~]#yum install -y nginx
[root@localhost ~]#yum install nginx --downloadonly --downloaddir=/data/
#只下载相关包至data目录

九、升级内核

[root@localhost ~]#yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm      #安装内核源
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost yum.repos.d]#vim elrepo.repo
[elrepo-kernel]
enabled=1           #打开内核库
[root@localhost yum.repos.d]#uname -r   #查看当前内核版本
[root@localhost yum.repos.d]#yum list *kernel*      #查看内核库里所有的版本的内核
[root@localhost yum.repos.d]#yum install -y kernel-lt.x86_64  
#复制你选定的内核版本下载更新即可
[root@localhost ~]#ls /boot    #查看是否生成新版本的内核文件

①安装内核源,并生成仓库配置文件,将仓库配置文件的内核库打开即可

Linux系统:yum仓库_第21张图片

Linux系统:yum仓库_第22张图片

②可查看到其他内核版本,然后安装其他内核版本即可 

Linux系统:yum仓库_第23张图片

Linux系统:yum仓库_第24张图片

 ③安装成功后,/boot目录下会生成新版本的内核文件Linux系统:yum仓库_第25张图片

④在开机界面,选择新版本的内核进入系统,更新内核就成功了

Linux系统:yum仓库_第26张图片

你可能感兴趣的:(运维,linux,服务器)