自建yum仓库

自建yum仓库

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。

 

环境说明

系统版本    CentOS 6.9 x86_64

  1. 收集rpm包

收集rpm包的方式:

※ 自己制作rpm包(较复杂)

※ 从光盘镜像中提供rpm

※ 修改配置文件保留安装rpm包时的rpm包及依赖包

[root@m01 opt]# vim /etc/yum.conf

扫描二维码关注公众号,回复: 1751431 查看本文章

[main]

cachedir=/var/cache/yum/$basearch/$releasever    #保存的路径,可以修改安装包的存储目录为本地yum源的目录

keepcache=1        #参数为1表示保存安装时下载的rpm

[root@m01 ~]# find / -name "*.rpm" |xargs mv -t /application/nginx/html/yum/        #将本地所有的rpm包移动到yum源的目录下

  • yum只下载不安装

yumdownloader pcre-devel openssl-devel

  • 同步公网yum源

 

2、安装createrepo生成repodata

[root@m01 yum]# yum install createrepo -y

[root@m01 ~]# cd /application/nginx/html/yum

[root@m01 yum]# createrepo -pdo `pwd` `pwd`    #初始化repodata索引文件,路径可以更换为自己指定的路径

 

3、yum客户端配置

创建本地yum源的repo文件

[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# mkdir test

[root@localhost yum.repos.d]# mv *.repo test/    #移动系统原有的repo文件

[root@localhost yum.repos.d]# vim local.repo    #创建并编辑本地repo文件

[local]

name=localyum    #名称

baseurl=http://10.0.0.61/        #yum源的url

enabled=1    #启用repo1为默认项

gpgcheck=0    #不使用gpg检查

 

4、更新repodata索引文件

createrepo --update /application/nginx/html/yum

或删除repodatacreaterepo -pdo `pwd` `pwd`生成一下

注:每次添加或更新完rpm包都需要更新repodata索引文件

 

5、yum缓存

5.1 yum缓存共享

机器很多的时候,每次单独更新yum缓存需要消耗大量流量,可以采取共享的方式节省流量

共享的方式:传送缓存文件/var/cache/yum/x86_64/6/或者利用nfs文件共享

5.2修改yum缓存保持的时间

[root@m01 ~]# vim /etc/yum.conf

修改# metadata_expire=90m

(使用公网yum源)

metadata_expire=1d(时间短)

(使用自建yum源)

metadata_expire=365d(时间长)

 

6、yum插件

[root@m01 ~]# vim /etc/yum.conf    #修改配置文件

plugins=1    #默认值为1,开启插件

 

6.1 yum加速插件fastestmirror

系统默认CentOS-Base.repo文件说明:

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

其中mirrorlist表示列表,后面的表达式我们可以根据系统将其变量替换为实际的值,即

http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=$infra

用浏览器访问,可以发现官网会将上面的地址根据系统的信息以及ip地址匹配出适合本机器的yum源地址

[root@m01 ~]# cat /var/cache/yum/x86_64/6/base/mirrorlist.txt    #通过本地记录查看地址

[root@m01 ~]# cat /var/cache/yum/x86_64/6/timedhosts.txt    #通过本地记录查看时间

[root@m01 ~]# cat /etc/yum/pluginconf.d/fastestmirror.conf        #查看插件的配置文件

[main]

enabled=1

verbose=0

always_print_best_host = true

socket_timeout=3

# Relative paths are relative to the cachedir (and so works for users as well

# as root).

hostfilepath=timedhosts.txt

maxhostfileage=10

maxthreads=15

#exclude=.gov, facebook

#include_only=.nl,.de,.uk,.ie

启用加速插件的要求即开启插件功能和将地址换为mirrorlist

启用加速插件后yum安装的原理是对照上述的各个地址进行ping操作,哪一个的时间相对更短,则此次安装就通过这个yum源的地址进行安装

 

6.2 yum安全插件

默认已经安装并启用了该插件

[root@m01 ~]# cat /etc/yum/pluginconf.d/security.conf

[main]

enabled=1    #启用插件

 

6.3 yum优先级插件priorities

Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源。Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。

6.3.1安装

[root@m01 ~]# yum install yum-priorities    #安装插件

6.3.2配置

[root@m01 ~]# cat /etc/yum/pluginconf.d/priorities.conf

[main]

enabled = 1    #默认启用插件

修改CentOS-Base.repo配置文件,例如本地现在有aliyun和tsinghua的repo文件,配置tsinghua的优先级高

配置方法为将priority=1(高优先级)分别添加到CentOS-tsinghua.repo中 [base], [updates], [extras], [centosplus]和 [contrib]这几个源记录模块名称的后面,并修改模块名称(模块名称不能重复)

利用sed命令和正则表达式

sed -r -i 's#(^\[.*$)#\1\npriority=1#g' CentOS-tsinghua.repo    #在模块名称下指定优先级值

sed -r -i 's#^(^\[[a-z]+)#\1-tsinghua#g' CentOS-tsinghua.repo    #修改模块名称,添加"-tsinghua"后缀

同样的,将priority=2(低优先级)分别添加到CentOS-aliyun.repo中[base], [updates], [extras], [centosplus]和 [contrib]这几个源记录模块名称的后面

sed -r -i 's#(^\[.*$)#\1\npriority=2#g' CentOS-aliyun.repo

sed -r -i 's#^(^\[[a-z]+)#\1-aliyun#g' CentOS-tsinghua.repo

6.3.3检验

使用yum安装一个软件,例如yum install memcached –y

可以发现yum会比较优先级最后通过base-tsinghua的仓库进行安装

 

6.4 yum锁定软件版本插件versionlock

使用该锁定指令就可以避免误升级软件包到最新版本。特别是在生产环境下的软件包,版本的更新可以有些配置参数不兼容到服务停止,从而影响正常的访问

6.4.1 安装

[root@m01 ~]# yum install yum-plugin-versionlock.noarch -y

[root@m01 ~]# cat /etc/yum/pluginconf.d/priorities.conf

[main]        

enabled = 1    #默认启用插件

6.4.2 使用,添加锁定包

例子:将kernel包锁定到当前版本

[root@m01 ~]# yum versionlock kernel    #添加锁定包

已加载插件:fastestmirror, priorities, security, versionlock

Adding versionlock on: 0:kernel-2.6.32-696.el6

versionlock added: 1

[root@m01 ~]# yum update kernel    #更新kernel,无法更新,锁定成功

已加载插件:fastestmirror, priorities, security, versionlock

设置更新进程

Loading mirror speeds from cached hostfile

* base-aliyun: mirrors.aliyun.com

* extras-aliyun: mirrors.aliyun.com

* updates-aliyun: mirrors.aliyun.com

8146 packages excluded due to repository priority protections

不升级任何软件包

[root@m01 ~]# yum versionlock list    #查看锁定列表

已加载插件:fastestmirror, priorities, security, versionlock

0:kernel-2.6.32-696.el6.*

versionlock list done

[root@m01 ~]# yum versionlock delete '0:kernel-2.6.32-696.el6.*'    #清除单个锁定

已加载插件:fastestmirror, priorities, security, versionlock

Deleting versionlock for: 0:kernel-2.6.32-696.el6.*

versionlock deleted: 1

[root@m01 ~]# yum versionlock clear    #清除所有锁定

已加载插件:fastestmirror, priorities, security, versionlock

versionlock cleared

 

说明:

说明1、yum源过滤指定的rpm包,若不想通过所设置的优先级,通过优先级低的源进行安装软件,需要利用配置参数exclude,修改高优先级的repo配置文件CentOS-tsinghua.repo

[root@m01 yum.repos.d]# vim CentOS-tsinghua.repo

[base-tsinghua]

priority=1

name=CentOS-$releasever - Base

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/

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

gpgcheck=1

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

exclude=mysql*    #过滤有mysql的软件,相应软件要与所在的模块对应

执行命令安装mysql,可以发现已经不通过高优先级的tsinghua源安装,通过aliyun源安装

说明2、源记录(repository entry)是由 [ 和 ] 括起来的源名称。例如,Base 源记录就标记为 [base] 。

优先级由 1 ~ 99 的 99 个数表示,1 的优先级最高。优先级小的源即使有某软件的较新版本,如果优先级高的源中没有,在启用该插件的情况下,系统也无法安装/升级到该较新版本。图形界面的 YUM 工具一般默认就已经包含了优先级插件。

说明3、要禁用 YUM 优先级功能,只需要在/etc/yum/pluginconf.d/priorities.conf 中将 enable=1 改为 enable=0 即可。不建议!

 

7、yum常用参数

yum install             安装

yum remove         卸载

yum update         更新

yum check-update    检查是否有可用的更新

yum repolist         获取当前系统有效的repolist

yum list             获取当前有效repolist中所能安装的所有rpm包列表

yum info             显示指定的rpm软件包的描述信息和概要信息

yum clean all         清理本地缓存

yum makecache     构建缓存

yum deplist         显示rpm软件包的依赖关系

yum localinstall         安装本地的rpm软件包

yum list recent         显示仓库中最近增加的程序包

yum history         查看yum事务历史

 

博主原创文章,转载请务必注明出处

猜你喜欢

转载自www.cnblogs.com/ssgeek/p/9223449.html
今日推荐