美文网首页
rpm 命令整理

rpm 命令整理

作者: 58bc06151329 | 来源:发表于2017-10-12 23:54 被阅读16次

    文前说明

    作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

    本文仅供学习交流使用,侵权必删。
    不用于商业目的,转载请注明出处。

    RPM 是 Red Hat Package Manager 的缩写,本意是 Red Hat 软件包管理,是 Red Hat 贡献出来的软件包管理,在Fedora 、Redhat、Mandriva、SuSE、YellowDog 等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。

    RPM 名称规则说明

    • 例如:tagsoup-1.2.1-8.el7.noarch.rpm
    套件名称 版本信息 释出次数 适用系统 适用平台
    tagsoup 1.2.1 8 el7 noarch
    • 除了适合的平台、系统、副档名外,主要是以 '-' 隔开各个部分。

    • 释出版本次数:由于有某些 bug 或者是安全上的顾虑,所以必须要重新设定当初打包时候的设定参数, 设定完成之后重新编译并打包成 RPM 档案。

    • i386 软件包可以在任何 x86 平台下使用,无论是 i686 还是 x86_64 的机器。

    • 而 i686 的软件包一般都对 cpu 进行了优化,具有向后的兼容性,不具有向前的兼容性。

    RPM 包管理的作用

    • 可以安装、删除、升级和管理软件(支持在线安装和升级)。
    • 通过 RPM 包可以知道包含文件,也能知道某文件所属 RPM 软件包。
    • 可查询软件包是否已经安装及其版本。
    • 开发者可以把程序打包为 RPM 包发布。
    • 软件包签名 GPG 和 MD5 导入、验证和签名发布。
    • 依赖性检查,软件包是否兼容检查等。

    RPM 包的使用权限

    • RPM 软件的安装、删除、更新只有 root 权限才能操作。
    • 查询功能任何用户都可以操作。
    • 普通用户拥有安装目录的权限,也可以进行安装。

    RPM 常用参数

    参数 说明
    -a 查询所有套件
    -b <完成阶段><软件包>+ 或 -t <完成阶段><软件包>+ 设置软件包的完成阶段,并指定软件包的文件名称
    -c 只列出组态配置文件,本参数需配合 "-l" 参数使用
    -d 只列出文本文件,本参数需配合 "-l" 参数使用
    -e <软件包> 或 --erase <软件包> 删除指定的软件
    -f <文件>+ 查询拥有指定文件的软件包
    -h 或 --hash 软件包安装时列出标记
    -i 显示软件包的相关信息
    -i <软件包> 或 --install <软件包> 安装指定的软件包
    -l 显示软件包的文件列表
    -p <软件包>+ 查询指定的 RPM 软件包
    -q 使用询问模式,当遇到任何问题时,rpm 指令会先询问用户
    -R 显示软件包的关联性信息
    -s 显示文件状态,本参数需配合 "-l" 参数使用
    -U <软件包>或 --upgrade <软件包> 升级指定的软件包
    -v 显示指令执行过程
    -vv 详细显示指令执行过程,便于排错。

    RPM 资料库初始化

    [root@localhost rpm]# rpm --initdb
    [root@localhost rpm]# rpm --rebuilddb
    
    命令 说明
    --rebuilddb 重建 RPM 资料库
    --initdb 创建一个新的 RPM 资料库
    --quiet 尽可能的减少输出
    --help 显示帮助文件
    --version 显示 RPM 的当前版本
    • 系统初装时需要执行 updatedb,每隔一段时间也需要执行一次,以保持已经安装的软件库信息最新。updatedb 是 slocate 软件包所有,需要安装 slocate 软件包。
    [root@localhost rpm]# updatedb
    
    • 可以通过 locate 查询软件或文件的安装路径。
    [root@localhost rpm]# locate <软件名或文件名>
    

    RPM 软件包查询

    • 命令格式:rpm {-q|--query} [select-options] [query-options]
    查询已安装的软件
    命令 说明 例子
    rpm -q <软件名> 查询系统是否安装了指定名称的软件 rpm -q gaim
    rpm -qa 查询系统中所有安装的软件 rpm -qa
    rpm -qf <文件名> 查询已安装的文件属于哪个软件包(需要指出文件所在绝对路径) rpm -qf /usr/share/pixmaps/javaws.png
    rpm -ql <软件名> 查询已安装的软件包的安装位置 rpm -ql gaim
    rpm -qi <软件名> 查询已安装的软件包的信息 rpm -qc gaim
    rpm -qd <软件名> 查询已安装的软件包的文档的安装位置 rpm -qd gaim
    rpm -qR <软件名> 查询已安装的软件包所依赖的软件和文件 rpm -qR rpm-python
    查询未安装的软件
    命令 说明 例子
    rpm -qpi <软件包名> 查看一个软件包的用途、版本等信息 rpm -qpi zip-3.0-11.el7.x86_64.rpm
    rpm -qpl <软件包名> 查看一个软件包所包含的文件 rpm -qpl zip-3.0-11.el7.x86_64.rpm
    rpm -qpd <软件包名> 查看一个软件包文档所在位置 rpm -qpd zip-3.0-11.el7.x86_64.rpm
    rpm -qpc <软件包名> 查看一个软件包的配置文件 rpm -qpc zip-3.0-11.el7.x86_64.rpm
    rpm -qpR <软件包名> 查看一个软件包的依赖关系 rpm -qpR zip-3.0-11.el7.x86_64.rpm
    查询命令 - 详细选项 说明
    -p (or "-'') 查询软件包的文件
    -f 查询属于哪个软件包
    -a 查询所有安装的软件包
    -g 查询属于组的软件包
    --whatprovides 查询提供了功能的软件包
    --whatrequires 查询所有需要功能的软件包
    查询命令 - 信息选项 说明
    i 显示软件包的概要信息
    -l 显示软件包中的文件列表
    -c 显示配置文件列表
    -d 显示文档文件列表
    -s 显示软件包中文件列表并显示每个文件的状态
    --scripts 显示安装、卸载、校验脚本
    --queryformat (or --qf) 以用户指定的方式显示查询信息
    --dump 显示每个文件的所有已校验信息
    --provides 显示软件包提供的功能
    --requires (or -R) 显示软件包所需的功能
    查询命令 - 通用选项 说明
    -v 显示附加信息
    -vv 显示调试信息
    --root 让 RPM 将指定的路径做为 "根目录",这样预安装程序和后安装程序都会安装到这个目录下
    --rcfile 设置 rpmrc 文件为
    --dbpath 设置 RPM 资料库存所在的路径为

    RPM 软件包安装

    • 命令格式:rpm -i(or --install) [options] file1.rpm ... fileN.rpm
    [root@localhost rpm]# rpm -ivh zip-3.0-11.el7.x86_64.rpm
    
    安装命令 - 详细选项 说明
    -h (或 --hash) 安装时输出 hash 记号 ( "#'' )
    --test 只对安装进行测试,并不实际安装
    --percent 以百分比的形式输出安装的进度
    --excludedocs 不安装软件包中的文档文件
    --includedocs 安装文档
    --replacepkgs 强制重新安装已经安装的软件包
    --replacefiles 替换属于其它软件包的文件
    --force 忽略软件包及文件的冲突
    --noscripts 不运行预安装和后安装脚本
    --prefix 将软件包安装到指定的路径下
    --ignorearch 不校验软件包的结构
    --ignoreos 不检查软件包运行的操作系统
    --nodeps 不检查依赖性关系
    --ftpproxy 用作为 FTP 代理
    --ftpport 指定 FTP 的端口号为
    安装命令 - 通用选项 说明
    -v 显示附加信息
    -vv 显示调试信息
    --root 让 RPM 将指定的路径做为 "根目录",这样预安装程序和后安装程序都会安装到这个目录下
    --rcfile 设置 rpmrc 文件为
    --dbpath 设置 RPM 资料库存所在的路径为
    RPM 软件包网络安装和查询
    [root@localhost rpm]# rpm -qpi http://mirrors.kernel.org/fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
    [root@localhost rpm]# rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/ Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
    

    软件包升级

    • 命令格式:rpm -U(or --upgrade) [options] file1.rpm ... fileN.rpm
    [root@localhost rpm]# rpm -Uvh zip-3.0-11.el7.x86_64.rpm
    
    升级命令 - 详细选项 说明
    -h (or --hash) 升级时输出 hash 记号 ( "#'' )
    --oldpackage 允许 "升级" 到一个老版本
    --test 只进行升级测试
    --excludedocs 不安装软件包中的文档文件
    --includedocs 安装文档
    --replacepkgs 强制重新安装已经安装的软件包
    --replacefiles 替换属于其它软件包的文件
    --force 忽略软件包及文件的冲突
    --percent 以百分比的形式输出升级的进度
    --noscripts 不运行预安装和后安装脚本
    --prefix 将软件包安装到指定的路径下
    --ignorearch 不校验软件包的结构
    --ignoreos 不检查软件包运行的操作系统
    --nodeps 不检查依赖性关系
    --ftpproxy 用作为 FTP 代理
    --ftpport 指定 FTP 的端口号为
    升级命令 - 通用选项 说明
    -v 显示附加信息
    -vv 显示调试信息
    --root 让 RPM 将指定的路径做为 "根目录",这样预安装程序和后安装程序都会安装到这个目录下
    --rcfile 设置 rpmrc 文件为
    --dbpath 设置 RPM 资料库存所在的路径为

    软件包删除

    • 命令格式:rpm -e(or --erase) [options] pkg1 ... pkgN
    [root@localhost rpm]# rpm -e zip
    
    删除命令 - 详细选项 说明
    --test 只执行删除的测试
    --noscripts 不运行预安装和后安装脚本程序
    --nodeps 不检查依赖性
    删除命令 - 通用选项 说明
    -vv 显示调试信息
    --root 让 RPM 将指定的路径做为 "根目录",这样预安装程序和后安装程序都会安装到这个目录下
    --rcfile 设置 rpmrc 文件为
    --dbpath 设置 RPM 资料库存所在的路径为

    RPM 软件包校验

    已安装软件包校验
    • 命令格式: rpm -V(or --verify, or -y) [options]
    校验命令 - 软件包选项 说明
    -p 校验包文件
    -f 校验所属的软件包
    -a 校验所有的软件包
    -g 校验所有属于组的软件包
    校验命令 - 详细选项 说明
    --noscripts 不运行校验脚本
    --nodeps 不校验依赖性
    --nofiles 不校验文件属性
    校验命令 - 通用选项 说明
    -v 显示附加信息
    -vv 显示调试信息
    --root 让 RPM 将指定的路径做为 "根目录",这样预安装程序和后安装程序都会安装到这个目录下
    --rcfile 设置 rpmrc 文件为
    --dbpath 设置 RPM 资料库存所在的路径为
    未安装软件包文件校验

    命令格式: rpm -K(or --checksig) [options] file1.rpm ... fileN.rpm

    校验命令 - 详细选项 说明
    --nopgp 不校验 PGP 签名
    校验命令 - 通用选项 说明
    -v 显示附加信息
    -vv 显示调试信息
    --rcfile 设置 rpmrc 文件为

    RPM 软件包导入签名

    • rpm --import <签名文件>
    [root@localhost rpm]# rpm --import RPM-GPG-KEY
    [root@localhost rpm]# rpm --import RPM-GPG-KEY-fedora
    

    RPM 软件包文件抽取

    • 抽取出来的文件就在当前用户操作目录中的 usr 和 etc 中。

    • 命令格式: rpm2cpio file.rpm |cpio -div

    [root@localhost rpm]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
    

    RPM 的配置文件

    • rpm 包管理的配置文件是 rpmrc
    [root@localhost rpm]# locate rpmrc
    /usr/lib/rpm/rpmrc
    /usr/lib/rpm/redhat/rpmrc
    
    • 可以通过 rpm --showrc 查看配置文件内容

    SRPM 的安装

    格式 说明
    RPM(.rpm) 已经经过编译且包装完成的 rpm 档案。
    SRPM(.src.rpm) 包含未编译的原始码资讯。
    • 方法一
    1. 执行 rpm -i your-package.src.rpm
    2. cd /usr/src/redhat/SPECS
    3. rpmbuild -bp your-package.specs 一个和软件包同名的 specs 文件
    4. cd /usr/src/redhat/BUILD/your-package/ 一个和软件包同名的目录
    5. ./configure 这一步和编译普通的源码软件一样,可以加上参数
    6. make
    7. make install
    • 方法二
    1. 执行 rpm -i you-package.src.rpm
    2. cd /usr/src/redhat/SPECS (前两步和方法一相同)
    3. rpmbuild -bb your-package.specs 一个和软件包同名的 specs 文件
    4. 在 /usr/src/redhat/RPM/<平台>/(根据具体,可以是 i686、noarch、i386 等等)下,有一个新的 rpm 包这个是编译好的二进制文件,可以直接执行 rpm -i new-package.rpm

    执行 rpmbuild -bb your-package.specs 出现错误 Error: Architecture is not included : i386,此错误表示该软件包不支持 i386 平台(默认的 rpmbuild 为 i386 平台),需指定到别的平台。

    rpmbuild –bb –target=i686 your-package.specs
    

    相关文章

      网友评论

          本文标题:rpm 命令整理

          本文链接:https://www.haomeiwen.com/subject/yrynyxtx.html