zoukankan      html  css  js  c++  java
  • Linux_rpm包管理

    一、rpm包命令规范

    1、包的组成

    • 主包:bind-9.7.1-1.el5.i586.rpm
    • 子包:bind-libs-9.7.1-1.el5.i586.rpm bind-utils-9.7.1-1.el5.i586.rpm

    2、包名格式

    • name-version-release-arch.rpm
      • bind-major.minor.release-release.arch.rpm

    3、包名格式说明

    • major(主版本号):重大改进
    • minor(次版本号):某个子功能发生重大变化
    • release(发行号):修正了部分bug,调整了一点功能

    4、常见的arch:

    • x86:i386,i486,i586,i686
    • x86_64:x64,x86_64,amd64
    • 跟平台无关:noarch

    二、rpm包管理

    1、rpm及其作用

    1️⃣:rpm是Redhat Package Manager的简称,用于管理软件包

    2️⃣:rpm有一个强大的数据库/var/lib/rpm

    3️⃣:rpm的管理工作包括软件的安装、卸载、升级、查询、校验、重建数据库、验证软件包来源合法性等等

    2、rpm包安装  

    1️⃣:语法:rpm -ivh /PATH/TO/PACKAGE_FILE ...

    2️⃣:常用选项:

    //常用选项
        -i: 安装
        -v: 显示详细信息
        -h: 显示安装进度条
        -e :删除指定rpm包
        -R :显示软件包的关键信息
        -s :显示文件状态
        
        --test: 测试安装,但不真正执行安装过程
        --nodeps: 忽略依赖关系
        --replacepkgs: 重新安装,替换原有安装
        --oldpackage: 降级
        --force: 强行安装,可以实现重装或降级
        --nodigest: 不检查包的完整性
        --nosignature: 不检查包的来源合法性
        --noscripts: 不执行程序包脚本片断
                %pre:安装前脚本         --nopre
                %post:安装后脚本        --nopost
                %preun:卸载前脚本      --nopreun
                %postun:卸载后脚本     --nopostun  
    

    3️⃣:安装示例:

    //安装软件包, 需要指定软件包绝对路径  (当前系统版本是RHEL8)
    [root@localhost mnt]# rpm -ivh /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm
    [root@localhost mnt]# rpm -ivh /mnt/AppStream/Packages/vsftpd-3.0.3-28.el8.x86_64.rpm
    
    //测试一个软件包是否能在该系统上安装
    [root@localhost ~]# rpm -ivh --test /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm
    
    //如果软件包存在, 强制再次安装
    [root@localhost ~]# rpm -ivh --force /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm 
    
    //安装Apache服务需要依赖其他组件, 使用--nodeps可重新强制安装
    [root@localhost ~]# rpm -ivh --nodeps /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm
    

    4、rpm包查询  

    rpm包查询:
        语法:rpm 选项 (--指定的命令) packagesname
        -q :查询指定的包是否已安装
        -qa :查询已经安装的所有包
        -ql :查询指定软件包安装后生成的文件列表
        -qi :查询指定包的说明信息
        -qR :查询指定的软件包所依赖的CAPABILITY
    
        -qf :查询指定的文件是由哪个rpm包安装生成的
        -qc :查询指定包安装的配置文件
        -qd :查询指定包安装的帮助文件
    
        -q --scripts :查询指定包中包含的脚本
        -q --whatprovides :查询指定的CAPABILITY(能力)由哪个包所提供
            例如:rpm -q --whatprovides /bin/cat
    
        -q --whatrequires :查询指定的CAPABILITY被哪个包所依赖
        -q --changelog :查询COMMAND的制作日志
        -q --scripts :查询指定软件包包含的所有脚本文件
        -q --provides :列出指定软件包所提供的CAPABILITY
    
        -qpi /PATH/TO/PACKAGE_FILE :查询指定未安装包的说明信息
        -qpl /PATH/TO/PACKAGE_FILE  :查询未安装的软件包会产生哪些文件
    

     实例:

    //查询httpd这个rpm包是否安装
    [root@localhost ~]# rpm -q httpd
    
    //查找系统已安装的rpm包
    [root@localhost ~]# rpm -ql|grep httpd
    
    //查询rpm包所安装的文件
    [root@localhost ~]# rpm -qa httpd
    
    //查询配置文件或命令来自于哪个rpm包
    [root@localhost ~]# rpm -qf /usr/sbin/httpd
    [root@localhost ~]# rpm -qf /etc/httpd/conf/httpd.conf
    
    //查询未安装的软件包会产生哪些文件
    [root@localhost ~]# rpm -qlp /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm 
    或
    [root@localhost ~]# rpm -qip /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm
    

    5、rpm包升级

    rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE  //如果装有老版本的,则升级;否则,则安装(相当于有则升级,没有就安装)
    rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE  //如果装有老版本的,则升级;否则,退出(相当于只对老版本安装包升级作用)
                --oldpackage:降级
    
    示例:
    [root@localhost ~]# rpm -Uvh /mnt/AppStream/Packages/http-parser-2.8.0-5.el8.x86_64.rpm 
     //升级httpd软件包
    

    6、rpm包卸载  

    //语法:rpm -e packagesname
    
    示例:
    [root@localhost ~]# rpm -qa httpd
    [root@localhost ~]# rpm -e httpd
    
  • 相关阅读:
    windows程序设计第4章Text Output练习(831121)
    约瑟夫问题的递归公式
    哈希(hash)以及C++标准库哈希(std::hash)
    返回顶部的一段代码
    对于使用 UNIKON ALL 中表的顺序
    正则表达式的实际运用
    json.help
    省市区联动
    一个JS时间选择控件
    (转)C# Enum,Int,String的互相转换 枚举转换
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13476245.html
Copyright © 2011-2022 走看看