Linux基础——程序包管理(rpm)

Posted super2279

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础——程序包管理(rpm)相关的知识,希望对你有一定的参考价值。

获取程序包的途径
    1.    系统发行版的光盘或官方文件服务器
         http://mirrors.aliyun.com
         http://mirrors.163.com
         http://mirrors.souhu.com
    2.    项目的官方站点
    3.    第三方组织
         EPEL
         搜索引擎
             http://pkgs.org
             http://rpmfind.net
             http://rpm.phone.net

rpm命令管理
    rpm [OPTIONS] PACKAGE_FILE|PACKAGE_NAME
        PACKAGE_FILE:    包全名,例如httpd-2.4.6-88.el7.centos.src.rpm
        PACKAGE_NAME:    包名,例如httpd
    安装:rpm-ivh PACKAGE_FILE    
        -i:install 安装
        -v:输出详细信息
        -h:输出进度条,每个#表示2%的进度
        一般在安装rpm包时,使用以上选项即可
        特殊选项及用法:rpm -ivh [INSTALL-OPTIONS] PACKAGE_FILE
            INSTALL-OPTIONS:
            --test:测试安装,并非正真执行安装,作用为检查依赖关系及冲突消息等
            --nodepts:忽略依赖关系,不建议使用,虽然忽略依赖可以安装成功,但是有可能不能使用
            --replacepkgs:重新安装
            --nosignature:忽略签名信息,及不检查包的来源合法性
            --nodigest:忽略包的完整性,及不检查包的完整性
            --noscripts:忽略脚本
                注意:rpm在创建时,可以有四种类型的脚本文件,分别为
                    安装开始前运行的脚本文件:preinstall
                    安装完成后运行的脚本文件:postinstall
                    卸载开始前运行的脚本文件:preuninstall
                    卸载完成后运行的脚本文件:postuninstall
                    --noscripts:参数即为忽略以上全部四种脚本
                    --nopre:忽略preinstall脚本
                    --nopost:忽略postinstall脚本
                    --nopreun:忽略preuninstall脚本
                    --nopostun:忽略postuninstall脚本

    升级:rpm -Uvh PACKAGE_FILE    升级并安装(如果之前没有安装,则之间进行安装)
              rpm -Fvh PACKAGE_FILE    升级(必须针对之前已经完成安装的rpm包,如果之前没有安装,则不进行安装)
             特殊选项及用法:rpm -Uvh|Fvh [UPGRADE-OPTIONS] PACKAGE_FILE
                 --oldpackage:降级
                 --force:强制升级
             注意:(1)一定不要对内核进行升级,如果想使用新版内核,则直接安装即可(因为Linux支持多种内核版本共存)
                        (2)如果之前修改过配置文件,则升级后,配置文件并不会覆盖,而是任然保留原有已经修改过的文件,新安装的配置文件则会重命名后保存,重命名的格式为FILENAME.rmpnew

    卸载:rpm -e PACKAGE_NAME(注意,此处为PACKAGE_NAME,并非PACKAGE_FILE)
        特殊选项及用法:rpm -e [EARSE_OPTIONS] PACKAGE_NAME
            --allmatches:卸载所有版本
            --nodepts:忽略依赖关系(有些rpm包在卸载时,因为有依赖无法卸载,可以使用该选项直接卸载)
            --test:测试卸载,并非正真卸载,DRY RUN模式(俗称“干跑”)

    查询:rpm -q [SELECT-OPTIONS] [QUERY-OPTIONS]
        [SELECT-OPTIONS]
            PACKAGE_NAME:直接跟一个PACKEGE_NAME,可以查询该rpm包是否安装及其版本信息
            -a:查询所有安装的rpm包
                注意:当要查询一个rmp是否已安装时,一般使用rpm -qa | grep XXX
            -f FILE_NAME:查询该文件由哪个rpm包安装时生成
            -p PACKAGE_FILE:用于实现对未安装的rpm包执行查询操作
            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个rpm包提供
            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个rpm包依赖
        [QUERY-OPTIONS]
            --changelog:查询rpm包的changelog
            -l:安装时生成的所有文件列表
            -i:rpm包的所有详细信息
            -c:查询rpm包提供的配置文件
            -d:查询rpm包提供的文档
            --provides:列出该rpm包所能提供的所有CAPABILITY
            -R:查询该rpm包的依赖关系
            --scripts:查看rpm包自带的脚本文件
            常用方法: rpm -ql PACKAGE_NAME
                          rpm -qf FILE_NAME
                          rpm -qc PACKAGE_NAME
                          rpm -qd PACKAGE_NAME
                          rpm -qpl PACKAGE_FILE
                          rpm -qpi PACKAGE_FILE
                          rpm -qpc PACKAGE_FILE

    校验:rpm -V [SELECT-OPTIONS] [VERIFY-OPTIONS]
        主要作用在于验证包的合法性和完整性
        导入信任的包制作者的密钥,密钥的保存位置为光盘镜像种的RPM-GPG-KEY-XXX
            rpm --import 密钥文件
            导入完成后在执行安装操作的同时自动完成验证
            如果手动验证,则使用rpm -K PACKAGE_FILE

    数据库维护:rpm [DB-OPTIONS]    
        [DB-OPTIONS]
            --initdb:初始化数据库
            --rebuild:重新创建数据库
        注意:     rpm包的管理数据库路径为/var/lib/rpm/                    
                数据库操作很危险,最好不要使用

以上是关于Linux基础——程序包管理(rpm)的主要内容,如果未能解决你的问题,请参考以下文章

Linux程序包管理

2018-3-14Linux系统管理(12) Linux程序包管理yum前端管理工具

Linux程序包管理之rpm包管理

linux基础之程序包管理

Linux CentOS7系统上 RPM命令管理程序包 基础知识

Linux程序包管理初步-rpm的使用