YUM,Yellow dog UpdateModified,是一个在Fedora和RedHat以及CentOS中的shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装。

1.     Yum客户端:

配置文件:

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

wKiom1mWe3_TeekrAACFa3hx34g958.png-wh_50

具体参数含义为:

cachedir=/var/cache/yum/$basearch/$releasever   ##yum缓存目录,yum在此存储下载的rpm包和数据库;

keepcache=0    ##安装完成后是否保留软件包,0不保留,1为保留,默认为0;

debuglevel=2    ##debug信息输出等级,范围为0-10,缺省为2;

logfile=/var/log/yum.log  ##yum日志文件位置;

exactarch=1           ##精确平台匹配,设置为1时,yum只会安装和系统架构精确匹配的软件包;

obsoletes=1           ##update的参数,允许更新陈旧的rpm包;

gpgcheck=1           ##检查安装包的完整性和来源合法性,1检查,0不检查;

plugins=1         ##是否启用插件,默认为1允许,

installonly_limit=5      ##

bugtracker_url=           ##bug提交的url

gory=yum              ##

distroverpkg=centos-release          ##指定一个软件包,yum会根据这个包判断你的发行版本;

这其中也是部分的参数配置,如果想要了解更深入的可以使用如下指令进行查阅man手册:

 wKioL1mWe5zz7LHWAAASpawzsB8952.png-wh_50

仓库指向:

  下面我们随机查看yum的其中一个.repo文件:

  wKioL1mWe66SshIvAAChmh19YY8563.png-wh_50

  仓库指向的定义:

  [repositoryID]##软件源的名称;

  name=Somename for this repository           ##软件仓库名;

  baseurl=url://path/to/repository/         ##yum源的镜像服务器地址;

  enabled={1|0}          ##是否启用这个repo文件,默认为1启用;

  gpgcheck={1|0}        ##是否检查安装包的完整性以及合法性;

  gpgkey=URL        ##用于校验的gpg秘钥地址;

  enablegroups={1|0}        ##手否对组启用;

  failovermethod={roundrobin|priority}   默认为:roundrobin,意为从列出的baseurl里随机挑选;

  cost=        ##花销,默认为1000;

2.     Yum命令的用法:

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]

           wKioL1mWe8XBaXSRAABwCKIWezw254.png-wh_50

           wKiom1mWe9SCaBWNAABqxT_uAD0775.png-wh_50

      显示程序包:

           list

                 #yum list [all |glob_exp1][golb_exp2]

                 #yum list{available|installed|updates} [glob_exp1] [...]

           wKioL1mWe-HwT-1LAAAHB1SHMKY971.png-wh_50

      安装程序包:

           Install package1 [package2]…

           Reinstall package1 [package2]…

      wKiom1mWe_aj9_xsAAB3YILX5ao928.png-wh_50

      在安装过程中,会有一个询问交互式的过程,必须选择y才能继续安装,否则则不会继续安装;

      升级安装包:

           update [package1] [package2]…

           downgrade package1 package2…(降级)

      检查可用升级:

           check-update

      wKioL1mWfAHhhK4pAAAjm-Lm38A477.png-wh_50

      卸载安装包:

           remove | erase package1 [package2]…

      wKiom1mWfCnQPvNUAABsoRWh_I4134.png-wh_50

      查看程序包信息information:

            info[…]

      wKioL1mWfDGzqS5zAABk3rRUpM0916.png-wh_50

      查看指定的特性(可以是某个文件)是由哪个程序包提供的:

            Provides| whatprovides feature1 [feature2][…]

      wKioL1mWfDuAJMc9AABE_Z7hQuk605.png-wh_50

      清理本地缓存:

            Clean[ packages | metadata | expire-cache | rpmdb |plugins | all ];

      wKioL1mWfEbxOtt9AAAY8XScVts847.png-wh_50

      构建缓存:

            makecache

      wKiom1mWfFPByAYIAABbZRmmzs4679.png-wh_50

      搜索:

            searchstring1 [string2] […]    以指定的关键字搜索程序包及summary信息;

      wKiom1mWfGzTYkBxAABZF-tEGyc760.png-wh_50

      查看指定的包所依赖的capabilities:

            deplistpackage1 [package2][…]

      wKioL1mWfHKCWz1fAABOu50a4qo320.png-wh_50

      查看yum事物历史:

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

      wKiom1mWfICSD-ebAAArWh10Rwo048.png-wh_50

      安装及升级本地程序包:

           * localinstall rpmfile1 [rpmfile2][...]    ##本地安装

                 (maintained for legacy reasons only - useinstall)

               *localupdate rpmfile1 [rpmfile2] [...]##本地升级

              (maintainedfor legacy reasons only - use update)

        包组管理的相关命令:

                  * groupinstall group1 [group2] [...]    ##组安装

                 * groupupdate group1 [group2] [...]  ##组升级

                  * grouplist [hidden] [groupwildcard] [...]##显示组

                  * groupremove group1 [group2] [...]##卸载组

             * groupinfo group1 [...]         ##查看组信息

 

      如何使用光盘当作本地yum仓库:

