YUM工具的工作原理、用法及源 码包的编译安装

YUM工具的工作原理,用法及源码包的编译安装

_ueditor_page_break_tag_

一、 CentOS: yum, dnf

      1.YUM: (Yellow dogUpdate Modifier),rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具

       注意:yum并不是rpm的取代者,只是rpm包管理器的前端工具,是依赖于rpm包管理器的,使用yum来解决安装问题,使用rpm来查询等

      2.yum repository(仓库): yum repo

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

           注意:repodata目录所在的位置就是仓库所指向的路径

                 默认安装情况下,光盘即为本地仓库。

      3.文件服务器:(仓库本身也是一个文件服务器)

             ftp://

             http://

             file:///(本地的,默认是光盘)



        

yum客户端配置文件:

      1./etc/yum.conf主配置文件,为所有仓库提供公共配置

yum.png 

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

      2.仓库指向的定义:(具体可以 man yum。conf)

wKiom1e9YuziRbOKAAAi2wbMjo8972.png

           [repositoryID]

            name=Some name for this repository:

                当前仓库描述信息

            baseurl=url://path/to/repository/ :

                指明访问路径:通常为一个文件服务器上输出的某repository

            enabled={1|0}: 

                是否启用仓库,默认是启用的

            gpgcheck={1|0}: 

                是否对程序包做校验(完整性和来源合法性)

            gpgkey=URL  

                指明秘钥文件路径

            enablegroups={1|0}

            failovermethod={roundrobin(轮循)|priority(指明优先级)}:

                 故障转移方法,

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

            cost= 默认为1000 (成本值)

    3.创建自定义yum仓库

      1)在/etc/yum.repos.d 下定义yum仓库

      注意:这里定义的是两个不同的仓库,里面所包含的rpm包是不一样的,如果仓库内容是一样的可以使用baseurl指向多个路径,轮循,优先级都可以。

wKioL1e9asKhwH3OAAA-UCeJG30863.png

     2)使用yum repolist 来查看所有的仓库列表

wKiom1e9ba2haVLoAABxi9d2HXU001.png


三、yum命令的用法

   语法:yum [options] [command] [package …]


     1.显示仓库列表

           repolist[all|enabled|disabled]显示所有,启用和禁用的

wKiom1e9bjjBhZ3tAACbBXj9AAU234.png

     2.显示程序包

           list

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

wKiom1e9dy6yh221AABkzZiIYCY073.png

           # yum list {available|installed|updates} [glob_exp1]通配符 

wKioL1e9dZCxQItaAABLGw3NIw8273.png

     3.安装程序包

            yum install package1 [package2] […]

            yum reinstall package1 [package2] […] (重新安装)

wKiom1e9eWugNoO1AABmLYYmzvM119.png

wKiom1e9eWvhlX9AAABVmJHoYkU951.png

     4.升级程序包

             yum update [package1] [package2] […]

             yum downgrade package1 [package2] […] (降级)

          检查可用升级:

            yum check-update

     5.卸载程序包:

            yum remove | erase package1 [package2] […]

wKiom1e9e8Xg_uy7AAA7JYYibh4987.png

wKioL1e9e8bwR8wvAABHj6keDl0179.png

   6.查看程序包简要信息information:

            yum info […]

wKioL1e9fVCy6besAABZ7ZMh8Yg272.png

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

            yum  provides | whatprovidesfeature1 [feature2] […]

wKiom1e9fw3jnMrkAAA9YfLhJhY584.png

     8.清理本地缓存

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

     9.构建缓存

            yum makecache

     10.搜索

            yum search string1 [string2] […]

            以指定的关键字搜索程序包名及summary(总结,概括)信息

wKioL1e9giaA_vd5AACJTN1niFg023.png

     11.查看指定包所依赖的capabilities(依赖关系分析)

             yum deplist package1 [package2] […]

wKiom1e9g4bhw58tAAB94BlJGx8318.png

     12.查看yum事务历史

             yum history [info|list|packages-list|packages-info|

             summary|addon-info|redo|undo|

             rollback|new|sync|stats]

             yum history

             yum history info 6

             yum history undo 6

wKioL1e9hT2jDX1SAAAzbK-DgH8392.png

      13.日志

             /var/log/yum.log

      14.安装及升级本地程序包

            * localinstall rpmfile1 [rpmfile2] […]

              (用install替代)

            * localupdate rpmfile1 [rpmfile2] […]

               (用update替代)

      15.包组管理的相关命令

             groupinstall group1 [group2] […]

