zoukankan      html  css  js  c++  java
  • 自建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

    [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 priority=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 priority=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事务历史

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

  • 相关阅读:
    js 手机端触发事事件、javascript手机端/移动端触发事件
    行高引起的行内块级元素间距
    js实现复制功能
    encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别
    CSS动画总结效果
    CSS属性之word-break:break-all强制性换行
    在handlebars.js {{#if}}条件下的逻辑运算符解决方案
    js模版引擎handlebars.js实用教程——由于if功力不足引出的Helper
    垂直方向兼容显示的内容多少的情况样式Flex布局
    实现div里的img图片水平垂直居中
  • 原文地址:https://www.cnblogs.com/ssgeek/p/9223449.html
Copyright © 2011-2022 走看看