码迷,mamicode.com
首页 > 其他好文 > 详细

程序包管理二之yum详解

时间:2016-07-25 16:28:12      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:程序包管理:yum;编译安装

  上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。

Linux程序包管理(2):

   Centos:yum,dnf 两个rpm前端工具

    URL:ftp://10.1.0.1/pub/

    YUM :yellow dog, Yellowdog,Update Modifier

     采取cs架构 从文件服务器加载rpm包,安装程序到本地主机 

    yum repository:yum repo

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

   文件服务器:

     ftp://

     http://

     nfs://

     file://

一、yum客户端

  •   配置文件:

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

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


  •   仓库的定义:

     [repositoryID]

      name=Some name for this repository 仓库名称

      baseurl=ur1://path/to/repository/  指明rpm包的文件服务器

      enabled={1|0} 启动此仓库

      pgpchecck={1|0} 此仓库的所有rpm包在安装前是否支持来源合法性和完整性验证

      gpgkey=URL  指明密钥文件,通过URL把密钥文件通过服务器共享

      enablesgroups={1|0} 是否支持此仓库批量管理包组 默认支持,不写也OK

      failovermethod={roundrobin|priority}   故障转移方法 ,仓库在特殊情况下的使用顺序

        默认为:roundrobin  轮训,意为随机挑选;

      priority 凭位置的上下优先级决定

       cost=默认为1000

  •   yum命令的用法 (引用于yum的官方帮助文档):

      yum [options] [command] [package ...]

      command is one of:

       * install package1 [package2] [...]

       * update [package1] [package2] [...]

       * update-to [package1] [package2] [...]

       * update-minimal [package1] [package2] [...]

       * check-update

       * upgrade [package1] [package2] [...]

       * upgrade-to [package1] [package2] [...]

       * distribution-synchronization [package1] [package2] [...]

       * remove | erase package1 [package2] [...]

       * autoremove [package1] [...]

       * list [...]

       * info [...]

       * provides | whatprovides feature1 [feature2] [...]

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

       * makecache [fast]

       * groups [...]

       * search string1 [string2] [...]

       * shell [filename]

       * resolvedep dep1 [dep2] [...]

        (maintained for legacy reasons only - use repoquery or yum provides)

       * 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]

       * repoinfo [all|enabled|disabled]

       *  repository-packages <enabled-repoid> <install|remove|remove-or-rei

         stall|remove-or-distribution-synchronization> [package2] [...]

       * version [all|installed| available | group-* |nogroups* |grouplist| groupinfo ]

       *history [info|list|redo|undo|rollback|new|sync|stats]

       * load-transaction [txfile]

        info|redo|undo|rollback|new|sync|stats]

       * load-transaction [txfile]

       * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates |

       exclude-all | check-running-kernel]

       * fssnapshot [summary | list | have-space | create | delete]

       * fs [filters | refilter | refilter-cleanup | du]

       * check

       * help [command]

    

      显示仓库列表:

        repolist [all|enabled|disabled]

      显示程序包:

        list

         #yum list [all|glob_exp1] [glob_exp2]..

         #yum list {available|installed|updatese} [glob_exp1]

      安装程序包

         install package1[package2] ...

         reinstall                       覆盖重新安装

      升级程序包

        update [package1] [package2] ..

         downgrade   [package1] [package2] .. 降级 

      检查可用升级

         chack-update

      卸载程序包:

         rmore  | erase package1 [package2]..

      查看程序包 information

        info [...]

      查看程序提供特性:(可以查看是有那个程序包所提供)

        provides | whatprovides feature1 [feature2] [...]

      清理本地缓存:

        clean [ package | metadata | expire-cache| rpmddb| plugins|all]

      构建缓存

        makecache

      搜索:

        search string1 [string2][..]

         以指定的关键字搜索程序包名及summary信息

       查看指定包所依赖的capabilities

         deplist package1 [package] [..]

       查看yum事务历史

         yum history [info|list|packages-list|pac|redo|undo|rollback|new|sync|stats]

       安装及升级本地程序包 (5系系统用localinstall)

          * localinstall rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use install)

          * localupdate rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use update)

    

       包组管理的相关命令

         groupinstall group1 [group2] ...安装包组

         groupuodate group1 [group2] ...               升级包组

         grouplist [hidden] [groupwildcard] [...]  显示包组列表

         groupremove  group1 [group2] ...  卸载包组

         groupinfo group1 [group2] ...    显示包组的详细信息及包的组成信息


  •   练习:创建本地yum源

     1.挂载光盘

        (1).虚拟机的设置里选CD-ROM中的已连接

        (2).命令:

           [root@wen-7 ~]# mount -r -t iso9660 /dev/cdrom /media

           mount: /dev/sr0 写保护,将以只读方式挂载

     2.配置yum

        [root@wen-7 ~]# cd /etc/yum.repos.d/ 会看到系统默认的一些以Centos开头文件,是网络yum源,暂不使用,可以创建一个文件,mv移动到文件里以后使用

        [root@wen-7 yum.repos.d]# ls

        1  yum.repo

        [root@wen-7 yum.repos.d]# cat yum.repo 创建一个以repo为后缀的文本,配置如下:

        [centos7]

        name=centos 7 is yum

        gpgcheck=0

        enabled=1

        baseurl=file:///media

        [root@wen-7 yum.repos.d]# yum repolist  #检查yum是否配置成功,结果如下,表示已加载成功软件包,可正常使用yum了

        已加载插件:fastestmirror, langpacks

        Loading mirror speeds from cached hostfile

        源标识                           源名称                        状态

        yum                              yum                           9,007

        repolist: 9,007


  •    yum的命令行选项

       --nogpgcheck:禁止进行pgpcheck 阻止验证来源合法性和完整性

       -y: 指定回答yes 避免用户交互

       -q:静默模式

       --enablerepo=repoidglob:临时启用此处指定的repo。

       --disablerepo=repoidglob:临时禁用此处指定的repo。

      --noplugins:禁用所有插件


  •   yum的仓库配置文件中可用的变量:

     判断获取当前系统的版本号 ,方便yum 自己找寻符合自己主机的yum仓库地址

    

        $releaserver:当前OS的发行版的主版本号;

        $rach:平台

        $basearch:基础平台

        $YUM0-$YUM9

       例:

        http://mirrors.magedu.com/centos/$centos-7/i386/os

         http://mirrors.magedu.com/centos/$$releaserver/$basearch/os


