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

RPM应用

时间:2015-09-05 19:28:41      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:rpm

首先我们需要了解什么是程序包管理:

程序包管理:

    程序包管理:
        功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作;

        1、程序的组成组成清单 (每个包独有)
            文件清单
            安装或卸载时运行的脚本
        2、数据库(公共)
            程序包名称及版本
            依赖关系;
            功能说明;
            安装生成的各文件的文件路径及校验码信息;

程序包管理方式分为两种(这里我们只讲解RPM):
        使用包管理器:rpm
        使用前端工具:yum, dnf


RPM是一款好用的软件包安装和管理程序。使用RPM,用户可以自行安装和管理 Linux上的应用程序和系统工具。RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程 序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保 留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库, 用户可以进行软件包的查询。


rpm包有主包和支包,主包提供软件的主要功能,而支包提供扩展功能

        testapp: 拆包
            testapp-VERSION-ARCH.rpm: 主包
            testapp-devel-VERSION-ARCH.rpm:支包
            testapp-testing-VERSION-ARHC.rpm

下图中第一个yum包就是主包,下面提供了其外围的子包以及子包的子包

技术分享


打印应用程序依赖的各个共享库使用ldd命令

技术分享

管理及查看本机装载的库文件:
        ldconfig
            /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系;

            配置文件为:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
            缓存文件:/etc/ld.so.cache

技术分享


1.安装:
        rpm {-i|--install} [install-options] PACKAGE_FILE ...
            -v: verbose显示详细安装过程
            -vv:  显示更为详细的安装过程
            -h: 以#显示程序包管理执行进度;每个#表示2%的进度
                [install-options]
                    --test: 测试安装,但不真正执行安装过程;dry run模式;
                    --nodeps:忽略依赖关系;
                    --replacepkgs: 重新安装;

                    --nosignature: 不检查来源合法性;
                    --nodigest:不检查包完整性;

                    --noscipts:不执行程序包脚本片断;
                        %pre: 安装前脚本; --nopre
                        %post: 安装后脚本; --nopost
                        %preun: 卸载前脚本; --nopreun
                        %postun: 卸载后脚本;  --nopostun

使用rpm安装软件:

技术分享

重装软件包:

技术分享

不检测来源合法性和包完整性安装:发现没有了像上面安装时出现的警告信息

技术分享

2.升级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
        upgrage:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
        freeshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
            rpm -Uvh PACKAGE_FILE ...
            rpm -Fvh PACKAGE_FILE ...

            --oldpackage:降级;
            --force: 强行升级;


3.查询:      

rpm {-q|--query} [select-options] [query-options]
        [select-options]
            -a: 所有包
            -f: 查看指定的文件由哪个程序包安装生成
            -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
        [query-options]
            --changelog:查询rpm包的changlog
            -c: 查询程序的配置文件
            -d: 查询程序的文档
            -i: information
            -l: 查看指定的程序包安装后生成的所有文件;
            --scripts:程序包自带的脚本片断
            -R: 查询指定的程序包所依赖的CAPABILITY;
            --provides: 列出指定程序包所提供的CAPABILITY;

查询所有已经安装的以z开头的程序包

技术分享

查看指定的文件由哪个程序包安装生成

技术分享

查询rpm包的changlog

技术分享

查询指定的CAPABILITY被哪个包所依赖;

技术分享

查询包的详细信息

技术分享

查询包的配置文件

技术分享

查询包的帮助文档

技术分享

查询包的脚本片段

技术分享

查询程序包安装时生成的文件

技术分享

查询指定的程序包所依赖的CAPABILITY

技术分享


查询未安装的程序包需要使用-p选项组合以上说到的选项

技术分享


4.卸载:
        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
           [--notriggers] [--test] PACKAGE_NAME ...

技术分享


5.校验:检测安装后是否修改过程序的某文件 使用-V选项

技术分享

        对以上输出信息解释:

           S file Size differs
           M Mode differs (includes permissions and file type)
           5 digest (formerly MD5 sum) differs
           D Device major/minor number mismatch
           L readLink(2) path mismatch
           U User ownership differs
           G Group ownership differs
           T mTime differs
           P caPabilities differ

6.包的合法性,来源性确认

        导入所需要公钥:
            rpm --import /PATH/FROM/GPG-PUBKEY-FILE
            CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7

技术分享

7. 数据库重建:rpm数据库文件发生损坏时
        rpm {--initdb|--rebuilddb}
            initdb: 初始化
                如果事先不存在数据库,则新建之;否则,不执行任何操作;
            rebuilddb:重建
                无论当前存在与否,直接重新创建数据库;


本文出自 “明天过后” 博客,请务必保留此出处http://leeyan.blog.51cto.com/8379003/1691554

RPM应用

标签:rpm

原文地址:http://leeyan.blog.51cto.com/8379003/1691554

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