程序包管理

什么是程序包管理器?

    顾名思义,就是将编译好的应用程序的各组成文件打包成一个或多个程序包文件,从而更方便地实现程序包的安装、升级、卸载还有查询等管理操作。

那么一个程序包又由哪些部分组成呢?

程序包的组成清单:

  文件清单(每个程序包都单独实现):  

    安装或卸载时运行的脚本,有如下四类:

    preinstall : 安装过程开始之前运行的脚本,%pre定义 —nopre

    postinstall: 安装过程完成之后运行的脚本,%post定义    —nopost

    preuninstall : 卸载过程真正开始执行之前运行的脚本,%preun定义 —nopreun

    postuninstall: 卸载过程完成之后运行的脚本,%postun定义    —nopostun

  数据库部分:

    存储程序包的名称和版本

    包与包的依赖关系

    各包的功能说明

    程序安装生成的各文件的文件路径及检验码信息

正确获取安装程序包的途径

 1、系统发行版的光盘或官方的文件服务器(或镜像站点)

   例如:
     http://mirros.aliyun.com
     http://mirros.sohu.com
     http://mirros.163.com

 2、项目的官方站点
 3、第三方组织

   例如:
     a、EPEL
     b、搜索引擎:
         http://pkgs.org
         http://rpmfind.net
         http://rpm.pbone.net

安装前注意事项:

 1、检测程序包来源合的法性
 2、检测程序包的完整性

CentOS系统上rpm命令管理程序包

    RPM是RPM Package Manager(RPM软件包管理器)的缩写,用于软件包后缀为.rpm程序的安装、升级、卸载、查询和校验及数据库维护。

安装:

    命令格式:
        rpm {-i|--install} [install-options] PACKAGE_FILE ...
    常用选项:
        GENERAL OPTIONS:
            -v:verbose,详细信息
            -vv:更详细的输出

        [install-options]:
            -h:hash marks输出进度条;每个#表示2%的进度
            --test:测试安装,检查并报告依赖关系及冲突消息等
            --nodeps:忽略依赖关系,不建议
            --replacepkgs:重新安装   
            --nosignature:不检查包签名信息,不检查来源合法性
            --nodigest:不检查包完整性信息
    常用组合:
        rpm -ivh PACKAGE_FILE ...

升级:

    命令格式:
        rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    常用选项:
        OPTIONS:
            -U:升级或安装
            -F:升级
        [install-options]:   
            --oldpackage:降级
            --force:强制升级
    常用组合:
        rpm -Uvh PACKAGE_FILE ...
        rpm -Fvh PACKAGE_FILE ...

        注:如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpm.new)后提供

卸载:

    命令格式:
        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
    常用选项:
        -e : 删除指定程序
        --allmatches:卸载所有匹配指定名称的程序包的各版本
        --nodeps:忽略依赖关系
        --test:测试卸载,dry run模式

查询:

    命令格式:
        rpm {-q|--query} [select-options] [query-options]
    常用选项:       
        [select-options]
            PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本
            -a,--all:查询所有已安装过的包
            -f FILE:查询指定的文件有哪个程序包安装生成
            -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个程序包依赖

        [query-options]
            --changelog:查询rpm包的changelog
            -l, --list:程序安装省的所有文件列表
            -i, --info:程序包相关的信息,版本号、大小、所属的包组,等
            -c, --configfiles:查询指定的程序提供的配置文件
            -d, --docfiles:查询指定的程序包提供的文档
            --provides:列出指定的程序包提供的所有的CAPABILITY
            -R, --requires:查询指定的程序包的依赖关系
            --scripts:查看程序包自带的脚本片段
    常用组合:
        -qi -qc -ql -qd 
        -qpi -qpc -qpl -qpd

校验:

    命令格式:
        rpm {-V|--verify} [select-options] [verify-options]
    常用选项:
        -V PACKAGE_FILE: 自动检查其数据的完整性及合法性
        -K PACKAGE_FILE: 手动检查其数据的完整性及合法性
        --import KEY : 手动导入GPG KEY
    说明:
        S file Size differs,文件大小改变了
        M Mode differs (includes permissions and file type),文件权限改变了
           5 digest (formerly MD5 sum) differs,MD5校验码变了
           D Device major/minor number mismatch,主次设备不匹配
           L readLink(2) path mismatch,read link变化了
           U User ownership differs,属主改变了
           G Group ownership differs,属组改变了
           T mTime differs,修改时间变了
           P caPabilities differ,CAPABILITY变了

