ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RedHat系RPM包管理工具

2020-01-01 22:53:02  阅读:330  来源: 互联网

标签:RedHat RPM 程序包 管理工具 node1 root rpm el7 bash


RPM 包管理器:
安装:
rpm -ivh PACKAGE_FILE
安装选项:
-i 安装新的包
-h 显示进度条
--test 测试安装
--nodeps 忽略依赖关系
--replacepkgs 重新安装

更新:
    rpm -Uvh PACKAGE_FILE
    rpm -Fvh PACKAGE_FILE
        -U 升级或安装(若老版本没有安装则自动安装)
        -F 升级(若老版本没有安装则无法升级)
    --oldpackage 降级为老版本。
    --force 强制升级。
不要对内核做升级操作!
卸载:
    --allmatches 卸载所有匹配的指定名称程序包的各版本
    --nodeps 忽略依赖关系
        [root@node1 ~]# rpm -e --test --nodeps bash 
    --test 测试卸载
        [root@node1 ~]# rpm -e --test zsh
查询: 
    -q 
    -a 查询所有已经安装过的包;
        [root@node1 ~]# rpm -qa 
        libosinfo-1.1.0-2.el7.x86_64
        libcacard-2.5.2-2.el7.x86_64
        libtimezonemap-0.4.4-1.el7.x86_64
        ...
    -f FILE 查询指定文件由哪个包生成;
        [root@node1 ~]# rpm -qf /etc/bashrc 
        setup-2.8.71-10.el7.noarch
    --changelog 查询rpm包的修改日志;
        [root@node1 ~]# rpm -q --changelog setup |head 
        * 四 6月 21 2018 Ondrej Vasik <ovasik@redhat.com> - 2.8.71-10
        ...
    -l --list 查询程序包安装生成的文件列表;
        [root@node1 ~]# rpm -ql bash 
        /etc/skel/.bash_logout
        /etc/skel/.bash_profile
        /etc/skel/.bashrc
        /usr/bin/alias
        ...
    -i --info 查询程序包的信息;
        [root@node1 ~]# rpm -qi bash 
    -c 列出指定的程序包提供的配置文件;
        [root@node1 ~]# rpm -qc bash 
        /etc/skel/.bash_logout
        /etc/skel/.bash_profile
        /etc/skel/.bashrc
    -d 查询指定的程序包提供的帮助文档;
        [root@node1 ~]# rpm -qd bash 
        /usr/share/doc/bash-4.2.46/COPYING
        /usr/share/info/bash.info.gz
        /usr/share/man/man1/..1.gz
        /usr/share/man/man1/:.1.gz
        ...
    --provides 列出指定程序包内所有的CAPABLITY(功能);
        [root@node1 ~]# rpm -q --provides bash 
        /bin/bash
        /bin/sh
        bash = 4.2.46-31.el7
        bash(x86-64) = 4.2.46-31.el7
        config(bash) = 4.2.46-31.el7
    --whatprovides CAPABLITY 查询指定的(CAPABLITY)功能由哪个包所提供;
        [root@node1 ~]# rpm -q --whatprovides bash  
        bash-4.2.46-31.el7.x86_64
    --whatrequires CAPABLITY 查询指定的(CAPABLITY)功能被哪个包所依赖;
        [root@node1 ~]# rpm -q --whatrequires 'config(bash)'
        bash-4.2.46-31.el7.x86_64
    -p PACKAGE_FILE 如果程序包未安装;执行查询操作;
        rpm -qp* 包名
    -R 查询指定程序包的依赖关系;
        [root@node1 ~]# rpm -qR bash
        /bin/sh
        config(bash) = 4.2.46-31.el7
        libc.so.6()(64bit)
        libc.so.6(GLIBC_2.11)(64bit)
        libc.so.6(GLIBC_2.14)(64bit)
        ...
    --scripts 查看程序包自带的脚本;
        [root@node1 ~]# rpm -q --scripts bash 
        postinstall scriptlet (using <lua>):
        nl        = '\n'
        sh        = '/bin/sh'..nl
        bash      = '/bin/bash'..nl
        f = io.open('/etc/shells', 'a+')
        if f then
        ...
        postuninstall scriptlet (using <lua>):
        -- Run it only if we are uninstalling
        if arg[2] == "0"
        then
          t={}
        ...  
rpm 脚本控制:
    --noscripts
        --nopre 不执行安装前脚本
        --nopost 不执行安装后脚本
        --nopreun 不执行卸载前脚本
        --nopostun 不执行卸载后脚本
效验:
    [root@node1 ~]# rpm -V setup 
        S.5....T.  c /etc/bashrc
            5      MD5校验和
            S      文件大小
            L      符号连接
            T      修改时间
            D      设备
            U      用户
            G      组
            M      模式(包括许可和文件类型)
包来源合法性和完整性检查:
    来源合法性验证:
    完整性检查:
        数字签名:
            导入秘钥:
                rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
                # 当前系统为CentOS7.6
    校验
        自动验证: 安装该组织签名的程序时会自动验证
        手动验证: rpm -K PACKAGE_FILE # 需要先导入公钥     
        
数据库重建:
    rpm数据库路径: /var/lib/rpm/
        查询操作: 通过该数据库进行;
    重建操作:
        rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
            --initdb 初始化数据库,当前无任何数据库可初始化创建,当前有数据库时则无操作;
            --rebuilddb 重新构建,通过读取当前系统上所有已安装的程序包进行重新构建;
        初始化新的数据库
            rpm --initdb --dbpath=/PATH/TO/RPM/
        重建数据库
            rpm --rebuilddb

标签:RedHat,RPM,程序包,管理工具,node1,root,rpm,el7,bash
来源: https://www.cnblogs.com/liy36/p/12130825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有