wKioL1e9iT_iJ29FAACQ2Niug5w534.png             groupupdate group1 [group2] […]

             grouplist [hidden] [groupwildcard] […]列出所有包组

wKioL1e9h5HR4v3nAAB4sNuebgE988.png

             groupremove group1 [group2] […]卸载

             groupinfo group1 […]显示指定包组详情

wKiom1e9iWLQA8gIAABH2Ul8Z8E939.png


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

      1. 挂载光盘至某目录,例如/media/cdrom

           # mount /dev/cdrom /media/cdrom

     注意:因为我们是手动挂载,所以机器一重启,就会丢失。CentOS6 可以挂载到                     /misc/cd 中,开机自动挂载

wKioL1e9k3eA8h4pAAAT8ZbCKPM214.pngwKiom1e9lCziQT8zAABLiF3MqvE626.png

      2. 创建配置文件

               [CentOS7]

                 name=

                 baseurl=

                 gpgcheck=

                 enabled

wKioL1e9jj7DpCjMAAAk-HzJwA4335.png


   

五、yum的命令行选项:

          –nogpgcheck:禁止进行gpgcheck

          -y: 自动回答为“yes”

          -q:静默模式

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

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

          –noplugins:禁用所有插件



六.yum的repo配置文件中可用的变量:

   这些变量可以自动获取当前平台的相关信息

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

          $arch平台,i386,i486,i586,x86_64等

          $basearch础平台;i386

          $YUM0-$YUM9:自定义变量

     实例:

            http://server/centos/$releasever/$basearch/os

            http://server/centos/7/x86_64

            http://server/centos/6/i384


七、创建yum仓库

         createrepo[options] <directory>



八、程序包编译安装

    1.编译安装

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

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

      3)源代码组织格式:

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

             C、C++:make (项目管理器,configure –> Makefile.in –> makefile)

             java: maven


    2.C代码编译安装三步骤

      1)/configure: 

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

           检查依赖到的外部环境

      2)make:根据makefile文件,构建应用程序

      3)make install:复制文件到相应路径


     3.开发工具:

       autoconf: 生成configure脚本

       automake:生成Makefile.in

       注意:安装前查看INSTALL,README


    4.开源程序源代码的获取:

       □官方自建站点:

            apache.org (ASF)

            mariadb.org

                …

       □代码托管:

            SourceForge.net

            Github.com

            code.google.com

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


      5.编译C源代码:

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

              开发工具:make, gcc等

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

               glibc:标准库

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

              CentOS 6: "Development Tools",

              "Server Platform Development



九、源码包的编译和安装步骤详解:

   1.第一步:configure脚本

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

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

         选项分类:

            安装路径设定:

                  –prefix=/PATH: 指定默认安装位置,默认为/usr/local/

                  –sysconfdir=/PATH:配置文件安装位置

                  System types:支持交叉编译

            Optional Features: 可选特性

                  –disable-FEATURE

                  –enable-FEATURE[=ARG]

            Optional Packages: 可选包,

                   –with-PACKAGE[=ARG],依赖包

                   –without-PACKAGE,禁用依赖关系

        第二步:make

        第三步:make install

 

      2.安装后的配置:

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

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

             export PATH=/PATH/TO/BIN:$PATH

      (2) 导入库文件路径

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

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

            让系统重新生成缓存:

            ldconfig[-v]

      (3) 导入头文件

           基于链接的方式实现:

           ln -sv

      (4) 导入帮助手册

           编辑/etc/man.config|man_db.conf文件

           添加一个MANPATH


练习:

   编译安装apache 2.2源码包,并启动此服务

     步骤如下:

    1.1)首先获取源代码,下载到当前主机,默认下载到家目录中。

wKioL1e-01uguGisAADZvN0Idxo258.png

   2)因为下载的是以tar.bz2结尾的归档压缩包,所以,要解压缩,并展开归档,解压缩后生成的目录,也默认在当前文件中;

wKiom1e-01vT4_1yAAAihX78TXs237.png

   3)进到目录当中,可以看到有configure脚本,是可执行的,但不要着急执行,先看一下INSTALL,README和configure脚本帮助文档;

wKioL1e-01zxiHaQAABa9wjTUJI886.png