数据库重建:

    rpm管理器数据库路径:
        /var/lib/rpm/
    重建方法:
        rpm {--initdb|--rebuilddb}
    选项说明:
        --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作
        --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建
        --dbpath:指明库的路径,一般用于重建

yum前端程序包管理工具

     Linux平台中软件的安装都由源码文件编译成二进制文件后再运行,存在很多的制作好的rpm程序包,制作方在制作的过程中把通常不常用的功能去除进行编译打包,或者再将不同功能的包进行单独编译打包,提供多个功能程序包,这个情况下安装软件时,一个功能包或者程序会依赖于其他程序的库文件,甚至有的时候会出现死循环依赖,导致软件的安装不正常工作或者根本安装不成功。此yum工具就是为了有效解决程序之间的依赖关系,其将诸多程序的包信息和头文件提取出来,放到一个集中的地方,记录其依赖关系。在下次安装的时候,均于存储的库文件查找相应的对应关系,再安装所依赖的软件程序。

yum客户端配置文件

    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    仓库的定义:
        [repositoryID]:ID名称,即仓库名称,不可与其他ID重名
        [name=Some name for this repository]:对ID名称的说明
        baseurl=url:/path/to/repositry/
                url2
                url3
                    注:如果同一个源有多个镜像,可以在此写多个,但每个URL需换行
        enabled={1|0}:是否启用此yum仓库
        gpgcheck={1|0}:检查来源法性和完整性
        gpgkey=url:gpg密钥文件
        enablegroups={1|0}:是否在此仓库中上使用组来指管理程序包
        failovermethod={roundrobin|priority}:对多个baseurl做优先级的,roundrobin为轮循,priority为优先级,默认为轮循,意为随机
        cots=
            默认为1000

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

        $releasever:当前os的发行版的主版本号
        $arch:平台
        $basearch:基础平台
        $YUM0-$YUM9:用户自定义的变量

yum命令:

    命令格式:
        yum [options] [command] [package ...]
    常用选项:
        —nogpgcheck : 禁止进行gpg check
        -y : 自动回答为Yes
        -q  : 静默模式
        —enablerepo : 临时启用此处指定的repo
        —disablereop :临时禁用此处指定的reop
        —noplugins:禁用所有插件

    显示仓库列表:
        yum repolist [all|enabled|disabled]

                all : 查看全部的仓库
                enabled : 查看可用的仓库
                disabled : 查看不可用的仓库


    显示程序包:
        yum list [all | glob_exp1] [glob_exp2] [...]

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

                all : 显示所有仓库中的包
                available : 显示可用的软件包
                updates : 显示可用于升级的包
                installed : 显示已经安装的包

    安装程序包:
        yum install package1 [package2] [...]

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

    升级程序包:
        yum update [package1] [package2] [...]

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

    检查可用升级:
        yum check-update

    卸载程序包:
        yum remove | erase package1 [package2] [...]

    查看程序包information(简要信息):
        yum info [...]

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

    清理本地缓存:
        yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

            packages:程序包
            metadata:元数据
            expire-cache:过期缓存
            rpmdb
            plugins:插件
            all:以上全部                                    

    构建缓存:
        um makecache [fast]

    搜索:
        yum search string1 [string2] [...]
            以指定的关键字搜索程序包名及summary信息

    查看指定包所依赖的capabilities:
        yum deplist package1 [package2] [...]

    查看yum事务历史:
        yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    安装及升级本地程序包:
        yum localinstall rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use install)
        yum localupdate rpmfile1 [rpmfile2] [...]
               (maintained for legacy reasons only - use update)

    包组管理的相关命令:

        yum groupinstall group1 [group2] [...]

        yum groupupdata group1 [group2] [...]

        yum grouplist [hidden] [groupwildcard] [...]

        yum groupremove group1 [group2] [...]

        yum groupinfo group1 [...]

