天天看点

程序包管理(二)yum

<code>一、yum简介</code>

<code>二、客户端配置文件</code>

<code>三、yum命令使用</code>

<code>四、*.repo的配置文件变量</code>

<code>五、使用本地光盘当做yum仓库</code>

<code>六、创建yum仓库</code>

<code>七、程序包的编译安装</code>

<code>八、开源程序的源代码的获取与安装</code>

<code>九、configure脚本十、后续步骤</code>

前言    

    rpm弊端:依赖关系,yum会自动解决依赖关系

    Centos:yum,dnf

    debian:apt-get

    suse:zypper

一、yum简介  

    C/S架构:yelow dog Update Modifer

    S:文件服务器,放置rpm包,共享到外部主机

        描述性信息{元数据文件}:版本,包名,依赖关系

    c:支持rpm包的基本功能和yum工具

        安装程序的时候:先下载描述性信息到本地缓存中//查看是否存在目标程序,分析依赖关系,下载,安装,删除程序包,但是不会删除元数据

        //问题:元数据本地的和server可能没有同步,方法:每一次使用yum的时候,同步校验码(元数据)是否相同,判断是否更新

    同一个服务器,多个网站地址:镜像列表

    yum弊端:假如安装过程中断的话,恢复后,无法继续,需要重新开始

        dnf主要用于解决该问题

    yum仅仅是rpm的前端工具

    要素:

        yum命令

        配置文件

        仓库存在

    createrepo:创建元数据文件,自动分析依赖关系

            //分组:xml格式的

    yum repository:yum repo 仓库

        存储了众多的rpm包,以及包的相关的元数据文件(放置于特定目录下,repodata)

        文件服务器:

            ftp://

            http://

            nfs://

            file://

    [root@mt ~]# rpm -qc yum

        /etc/logrotate.d/yum    //日志滚动

        /etc/yum.conf            //主配置文件

        /etc/yum/version-groups.conf

    多个仓库:yum会分析所有仓库的元数据,都有目标程序的时候,yum会安装最新的

二、客户端配置文件

    /etc/yum.conf :为所有仓库提供公共配置

        [main] //仓库名 repositoryid

        exactarch=1 //是否做严格的平台匹配,i386,x86..

        installonly_limit=5 //一次同时安装几个程序包

         //man yum.conf //查看配置文件帮助手册

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

        [repositoryid]  //唯一

        name=随意启用

        baserurl=[ftp|http|file|]://path/to/repository

                 url://server1/paht/to/repository

                 url://server1/paht/to/repository    //查找根据顺序查找

        mirrorlist= //以镜像方式,在线共享的文件

                //yum需要支持插件功能,baseurl和mirrorlist选择一个使用

        enabled=1/0 //是否启用

        gpgcheck=0/1 //是否检查其完整性和来源合法性

        repo_gpgcheck=0/1 //检查仓库的元数据的GPG签名

        gpgkey=URL //密钥文件所在地

        enablegroups=0/1 //默认支持,是否基于组批量管理程序包

        failovermethod=roundrobin/priority 故障转移方法,轮训(随机抽取)|根据优先级

                            //多个仓库的查找顺序,默认为roundrobin:随机

        timeout //超时时间,默认30s

        username

        password  //指明账号和密码

        cost= 默认都是1000

    https://mirrors.aliyun.com/centos/7/os/x86_64/  //这个路径下有repodata目录,指定到这里就可以

    问题:baseurl和mirrorlist的区别

        baseurl:相对稳定

        mirrorlist也是一个网址,在这个网址里能下到更新源列表

            mirrorlist是从上面查找最近的更新源