二、程序包编译安装

   testappp-VERSION-release.src.rpm-->安装后,使用rpmbuild命令制作成二进制格式包的rpm包,而后在安装;

    源代码-->预处理———>编译(gcc)-->汇编-->链接-->执行

  •  源代码组织格式

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

     C/C++: make (configure -->Makefile.in-->makefile)

     java:maven

  •  编译安装三步骤:

     (1)./configure:

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

        (2)检查依赖到的外部环境; 不存在外部环境,会报警,提示安装所需的外部环境。configure执行失败,make将无法进行;

     (2)make  (项目管理工具,依赖于Makefile)

       根据makefile文件,构建应用程序;相仿与instal命令,把程序的相应的文件复制到工作目录中

     (3)make install

       相仿与instal命令,把程序的相应的文件复制到相应的工作目录中(二进制文件,库文件,配置文件,帮助文档) 

    

  •  开发工具:

      autoconf:生成configure脚本 需要结合一个能够介绍程序特性的脚本,了解程序的相关信息,才能生成configure脚本

     automake:生成Makefile.in文


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

    

  •   开源程序源代码的获取:

      官方自建站点:

        apache.org(ASF)

        mariadb.org

        ....

      代码托管站点:

       SourceForge

       Github.com

       code.google.com

        ...

  •   编译c源代码:

      C/C++: gcc(GNU C Complier)编译器

       前提:提供开发工具记忆开发环境

         开发工具:make,gcc等

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

         glibc:标准库

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

        Centos 6:“Development Tools”,“Server Platdorm Development”

      过程:

       (1)configure脚本

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

           --help:获取其支持使用的选项

         选项分类:

           安装路径设定

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

             --sysconfdir=/PATH/TO/SOMEWHERE/:配置文件存放位置

           system types(系统设定):

             Optional Packages(可选依赖包):

              --with-PACKAGE[=ARG]

              --without-PACKAGE

          Optional Features(可选特性):

              --disable-FEATURE

             --enable-FEATURE[=ARG]

            环境变量:

       (2)make

          调用命令,编译安装

       (3)make install 

          移动,粘贴程序文件

    

       (4)安装后的配置

        (1)导出二进制程序目录至PATH环境变量中

            编辑文件:/etc/profile.d/NAME.sh

            export PATH=PATH/TO/BIN:$PATH

         (2)导出库文件路径:

            编辑/etc/ld.so.conf/NAMe.conf

            添加新反库文件所在目录至此文件中;

            让系统重新生成缓存:

             idconfig [-v]

        (3)导出头文件

            基于连接的方式实现

            ln -sv

        (4)导出帮助手册

            编辑/etc/man.config文件中

            添加一个MANPATH

    



  三:练习:

    (1)yum的配置和使用,包括yum reoisitory的创建

      

       (1).准备rpm包到文件夹内 

         (2).createrepo ./ 进入文件夹内 执行命令createrepo命令,创建仓库函数

          [root@wen-7 yum]# createrepo ./

            Spawning worker 0 with 546 pkgs

            Workers Finished

          Saving Primary metadata

          Saving file lists metadata

        Saving other metadata

        Generating sqlite DBs

        Sqlite DBs complete

        (3).检查仓库函数

         [root@wen-7 yum]# cd repodata/

         [root@wen-7 repodata]# ls

         189860660bf3eff6826715ecec3750a6d116d9b034703a71fed5661b2d5ac719-primary.xml.gz

         2a3690fa47f57597494eb52bed1c8baafe8418467b5af2d82b79505c1dd8f124-filelists.sqlite.bz2

         328759bb1bb75627712b4ba99b4234c26aefcb71bc9c71a78b08092c106ea303-primary.sqlite.bz2

         581f2e2e2025c833919ea42523ecad4dbb6d83c162c9c85c260965fed41a0532-other.xml.gz

         a83ecbd110af8a84c6587b04de826154a514dac462f21b59fa1eee1b1baaa950-other.sqlite.bz2

         c24ada093144b72ec25f3f5876f199a15baaa27bdd8741b78a8b82ef90a1b0f1-filelists.xml.gz

       (4).编写仓库文件

         [root@wen-7 repodata]# vim /etc/yum.repos.d/yum.rep

           [centos7]

        name=centos7.yum

        pgpcheck=0

        baseurl=file:///root/yum/

      (5).清除yum缓存

        yum makecache

       (6).查看yum包列表

        [root@wen-7 repodata]# yum repolist

        已加载插件:fastestmirror, langpack centos7/primary_db  | 263 kB  00:00:00     

        Loading mirror speeds from cached hostfile 源标识    源名称     状态

        centos7(以显示可以使用,后面有546个包) centos7.yum     546

        yum                                yum   9,007

        repolist: 9,553   

       到此,自已制作rpm仓库以完成




    编译安装apache 2.2,启动此服务


    博客作业:程序包管理: rpm、yum、编译

    

    

    

    

本文出自 “linux系统” 博客,谢绝转载!

程序包管理二之yum详解

标签:程序包管理:yum;编译安装

原文地址:http://wencx.blog.51cto.com/10280028/1829682

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!