zoukankan      html  css  js  c++  java
  • [转]YUM的工作机制与配置

    Yum解决了rpm不能解决的依赖关系,但是YUM是依赖RPM运行的

    • yum服务器

      所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提 供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本 号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息(元数据)做成一张" 清单",这张"清单""就是描述每个rpm包的spec文件中信息。

    • yum client端

      client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件,这些配置文件指定了yum服务 器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清 单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache),yum安装完成后自动删除已安装程序的安装包,但是不会删除元数据,方便下次使用

    Yum仓库相当于rpm仓库+元数据

    Createrepo命令(用于分析每个包后在rpm仓库中生成元数据)

    当第一次使用yum管理软件时,yum会自动下载所需要的headers放置在/var/cache/yum目录下;

    Yum仓库---->yum 缓存---->本地安装

    yum的配置文件:

    1./etc/yum.conf:为所有仓库提供公共配置
    [main]
    cachedir:  yum缓存的目录,yum在此路径下存储下载的rpm包和数据库,一般是/var/cache/yum。
    debuglevel:除错级别,0──10,默认是2
    logfile:   yum的日志文件,默认是/var/log/yum.log。
    pkgpolicy:包的策略。

    一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
    distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
    exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用i686的包来升级。
    retries:   网络连接发生错误后的重试次数,如果设为0,则会无限重试。
    tolerent:  也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1则yum不会出现错误信息,默认是0。
    除了上述之外,还有一些可以添加的选项,如
    exclude:   排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
    gpgcheck: 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。

    plugins:  是否启用所有的插件(plug-in),默认为0,代表不启用。由于RHEL为YUM提供了一个名为rhn-plugin的插件,以便读取RHN提供的YUM下载源,因此你必须保持这个参数为1,才能顺利使用RHN的YUM下载源来安装、升级你的RHEL。

    metadata_expire: 定义YUM缓存中数据的过期时间,单位为秒。

    proxy:    指定读取下载源时使用的代理服务器的路径(URL)。

    2.    /etc/yum.repos.d/*.repo:为仓库的指向提供配置

            仓库指向的定义:
            [repositoryID]
            name=Some name for this repository
            baseurl=url://path/to/repository/
            enabled={1|0}
            gpgcheck={1|0}
            gpgkey=URL
            enablegroups={1|0}
            failovermethod={roundrobin|priority}
                默认为:roundrobin,意为随机挑选;baseurl有多个时,会轮询挑选,如果选             roundrobin,会随机挑选       

            cost=(默认为1000)

    wKioL1XqsMCiTFLBAABvPi29niw042.jpg

    YUM工具的使用:

        yum的命令行选项:
            --nogpgcheck:禁止进行gpg check;
            -y: 自动回答为“yes”;
            -q:静默模式;
            --disablerepo=repoidglob:临时禁用此处指定的repo;
            --enablerepo=repoidglob:临时启用此处指定的repo;
            --noplugins:禁用所有插件;

        yum的repo配置文件中可用的变量:
            $releasever: 当前OS的发行版的主版本号;
            $arch: 平台;
            $basearch:基础平台;
            $YUM0-$YUM9

    下面的配置中使用了变量:

    wKiom1XqyvLx0vOvAAHkI4mYydQ790.jpg

    man手册输出

            yum [options] [command] [package ...]
           command is one of:
            * install package1 [package2] [...]
            * update [package1] [package2] [...]
            * update-to [package1] [package2] [...]
            * check-update
            * upgrade [package1] [package2] [...]
            * upgrade-to [package1] [package2] [...]
            * distribution-synchronization [package1] [package2] [...]
            * remove | erase package1 [package2] [...]
            * list [...]
            * info [...]
            * provides | whatprovides feature1 [feature2] [...]
            * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
            * makecache
            * groupinstall group1 [group2] [...]
            * groupupdate group1 [group2] [...]
            * grouplist [hidden] [groupwildcard] [...]
            * groupremove group1 [group2] [...]
            * groupinfo group1 [...]
            * search string1 [string2] [...]
            * shell [filename]
            * resolvedep dep1 [dep2] [...]
            * localinstall rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use install)
            * localupdate rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use update)
            * reinstall package1 [package2] [...]
            * downgrade package1 [package2] [...]
            * deplist package1 [package2] [...]
            * repolist [all|enabled|disabled]
            * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
            * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
            * check
            * help [command]
     

        

        总结用法:

        显示仓库列表:
            repolist [all|enabled|disabled]

    wKioL1Xqs8WBUcs0AAEWBT8Te-k543.jpg

        显示程序包:
            list
                # yum list [all | glob_exp1] [glob_exp2] [...]
                # yum list {available|installed|updates} [glob_exp1] [...]

        安装程序包:
            install package1 [package2] [...]
            reinstall package1 [package2] [...]  (重新安装)
        升级程序包:
            update [package1] [package2] [...]
            downgrade package1 [package2] [...] (降级)
        检查可用升级:
            check-update
        卸载程序包:
            remove | erase package1 [package2] [...]
        查看程序包information:
            info [...]
        查看指定的特性(可以是某文件)是由哪个程序包所提供:
            provides | whatprovides feature1 [feature2] [...]
        清理本地缓存:
            clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
        构建缓存:
            makecache

        搜索:
            search string1 [string2] [...]
            以指定的关键字搜索程序包名及summary信息;
        查看指定包所依赖的capabilities:
            deplist package1 [package2] [...]

    wKioL1XqtomRGjcbAAESPEd_gjg340.jpg

        查看yum事务历史:
            history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    wKiom1XqtRKQDMxDAAC_DfVBNmU525.jpg   

        安装及升级本地程序包:
            * localinstall rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use install)
            * localupdate rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use update)
        包组管理的相关命令:
            * groupinstall group1 [group2] [...]
            * groupupdate group1 [group2] [...]
            * grouplist [hidden] [groupwildcard] [...]
            * groupremove group1 [group2] [...]
            * groupinfo group1 [...]

    wKioL1Xqubmyz8JdAAFGyeGiSW8254.jpg

    话题:创建YUM仓库

    步骤:

    服务器端配置:

    1. 创建要设置为yum源的目录,并且拷贝一些rpm包到此目录

    wKiom1Xqz77gxMBBAAGHDnSvVmQ577.jpg

    使用createrepo命令生成repodata信息

    wKioL1Xq0eTAXgmvAAJOkTWNWLo120.jpg

    如果想提供远程仓库需要配置httpd服务器到发布目录

    客户端配置:

    在/etc/repo.d目录下新建一个repo文件

    wKiom1Xq0X2gPmX0AAAlcD31XDY194.jpg

    测试:发现最后一行我们配置的local仓库生效了

    wKioL1Xq06OTq60LAAFCOVODaM8809.jpg

    来源:

    http://zhuanlan.zhihu.com/p/103038696

    http://blog.51cto.com/leeyan/1691586

  • 相关阅读:
    Winform中TextBox控件开启自动提示补全功能
    使用jsonp进行跨域访问
    sqlite不存在记录则插入数据
    【编译CEF3】编译Chromium(CEF3)源代码增加对mp3/mp4等格式支持的编译手记 完成编译,增加mp3/mp4等格式支持(3) 2018-5-21
    【编译CEF3】编译Chromium(CEF3)源代码增加对mp3/mp4等格式支持的编译手记 编译过程中所遇到的问题(2) 2018-5-20
    【编译CEF3】编译Chromium(CEF3)源代码增加对mp3/mp4等格式支持的编译手记 搭建编译环境的过程中所遇到的问题(1) 2018-5-19
    Git同步本地到Github失败
    Python基础知识总结
    Git命令
    Git仓库创建和文件提交
  • 原文地址:https://www.cnblogs.com/wutou/p/14288342.html
Copyright © 2011-2022 走看看