配置发行版光盘作为yum repository方法:

    第一步:
        挂载光盘至某目录,例如/media/cdrom
                # mount -r -t ios9600 /dev/cdrom /meidia/cdrom
    第二步:
        创建配置文件: /etc/yum.repos.d/*.repo
            [CentOS 7]  
            name=  
            baseurl=  
            gpgcheck=  
            enabled=  
    第三步:
        显示仓库列表: 
             yum repolist all

源码编译安装:

     CentOS作为服务器,要求软件的稳定性比较高,因此发布的软件一般都比较老,然而,有的时候我们需要某些软件新的功能,这种时候如果没有可用的安装包,就需要使用软件提供的源代码,在CentOS下进行编译安装。编译安装顾名思义就是需要先进行对软件的源代码进行编译,然后安装编译之后的软件文件。在CentOS/Linux下编译软件的源代码,一般会涉及编译器,关联库等。

开源程序源代码的获取:

    1、官方自建站点:
        apache.org(ASF)
        mariadb.org
        …

    2、代码托管:
        SourceForge
        Github.com
        cade.googlr.com
        …

编译安装的前提:

     在CentOS中,如果要进行对软件的编译安装,我们一般需要提供开发工具及开发环境。可以根据自己的实际情况对开发环境进行配置,这种情况下,通过“包组”提供开发组件对我们来说已经就足够了。例如:CentOS 6编译c源代码可安装"Development Tools"包组。

编译安装步骤:

    第一步:configure脚本
        选项:指定安装位置、指定启用的特性

        --help:获取其支持使用的选项
            选项分类:
                安装路径设定:
                    --prefix=/PATH/TO/SOMEWHERE:指定默认安装位置,默认为/usr/local
                    --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置
                    system typs:

                    Optional Features:可选特性
                    --disable-FEATURE
                    --enable-FEATURE[=ARG]

                    Optional Packages:可选包
                    --with-PACKAGE[=ARG]
                    --without-PACKAGE

    第二步: make

    第三步:make install

    安装后的配置:
        (1)导出二进制程序目录至PATH环境变量中
            编辑文件/ect/profile.d/NAME.sh
                export PATH=/PATH/TO/BIN:$PATH
        (2)导出库文件路径
                编辑/etc/ld.so.conf.d/NAME.conf
                    添加新的库文件所在目录至此文件中
        (3)导出头文件
            基于链接的方式实现
                    ln -sv
        (4)导出帮助手册
            编辑/etc/man.config文件
                添加一个MANPATH

 

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

(0)
上一篇 2016-12-16 09:50
下一篇 2016-12-16 12:29

相关推荐

  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@wlm ~]# useradd tuser1 [root@wlm ~]# cp -r etc/skel/ /home/tuser1/…

    Linux干货 2016-11-21
  • ☞keepalived

    keepalived 高可用集群 VRRP协议 keepalived 安装keepalived 主要文件 配置文件说明 【一】测试keepalived基本功能 单主模型示例 双主模型示例 通知脚本示例 【二】单主模型高可用DR类型LVS集群 配置keepalived主机 Real Server配置 测试结果 【三】双主模型高可用DR类型LVS集群 配置kee…

    Linux干货 2016-11-01
  • find命令详解

    find命令是用来在给定的目录下查找符合给定条件的文件   find [OPTIONS] [查找起始路径] [查找条件] [处理动作]   一、OPTIONS参数     -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了   二、查找路径     就是个目录路径,相对和绝对都可以。   三、查找条件     (一)、根据名称查找       -na…

    Linux干货 2016-09-19
  • 网络管理2

    一、知识整理 1、网卡配置文件格式:vim /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet接口类型,常见的类型有Ethernet,Bridge BOOTPROTO=static设置静态还是DHCP获取IP,static和none都为静态,不写此行必须指定。查看配置DHCP之后的信息: cat /…

    Linux干货 2016-09-07
  • 马哥linux 0801作业

    将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 2.将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 3.一个linux用户给root发邮件,要求邮件标题为"help",邮件正文如下: Hello,I am 用户名,the system version is here,ple…

    Linux干货 2016-08-04
  • 人志建,则无敌—vim练习题

    马哥网络班21期-第六周博客 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@caicai ~]# cp -a /etc/rc.d/rc.sysinit /tmp [root@caicai&nbsp…

    Linux干货 2016-08-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:30

    赞~yum相关的知识总结的比较全面了,主要是在工作中要灵活运用~继续加油~