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

rpm包管理

时间:2017-12-04 20:28:33      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:linux   rpm   

用rpm命令管理程序包:  安装、卸载、升级、查询、校验、数据库维护
包安装
    rpm {-i|--install} [install-options] PACKAGE_FILE…   
    [install-options]  
        --test: 测试安装,但不真正执行安装,即dry run模式  
            例 rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --test
        --nodeps:忽略依赖关系      
        --replacepkgs | replacefiles  
        --nosignature: 不检查来源合法性  
        --nodigest:不检查包完整性  
        --noscripts:不执行程序包脚本   
        %pre: 安装前脚本; --nopre   
        %post: 安装后脚本; --nopost   
        %preun: 卸载前脚本; --nopreun   
        %postun: 卸载后脚本;  --nopostun
    -v: verbose 详细过程  
    -vv: 更详细   
    -h: 以#显示程序包管理执行进度(加个进度条)
        例:    
        rpm -ivh PACKAGE_FILE ...
        [root@centos7 ~]#cd /misc/cd/Packages/
        [root@centos7 Packages]#cp tree-1.6.0-10.el7.x86_64.rpm /app/
        [root@centos7 Packages]#cd /app
        [root@centos7 app]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm

包升级
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
    rpm {-F|--freshen} [install-options] PACKAGE_FILE...  
    upgrade:安装有旧版程序包,则“升级”       
             如果不存在旧版程序包,则“安装”  
    freshen:安装有旧版程序包,则“升级”       
             如果不存在旧版程序包,则不执行升级操作  
    rpm -Uvh PACKAGE_FILE ...  
    rpm -Fvh PACKAGE_FILE ...      
    --oldpackage:降级  
    --force: 强制安装
        例 [root@centos7 app]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 会提示已安装
           [root@centos7 app]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --force 强制再安装一遍
 
    升级注意项  
        (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此 ,对直接安装新版本内核
        (2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

包查询
    rpm {-q|--query} [select-options] [query-options]
    [select-options]  
        -a: 所有包  
        -f: 查看指定的文件由哪个程序包安装生成  
        -p rpmfile:针对尚未安装的程序包文件做查询操作
            例 rpm -qpl /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm   查看包内的文件
               rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm | cpio -tv 方法二
        --whatprovides CAPABILITY:查询指定的CAPABILITY 由哪个包所提供  CAPABILITY理解为功能或关键字
            例 rpm -q --whatprovides tree   查询tree功能由哪个包提供(与--whatrequires方向相反)
        --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
            例 rpm -q --whatrequires bash   查询需要bash能力的软件包,查询到的包都是依赖bash的

    rpm2cpio 包文件|cpio –itv  预览包内文件
    rpm2cpio 包文件|cpio –id  “*.conf” 释放包内文件
    
    [query-options]  
        --changelog:查询rpm包的changelog  查询更改日志
            例 rpm -q --changelog bash 查询bash的更改日志
        -c: 查询程序的配置文件  
            例 rpm -qc bash 只相询bash的配置文件
        -d: 查询程序的文档
            例 rpm -qd bash 只看文档
        -i: information  
        -l: 查看指定的程序包安装后生成的所有文件  
        --scripts:程序包自带的脚本
            例 rpm -q --scripts tree  tree包太简单,不带脚本
               rpm -q --scripts bash  查询bash包的脚本
        --provides: 列出指定程序包所提供的CAPABILITY  (列出某个包提供的能力列表)
            例 rpm -q --provides bash    包bash提供的能力列表
        -R: 查询指定的程序包所依赖的CAPABILITY
            例 rpm -qR tree 相询tree包依赖哪些程序哪些包,它依赖相询到的内容

    常用查询用法  
        -qi PACKAGE   查看包的一些说明性的信息
            rpm -qi bash  查看bash的版本等信息
        -qf FILE    查询文件来自哪个包
            例 rpm -qf /usr/bin/tree   查询/usr/bin/tree来自哪个包  与-ql相反
        -qc PACKAGE
        -ql PACKAGE   查询包含有的文件列表
            例 rpm -ql tree    查询包tree含有的文件列表   与-qf相反
        -qd PACKAGE
        -qpi PACKAGE_FILE
        -qpl PACKAGE_FILE
        -qa
            例 查询含tre的包
               rpm -qa| grep tre    
               rpm -qa "*tre*"    通配符

包卸载
    rpm {-e|--erase} [--allmatches] [--nodeps] [-noscripts] [--notriggers] [--test] PACKAGE_NAME ...
        例 rpm -e sl  卸载包sl
           [--allmatches]  卸载所有版本,例如有两个内核,全部卸载
           [--nodeps]  忽略依赖性
           [-noscripts] 只卸载,不运行脚本  (preinstall   安装前      preuninstall   卸载前
                                            postinstall   安装后     postunistall  卸载后)
           [--notriggers]  触发器
           [--test]  测试,假装卸载,不执行

包校验
    rpm {-V|--verify} [select-options] [verify-options]
            例 rpm -V centos-release 查看centos-release目前与刚刚安装好时的变化
        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
    包来源合法性验正及完整性验正  
        完整性验正:SHA256  
        来源合法性验正:RSA
    公钥加密  
        对称加密:加密、解密使用同一密钥  
        非对称加密:密钥是成对儿的   
            public key: 公钥,公开所有人   
            secret key: 私钥, 不能公开
    导入所需要公钥  
        rpm  -K|checksig  rpmfile  检查包的完整性和签名  
        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  
        CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7  
        rpm -qa “gpg-pubkey*”

rpm数据库
    数据库重建:  /var/lib/rpm
    rpm {--initdb|--rebuilddb}  
        initdb: 初始化   
            如果事先不存在数据库,则新建之   
            否则,不执行任何操作  
        rebuilddb:重建已安装的包头的数据库索引目录

rpm包管理

标签:linux   rpm   

原文地址:http://blog.51cto.com/13488618/2047308

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