Linux yum的实现和配置

Linux83

YUM:Yellowdog Update Modifier

  • 是rpm的前端程序
  • 解决软件包之间的依赖关系

YUM 工作原理:

服务器

yum服务器主要存放的就是rpm软件包和软件包的元数据信息。

  • Packages:存放的是rpm软件包
  • repodata:存放的是软件包之间元数据信息和以来关系

客户端

通过编写好配置文件来访问服务器实现对软件包的相关操作。

客户端的工作流程:

  1. 连接到服务器
  2. 下载repodata文件,并从中检索对应信息
  3. 根据检索到的信息对软件包进行操作,结束后会删除下载的rpm包,但是repodata文件会保存下来。

YUM客户端配置

客户端配置文件

yum客户端有两个配置文件,其中一个不用修改。

/etc/yum.conf             #为所有仓库提供公共配置  一般不用修改

/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件 需要编写的配置文件

说明:

  • 配置文件需要以.repo作为文件的后缀
  • 配置文件中至少包含以下四个部分
仓库的唯一标识: []

仓库的描述信息:name=

仓库的地址:baseurl=  #可以指定多个yum服务器的地址

是否开启gpg校验:gogcheck=0|1

说明:

  • 不指定enabled=1,默认enabled=1,标识启用这个仓库
  • 仓库的地址路径:
    能看到repodata的路径,比如/a/b/c/repodata/xxx 则路径就是:/a/b/c/
baseurl支持一下四种格式:
  • file:// 使用本地路径,比如挂载本地光盘作为yum源
  • http:// 使用网络地址
  • https://
  • ftp://
#yum仓库指向的路径一定必须是repodata目录所在目录
注意:yum仓库指向的路径一定必须是repodata目录所在目录

说明:

阿里云提供了写好的CentOS和ubuntu的仓库文件下载链接,可以通 https://developer.aliyun.com/mirror/ 来下载相关的源

说明:

镜像中的仓库:

  • CentOS8的镜像中有两个yum仓库,AppStream和BaseOS
  • CentOS7的镜像中将所有的软件包都放在一个仓库中

互联网上的仓库:

  • epel仓库:全称叫 Extra Packages for Enterprise Linux,不存在于光盘中,而是在互联网上。存放了一些常用的软件
  • extras仓库:可以通过这个来生成epel源(epel-release这个软件就在extras仓库中)

yum中自带的变量

$releasever: 当前系统的发行版本。OS的主版本号,如:8,7,6

$arch: CPU架构,变量的值通过 uname 命令得出,如:aarch64, i586, i686,x86_64等

$basearch:CPU的架构,系统基础平台;i386, x86_64

$contentdir:表示目录,比如:centos-8,centos-7

$YUM0-$YUM9:自定义变量

国内的镜像站点

#阿里云
https://mirrors.aliyun.com

#腾讯云
https://mirrors.cloud.tencent.com

#华为云
https://repo.huaweicloud.com/centos

#清华大学
https://mirrors.tuna.tsinghua.edu.cn

范例:为CentOS 8 配置仓库

#为CentOS 8 配置 yum 的系统和EPEL源仓库
[appstream]
name=AppStream
baseurl=file:///mnt/misc/AppStream
gpgcheck=0
enabled=1

[baseos]
name=BaseOS
baseurl=file:///mnt/misc/BaseOS
gpgcheck=0
enabled=1

[epel]
name=EPEL
baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$arch/
        http://mirrors.cloud.tencent.com/epel/$releasever/Everything/$arch/
        http://repo.huaweicloud.com/epel/$releasever/Everything/$arch/
        https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$arch/
gpgcheck=0
enabled=1

[extras]
name=extras
baseurl=http://repo.huaweicloud.com/centos/$releasever/extras/$arch/os/
        http://mirrors.aliyun.com/centos-vault/$releasever/extras/$arch/os/
gpgcheck=0
enabled=1

启用和禁用仓库

  • 1.在配置文件中指定: enabled=0|1 #0表示禁用,1表示启用。 默认enabld=1
  • 2.通过命令的方式: yum-config-manager --disable或者 --enable 仓库的唯一标识符

yum相关命令使用说明

-y:自动安装,不用手动输入yes

--showduplicates  #这个参数可以列出软件包的所有版本,不加这个参数默认列出最新版本

显示仓库列表:repolist

yum repolist [all|enabled|disabled]

yum repolist        #查询本地配置了多少个yum源的信息(默认显示启用的仓库)

yum repolist all    #显示系统中所有的仓库

#选项:
-v: 显示yum源的详细信息

Linux yum的实现和配置

显示软件包信息:

yum list             # 列出当前仓库中所有的程序包

yum list available   #只列出没有装好的程序包

yum list installed   # 只列出装好了的程序包

yum list package     #查看指定的包是否存在yum源中

yum info package     #查看软件包的相关信息

安装程序包: install

yum install package

yum -y install --downloadonly --downloaddir=xxx packagename #只下载不安装
#downloaddir:下载的软件包的保存路径

yum groupinsatall group #安装软件包组

卸载程序包:remove

yum remove package_name  #移除指定的软件包

升级程序包:update

yum update  #全部更新

yum update package #更新指定的软件包

查询:provides

查看指定的特性(可以是某文件)是由哪个程序包所提供:

yum provides | whatprovides feature1 [feature2] [...]

例如:yum privodes */gzip

范例:

通过名字获取没有安装的包的信息(比如包的信息)

解决方法:yum provides | whatprovides */filename   #写通配符解决

使用rpm -ql 只能查询列出所有已经被安装的rpm package

Linux yum的实现和配置
(有的时候不一定能查到,因为没有写路径)

仓库缓存

清除缓存:clean all

清除目录/var/cache/yum/缓存

yum clean all   #清除所有的仓库缓存

构建缓存: makecache

yum makecache  #构建仓库的缓存

安装升级本地软件包: localinstall

yum localinstall|install rpmfile1  #安装本地的软件包

yum localupdate|update rpmfile1    #升级本地的软件包

Original: https://www.cnblogs.com/heyongshen/p/16397145.html
Author: 背对背依靠
Title: Linux yum的实现和配置