三、yum命令使用

    注意:yum是具有事务的概念的,同时只能启动一个

        * repolist [all|enabled|disabled]

        * repoinfo [all|enabled|disabled]

        list all|通配符  //glob风格的通配符,默认只列出未安装的包

             available|通配符  //尚未安装的

             updates |通配符    //可用的升级包

             installed |通配符//已经安装的

             extras|通配符  //拓展的仓库内容

             obsoletes|通配符 //废弃的包

             recent|通配符  //最近添加到repository中的

        grouplist

        search string1 [string2] [...] //搜索包名和summary信息        

        reinstall|install pk1 pk2     安装

            yum reinstall zsh --enablerepo=base、

         update pk1 pk2         升级

        check-update         检查更新

        remove|erase    pk1 pk2 卸载

        info                 简要信息

        clean                  清理本地缓存

            clean  [  packages  | metadata | expire-cache | rpmdb |  plugins | all ]

        deplist //显示依赖关系

        provides | whatprovides feature1 [feature2] [...]  //查看指定的特性(可以是某文件)是由哪个程序包提供的

            yum whatprovides /bin/ls

        makecache [fast]

        downgrade package1 [package2] [...  //降级安装

        version    grouplist | groupinfo | installed | available | all

        history [summary] //安装和更新的事务,只查看摘要信息

                [info|list| package-list|package-info|summary|addon-info|redo|undo|rollback|new|sync| stats]

        localinstall/localupdate     //本地安装,而不是仓库中的包,现在直接使用intall和update都可以了

        grouinstall

        groupupdate

        groupremove

        groupinfo

    指定repo安装:--enablerepo=base 

    降级安装:yum downgrade zsh    

四、*.repo的配置文件变量

    $releasever:代表发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。

    $arch:cpu体系,如i686,athlon等

    $basearch:cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。

    http://mirrors.173.com/centos/6/i386/os

    http://mirrors.173.com/centos/7/x86_64/os

    http://mirrors.173.com/centos/7/i686/os

        $releasever == [6|7|8| r //主版本号,6.7是6,7.1是7

        $arch == 平台

        $basearch 基础平台,i386,i686的基础平台都是i386

        $YUM0-$YUM9 //自定义了10个变量,供用户使用

    http://updates/$releasever/$basearch

http://updates/$releasever/$basearch

http://updates/$releasever/$basearc

    yum install yum-priorities

        priority=N (N为1到99的正整数,数值越小越优先)

五、使用本地光盘当做yum仓库

    mount -r -t iso9660 /dev/cdrom /mnt

    创建repo文件

<code>        </code><code>[cdrom]</code>

<code>        </code><code>name=</code>

<code>        </code><code>baseurl=</code>

<code>        </code><code>gpgcheck=</code>

<code>        </code><code>gpgkey=</code>

<code>        </code><code>enabled=</code>

    yum install zsh --nogpgcheck

        -y 自动回答为yes

        -q quiet静默模式

        --disablerepo,--enablerepo ;临时禁止或者启用repo

        --disableplugin=plugin 禁用某个插件  

        --noplugin 禁用插件

六、创建yum仓库

    yum install createrepo

    mkdir /tmp/test //repo所在地,复制部分rpm包到该文件中

<code>    </code><code>-x 排除某些包</code>

<code>    </code><code>-g 指明groupfile</code>

<code>    </code><code>-v 显示过程</code>

<code>    </code><code>-c cachedir</code>

<code>    </code><code>--basedir rpm所在位置</code>

    cd /tmp/test ; createrepo ./   //直接在本目录创建

    createrepo /tmp --basedir=tmp/test 

七、程序包的编译安装

    testapp-VERSION-release.src.rpm --&gt;安装后,使用rpmbuild命令制作成二进制的rpm包,而后在安装

    源代码组织格式:

        多文件:文件中的代码之间,很可能存在跨文件依赖关系

        C、C++:make:依赖于(mkefile.in--&gt;makefile)文件

            //makefile.in是一个模板,例如安装路径,启用功能等,

            //configure允许传递选项,指定编译参数,到makefile.in文件,生成makefile

        jave:maven

    源代码---&gt;预处理---&gt;编译(gcc)---&gt;汇编(汇编器)---&gt;链接(链接器)--&gt;执行

    编译安装三步骤:

        ./confiure    //生成makefile文件

            (1)通过选项传递参数,指定启用特性,安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile文件

            (2)检查依赖到的外部环境

        make //make将源代码翻译成二进制,但是需要调用gcc实现

            根据makefile文件,构建应用程序

        make install

            使用cp命令也可以实现

    开发工具:自动生成makefile.in

        autoconf:生成confiure脚本 //也要结合一个脚本实现,脚本中描述程序的功能等

        automake:生成makefile.in //依赖于一个脚本,脚本中包括了,各种依赖关系,编译器版本等

    建议:安装前查看INSTALL,README文件

八、开源程序的源代码的获取与安装

    官方自建站点

        apache.org

        mariadb.org

        ...

    代码托管点:

        SourceForge:

        Github.com

        code.google.com

    c/c++ :gcc (GNU C Complier) :功能强悍

    编译C源代码:

        前提:提供开发工具及开发环境

            开发工具:make,gcc等

            开发环境:开发库,头文件

                glibc:标准库,兼容posix的标准

        通过“包组”提供开发组件

            Centos 6:“Development Tools",“Server Platform Development”

    注意:老版本的程序和新版本的程序在不同的OS上可能要求环境不一样导致无法安装

九、configure脚本

    选项:指定安装位置,指定启用的特性

    --help:获取支持的选项

        选项分类:

            安装路径设定:

                --prefix=/PATH/TO/SOMEWHERE :指定默认安装位置,默认/usr/local

                --sysconfdir=/PATH/TO/SOMEWHERE:配置文件路径

            System types:编译的操作可以执行交叉编译:在本平台编译其他平台的程序

            Optional Features:可选特性

                --disable-Feature:禁用该特性

                --enable-Feature:启用该特性

            Some influential environment variables:可能会产生影响的环境变量

            OPtional Packages:可选程序包,它依赖的包

                --with-PACKAGE[=ARG] :使用该包,需要指定路径

                --without-PACKAGE:不使用该包

                --with-include-apr

    make &amp;&amp; make install

十、后续步骤

    /usr/local/apache/    man,lib和头文件

    1.到处二进制程序目录至PATH环境变量中

        /etc/profile.d/NAME.sh 

            export PATH=$PATH:/usr/local/apache/

    2.导出库文件路径

        编辑/etc/ld.so.conf.d/NAME.conf

            /usr/local/apache/lib

        让系统重新生成缓存:ldconfig -v

    3.到处头文件//基于链接的方式实现

        ln -sv /usr/local/apache/include /usr/include

    4.导出帮助手册

        /etc/man.config

            添加一条MANPATH

             MANPATH     /usr/local/apache/man

        CentOS 6:/etc/man.config ;

##        CentOS 7: /etc/man_db.conf

练习:

    1.yum的配置和使用,包括yum repository

    2.编译安装apache 2.2 ;启动此服务

本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1950172,如需转载请自行联系原作者