镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

一、概念/区分:

yum源

什么是yum源:

yum是一个在CentOS、RedHat和Fedora操作系统中使用的Shell前端软件包管理器。yum主要管理基于rpm的软件包,Centos先将发布的软件放置到YUM服务器内,然后分析这些软件的依赖属性问题,将软件内的记录信息写下来(header)。然后再将这些信息分析后记录成软件相关性的清单列表。这些列表数据与软件所在的位置可以称为仓库(repository)。当客户端有软件安装的需求时,客户端主机会向网络上面的YUM服务器的仓库网址上下载清单,然后通过清单列表的数据与本机RPM数据库已存在的软件数据相比较,就可以安装所有需要的具有依赖属性的软件了。

yum的基本工作流程

服务器端:
在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。

客户端:
如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

yum客户端的配置文件:

repo文件是CentOS、RedHat和Fedora操作系统中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件源。

yum 的客户端配置文件分为两部分main 和repository:

main:定义了全局配置选项,整个yum 配置文件应该只有一个main,常位于/etc/yum.conf ,这个文件为所有仓库提供公共配置,包括yum下载的RPM包的缓存目录,日志所在位置,是否允许更新不同版本的RPM包等等。

repository:定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中,这个文件为仓库的指向提供配置。

yum 的配置方式也分两种:

直接配置/etc目录下的yum.conf文件,增加repository片段
在/etc/yum.repos.d目录下增加.repo文件

/etc/yum.conf文件详解:

  1. [main]
  2. cachedir=/var/cache/yum # cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum
  3. debuglevel=2 # debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
  4. logfile=/var/log/yum.log # 日志路
  5. pkgpolicy=newest # pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
  6. distroverpkg=centos-release # 指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
  7. tolerant=1 # tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
  8. exactarch=1 # exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
  9. retries=20 # retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
  10. obsoletes=1 # 这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包
  11. gpgcheck=1 # gpgchkeck= 有1和0两个选择,分别代表是否进行gpg校验,以确定rpm 包的来源是有效和安全的,如果没有这一项,默认是检查的。
  12. exclude=xxx #exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
  13. keepcache=[1 or 0] #设置 keepcache=1,yum 在成功安装软件包之后保留缓存的头文件 (headers) 和软件包。默认值为 keepcache=0 不保存
  14. reposdir=[包含 .repo 文件的目录的绝对路径] # 该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。

repo文件详解:

我们以Centos-Base.repo仓库基础配置文件为例
一个标准的centos的repo文件内容如下:

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

各个选项说明如下:

[base]:代表仓库的名字,中括号一定要存在,里面的名称可以随意,但是不能有两个相同的容器名称。

name:说明一下仓库的意义。

mirrorlist:这个是仓库的镜像站点列表。一般情况下默认是使用此选项。

baseurl:这个最重要,因为后面接的就是仓库的实际地址。mirrorlist是由yum程序自行去找镜像站点,baseurl则是指定固定的一个仓库网址。一个repo文件可以定义多个软件源。

enable=1:就是让这个容器启动,如果不想启动可以使用enable=0.

gpgcheck=1:指定是否需要查阅RPM文件内的数字证书。

gpgkey:就是数字证书的公钥文件所在的位置。

在Centos-Base.repo中还定义的其它的名称的仓库,如:[updates]、[extras]、[centosplus]等等,这些仓库都为YUM服务器额外附加或者是升级是用到的软件仓库,分别指向不同的路径软件仓库。

epel源

EPEL源是什么:

EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。说白了,有些组件yum源没有,epel里面有

如何获取 EPEL 的软件包:

EPEL 包含一个叫做 ‘epel-release’ 的包,其中包含了用于软件包签名的 gpg 密钥和软件源的信息。安装这个包到您的企业版 Linux 上之后,您将可以通过使用类似于 yum 的工具来安装软件包和它们的依赖。在默认情况下,EPEL 仓库的稳定版本是开启的。除了 epel-release 源,还有一个叫做 ‘epel-testing’ 仓库 包含尚未被视作稳定的软件,请自行斟酌开启的风险。 CentOS 用户可以直接通过 yum install epel-release 安装并启用 EPEL 源。

二、部署