wKioL1e-01zTAWmwAAB2i1nLEow159.png

wKiom1e-013RWSemAABBJTDAi1k673.png

wKiom1e-012yL9jlAACAGppRnyk947.png

   2.安装

    1)第一步,执行configure脚本,并指定安装路径等;

wKioL1e-013x0PXbAAARNPWJrSc532.png

wKioL1e-017xF5UFAAB-qJYCwKI022.png

  2)第二步,执行make

wKiom1e-016wF0ehAABuRXGrQgk512.png

  3)第三步,执行make install 生成目录,并查看,指定的安装路径下是否有目录生成;

wKiom1e-01-zfbY0AABiDdYEtCQ401.png

wKioL1e-01_TKPOBAABHLnUyVYk554.png

   3.安装后的配置

wKioL1e-01-gfaW2AAA_m_fszxA775.png   

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

wKioL1e-5jyRUH4rAAAZPoHs1_M014.png

wKioL1e-5jzA5QM0AAAqBeKhIws156.png

     2)导入帮助手册。编辑/etc/man.config|man_db.conf文件,添加一个MANPATH;

wKiom1e-01-gvsIGAAAcNeGEstk647.png

wKioL1e-02CjvIn6AABuiqVsO8U327.png

  3)导入库文件路径,编辑/etc/ld.so.conf.d/NAME.conf,添加新的库文件所在目录至此文件中,让系统重新生成缓存

wKioL1e-5WaDf7IGAAARwCeQ7iA275.png

wKioL1e-5TqQ9ZhdAABoIzNr2kE258.png

  4)导入头文件,基于链接的方式实现:

wKiom1e-5anywB0dAABTphnlSNg814.png

wKioL1e-5amAWi4VAABFn2addoo236.png

  4.测试可否连接访问

wKioL1e-5dfzPcLnAABufOcy5KM470.png

wKiom1e-5diwHOq2AABRnImy-4o414.png







     

     

              


原创文章,作者:zhumengxiaotao,如若转载,请注明出处:http://www.178linux.com/40266

(2)
上一篇 2016-09-01 08:50
下一篇 2016-09-01 08:50

相关推荐

  • 测试

    3、查询file.txt以abc结尾的行grep "abc$" file.txt4、删除file.txt文件中的空行grep -v '^$' file.txt > file.txtsed '/^$/d' file.txt > file.txt(覆盖重定向文件变为空该文件为空,但是追加时正常成功。…

    Linux干货 2016-06-12
  • Linux程序包管理相关

    前言 首先说说一个软件的诞生过程: 程序员用编程语言写文本格式的源代码,但是计算机只能读懂二进制文件,那么就需要将源代码转换成二进制格式,这个过程称为编译。编译用的工具称为编译器,编译器有很多种,在Linux上常用gcc这个编译器。利用编译器,得到二进制格式的文件(二进制程序(Windows上.exe.msi,Linux.elf)、库文件、配置文件、帮助文件…

    Linux干货 2018-01-04
  • 集中练习1-10个Linux运维脚本

    用户管理、文本处理、文件管理相关

    2017-09-20
  • 关于大型网站技术演进的思考(三):存储的瓶颈(3)

    原文出处: 夏天的森林    存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。 这里我们先回顾下数据库的垂直拆分和水平拆分的定义: 垂直拆分:把一个数据库中不同业务单元的数据分到不同的数据库里。 水平拆分:是根据一定的规则把同一业务…

    Linux干货 2015-03-03
  • 编译内核

     编译内核: 步骤: (1) 准备好开发环境 (2) 获取目标主机上硬件设备的相关信息 (3) 获取目标主机系统功能的相关信息         例如:需要启用相应的文件系统 (4) 获取内核源代码包 www.kernel.org  

    Linux干货 2018-01-01
  • AIX下NFS共享导致命令行输入卡住

     1、事件描述:之前公司测试某厂商存储一体机的NFS共享功能,将该NFS目录共享给AIX主机使用(用于备份对应对应的数据库,因为数据库版本太老,Oracle8i的,不支持存储厂商的备份代理),测试完成后,厂商将设备直接关机(这时候在AIX上挂载的NFS目录没有进行卸载)。然后,当我们登陆到AIX服务器上的时候,发现每次敲入“df -g”或者“ls”…

    Linux干货 2016-07-07