系统管理之程序包管理(二)yum详解


系统管理之程序包管理(二)yum详解:

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


一 概论:


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

YUM :yellow dog, Yellowdog,Update Modifier  

    rpm的前端工具,用于解决软件包相关依赖性,可以在多个库之间定位软件包

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

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

     文件服务器:

        ftp://    URL:ftp://10.1.0.1/pub/

        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的官方帮助文档):

          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
        [root@wen-7 http]# yum makecache             ##建立缓存
        已加载插件:fastestmirror, langpacks
        yum                                                                                            | 3.6 kB  00:00:00     
        yum/other_db                                                                                   | 2.3 MB  00:00:00     
        Loading mirror speeds from cached hostfile
        元数据缓存已建立
        [root@wen-7 http]# yum install zsh -y               #安装软件
        已加载插件:fastestmirror, langpacks
        Loading mirror speeds from cached hostfile

yum的命令行选项

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

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

           -q:静默模式

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

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

          –noplugins:禁用所有插件

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

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

        

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

            $rach:平台

            $basearch:基础平台

            $YUM0-$YUM9

           例: 指定仓库文件 baseurl参数

            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)导出头文件

            基于连接的方式实现  (/usr/bin  /usr/sbin)

            ln -sv

        (4)导出帮助手册

            编辑/etc/man.config文件中

            添加一个MANPATH

    



实战:(实战演练均在centos7.2操作系统上操作)

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

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

           [root@wen-7 yum]# cp tree-1.6.0-10.el7.x86_64.rpm /tmp

       (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仓库以完成


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

    1.复制安装包到目录,并解压到指定目录

    [root@wen-7 ~]# cp httpd-2.2.9.tar.gz /tmp           
    [root@wen-7 ~]# tar xvf httpd-2.2.9.tar.gz

    2.进去解压目录

    [root@wen-7 ~]# cd /tmp/
    [root@wen-7 tmp]# ls
    httpd-2.2.9  httpd-2.2.9.tar.gz
    [root@wen-7 tmp]# cd httpd-2.2.9/

     3.执行configure脚本,检查当前编译环境,并指定安装选项

    [root@wen-7 httpd-2.2.9]# ./configure -prefix=/usr/local/http
    [root@wen-7 httpd-2.2.9]# echo $?               ##查看命令状态返回值,确认命令执行成功
    0

    4.执行安装命令,并执行生成程序文件命令

    [root@wen-7 httpd-2.2.9]# make && make install
    [root@wen-7 httpd-2.2.9]# echo $?               ##查看命令状态返回值,确认命令执行成功
                          0

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

    [root@wen-7 httpd-2.2.9]# cat  /etc/profile.d/http 
    PATH=$PATH:/usr/local/http/bin

      6.导出程序头文件

    [root@wen-7 httpd-2.2.9]# ln -sv /usr/local/http/bin/apachectl /usr/sbin/apache         软连接到/usr/sbin
    "/usr/sbin/apache" -> "/usr/local/http/bin/apachectl"

     7.导出库文件

    [root@wen-7 httpd-2.2.9]# cat  /etc/ld.so.conf           编写文件
    include ld.so.conf.d/*
    include /usr/local/http/bin/*
    [root@wen-7 httpd-2.2.9]# ldconfig -v              ##系统重新生成缓存

    8.导出man帮助文档

    [root@wen-7 httpd-2.2.9]# vim  /etc/man_db.conf vim             ##编写文件,写下面代码            
    [root@wen-7 httpd-2.2.9]# ldconfig -v

    9.启动或关闭apache

    [root@wen-7 ~]# apache stop                        
    httpd: apr_sockaddr_info_get() failed for wen-7.2
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    [root@wen-7 ~]# apache start
    httpd: apr_sockaddr_info_get() failed for wen-7.2
    httpd: Could not reliably determine the server's fully qual

    10检查apache端口

    [root@wen-7 ~]# netstat -tan| grep 80
    tcp6       0      0 :::80      :::*      LISTEN

    11.浏览器访问(配置成功)

       注意:如果访问不成功,请查看防火墙是否开启

       blob.png

       

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

(0)
上一篇 2016-08-24 10:12
下一篇 2016-08-24 10:12

相关推荐

  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]#cp /etc/rc.d/rc.sysinit /tmp/ [root@localhost&nbs…

    Linux干货 2016-07-29
  • mount挂载,dd 工具,配置配额系统,RAID阵列,逻辑卷管理器LVM

    mount mount挂载 vim /etc/fstab 将常用的挂载的设备写入系统表中 文件挂载配置文件             /etc/fstab /etc/fstab每行定义一个要挂载的文件系统;   &nbsp…

    Linux干货 2016-09-01
  • Linux基础知识

    命令的语法通用格式: # COMMAND OPTIONS ARGUMENTS COMMAND:  发起一命令:请求内核将某个二进制程序运行为一个进程; 程序 –> 进程 静态 –> 动态(有生命周期) 命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件; 多数系统程序文件都存放在:/bin,…

    Linux干货 2016-10-29
  • SHELL脚本编程之变量的种类

    变量 在进行脚本编程的时候,经常会使用到不同类型的变量,根据变量的生效范围,可大致分为以下的几类: 本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程,包括当前shell进程的子shell进程都是无效的,它的作用域就是当前shell进程 环境变量:生效范围是当前shell进程及其子进程 局部变量:生效范围是当前shell进程中某…

    Linux干货 2016-08-12
  • 简单易懂的CentOS启动流程

    在使用Linux操作系统时,我们只需要按下电源键,等待一会儿,登录终端就呈现在我们眼前,在这段时间内,操作系统究竟做了哪些事情? 先上一张流程梗概图,你会对启动流程有个大致的了解 启动流程详解 POST加电自检   主板在接通电源后,系统首先由POST程序来对CPU、主板、内存、硬盘子系统、显示子系统串并行接口、键盘、CD-ROm光驱等硬件进行检测 读取MB…

    Linux干货 2016-09-11
  • sed简介

    sed是什么 sed是linux文本处理工具三剑客(grep,sed,awk)之一,用来处理文本的流编辑工具。主要用来编辑一个或多个文件,简化重复操作文件。 sed的工作原理和相关概念 sed是行处理的模式,针对文件内容从上往下一行一行地读取。每行的操作步骤如下示意图: sed的语法格式 sed [OPTION]… 'script' …

    Linux干货 2016-10-09

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-26 12:04

    文章整体架构清晰,层次明了,内容上较为完整,如果嫩南瓜对一些工具的背景知识和实验过程中遇到的错误进行总结会让文章更专业,更具有可读性哦。