部署阿里yum源

1.备份本地yum源

  1. [root@75-124 yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

2.获取阿里yum源配置文件

  1. [root@75-124 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

部署阿里epel(RHEL 7)源

两种方案:

一、yum安装

1.安装 epel 配置包

  1. [root@75-124 yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

2.将 repo 配置中的地址替换为阿里云镜像站地址

  1. sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
  2. sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

多了两个文件:epel.repo 和epel-testing.repo

二、wget下载直接用

  1. [root@75-124 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

3.两个都要更新yum缓存

  1. [root@75-124 yum.repos.d]# yum clean all
  2. [root@75-124 yum.repos.d]# yum makecache

讲解:

yum clean all:清除YUM缓存,清除所有已下载的包文件。yum 会把下载的软件包和header存储在cache中,而不会自动删除。并且如果觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all 全部清除

yum makecache:就是把服务器的包信息下载到本地电脑缓存起来,yum安装的时候,会先从本地缓存中调用,其实即使没有yum makecache,yum检测本地无包,会从yum拉取,所以可执行可不执行,不过最好还是再执行一下yum makecache命令。其实即使没有yum makecache,如果yum安装的时候会将安装包进行缓存,不过最好还是再执行一下yum makecache命令

4.(可不执行) yum源更新命令

  1. [root@75-124 yum.repos.d]# yum update -y(升级所有包同时也升级软件和系统内核)

讲解

其实更推荐用yum upgrade取代yum update,yum update只更新系统中已有的软件包,不会更新内核软件包(kernel-这个包),yum upgrade是更彻底的update,会分析包的废弃关系,可以跨小版本升级(比如从centos 7.1升级到centos 7.4),除了做了yum update完全相同的事之外,还会更新kernel-的包,也会卸载掉已经废弃的包。

新部署系统需要yum update/upgrade是因为yum不会给你解决依赖冲突(但是apt会)。所以yum update 是为了解决跟换yum源之后,rpm包之间的依赖关系,以免后面yum 安装某些服务报错。

因为拿到的服务器都是软件包版本比较低的操作系统,安装上层应用的时候可能会告诉你依赖不能满足,此时你需要用yum update/upgrade更新下系统的软件包,以满足安装依赖

举个例子,你的系统中已经安装了kernel-2.6.32.500,但是你要安装的某个软件包依赖于kernel-2.6.32.600,此时yum会报错退出,告诉你依赖不满足,并不会升级kernel包(只是举个例子而已,实际上几乎没有软件包直接依赖于kernel包),所以你只能yum update/upgrade一次,把系统中所有的软件包全部更新,这样满足新部署的软件包的依赖。

在debian/ubuntu的系统中,apt会对这种情况自动处理,会自动升级依赖的软件包。

换句话来说,对于新部署的服务器,也是推荐upgrade全部的软件包,已获得最新的安全补丁。即使对于已经上线的服务器,也是推荐定期打安全漏洞补丁,减少漏洞带来的侵害。

5.查看当前yum源

[root@75-124 yum.repos.d]# yum repolist

file

原文链接:https://blog.csdn.net/Jerry00713/article/details/119788967

更多相关文章

  1. linux android sdk update
  2. 谷歌开发工具Android(安卓)Studio安装使用图文教程
  3. android 加载已经安装的apk方式
  4. uiautomator2(用python控制android), 安装和连接脱坑
  5. android获取安装的应用程序
  6. Android(安卓)Adobe工具类
  7. Docker 安装 PHP并与Nginx的部署实例讲解
  8. Centos7.x环境下 安装Diszz
  9. vue项目的进一轮学习

随机推荐

  1. 当我发现国际友人翻译了我的文章之后……
  2. 如何成为那一小部分优秀开发者?
  3. 我大学如何做到 “睡后收入”的?
  4. Excel公式太复杂?我花一晚上做了个格式化
  5. Python 3.10 的首个 PEP 诞生,内置类型 zi
  6. Python 为什么没有 main 函数?为什么我不
  7. Python 为什么要有 pass 语句?
  8. 送书 | 说三件小事情!
  9. 我泪目了, 8 个人的毕业“典礼”!
  10. 那些为学校刷屏的人,刷的是什么?|无用但有