(1)            挂载光盘至某目录,例如/media/cdrom;

Mount –r –tiso9660 /dev/cdrom /media/cdrom;

(2)            创建配置文件:

[centos6.6]

name=

baseurl=

gpgcheck=

enabled=

1.     将/etc/yum.repo.d下的文件备份一份,

                  wKiom1mWfJXQA6AnAAA72JT-At0295.png-wh_50

2.     然后新建一个.repo结尾的文件,编辑配置文件,保存退出后可用yum repolist查看yum仓库是否创建成功;

        wKiom1mWfKWz-UbDAAAzwHI4JVg642.png-wh_50

其中cdrom.repo的配置文件内容为:

        wKioL1mWfK2DZ5udAAAT0eUIYtc053.png-wh_50

 

yum的命令行选项:

--nogpgcheck:不进行gpgcheck;

-y:自动回答为yes;

-q:静默模式;

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

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

--noplugins:禁用所有插件;

 

创建yum仓库:

  createrepo[options] <directory>

 

程序包的编译安装:

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

  大概的执行流程为:源代码 --> 预处理 --> 编译(gcc) --> 汇编 --> 链接 --> 执行

  源代码组织格式:

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

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

              java: maven

  c代码编译安装三步骤:

       ./configure

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

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

make

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

make install

           开发工具:

                 autoconf:生成configure脚本;

                 automake:生成makefile.in

           建议:安装前查看INSTALL,README

      开源程序源代码的获取:

           官方自建站点:

                 apache.org(ASF)

                 mariadb.org

           代码托管:

                 SourceForge

                 Github.com

                 code.google.com

      c/c++: gcc (GNU C Complier)

      编译c源代码:

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

                 开发工具:make,gcc等

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

                      glibc:标准库

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

                      Centos6:“development tools”,“server platform development”

           第一步:configure脚本

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

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

                      选项分类:

                            安装路径设定:

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

                                  --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

                            System types

                            Optional Features:可选特性

                                  --disable-FEATURE

                                  --enable-FEATURE[=ARG]

                            Optional Packages:可选包

                                  --with-Packages=[ARG]

                                      --without-PACKAGE

           第二步:make

           第三步:make install

      安装后的配置:

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

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

      ExportPATH=/PATH/TO/BIN:$PATH

(2)            导出库文件路径

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

      添加新的库文件所在的目录至此文件中:

让系统重新生成缓存:

      ldconfig[-v]

(3)            导出头文件

基于链接的方式实现:

      ln –sv

(4)            导出帮助手册

编辑/etc/man.config文件

      添加一个MANPATH

      举例:在centos6.6上编译安装httpd

1.     安装gcc编译工具:

wKiom1mWfMTQ6TAEAAAGEZqfD9c379.png-wh_50

2.     安装开发组件,"Development tools" "Server PlatformDevelopment"

wKioL1mWfM2j6ojGAAALT4VAUnw182.png-wh_50

3.     进入下载的httpd文件夹,展开httpd-2.2.26.tar.gz,并进入http-2.2.26文件夹:

wKiom1mWfNzh42-GAACOENrQxjo080.png-wh_50

4.     运行http-2.2.26文件夹下的configue脚本,并指明安装路径等选项:

wKioL1mWfOWBcrKpAAANQYBU1r4179.png-wh_50

5.     等脚本运行完之后运行make命令:

wKioL1mWfPTD967eAAAHkYBMET4529.png-wh_50

6.     然后运行make install命令:

wKiom1mWfQyyH8BBAAAH2ImfS8A180.png-wh_50

7.     进入安装目录,

wKiom1mWfRfzcPNCAAAV5ZMEBzM503.png-wh_50

测试80端口是否在监听状态:

wKioL1mWfSDSzM_mAABdJr1iKWE572.png-wh_50

8.     在网页中测试服务状态:

wKiom1mWfS3DvAsrAABzk276qa0784.png-wh_50

安装完之后的配置:

9.     导出二进制程序目录至PATH环境变量中;

wKiom1mWfTqAAeCQAAA-hXmpFO0482.png-wh_50

10.导出库文件路径,并让系统重新生成缓存:

wKioL1mWfUOxms09AAAx3VqLHg8484.png-wh_50

系统重新生成缓存:

wKioL1mWfU3y73lBAAAmez_fUVc456.png-wh_50

11.导出头文件:

wKioL1mWfWHhBQuZAAAPhkV6vM4084.png-wh_50

12.导出帮助手册:

wKiom1mWfW6z9Tn7AABXjdj-f8o779.png-wh_50

此时,才算完成整个程序的编译安装。