③ 安装 RPM 软件包

③ 安装 RPM 软件包通产情况下软件的安装就是文件的复制 软件安装是会把所需要用到的文件复制到特定的目录

大家好,欢迎来到IT知识分享网。

一个软件的流程:准备 → 安装 → 升级 → 卸载

通产情况下软件的安装就是文件的复制,软件安装是会把所需要用到的文件复制到特定的目录。

目录

1. RPM 软件包安装

1.1 RPM 在安装软件包的时候需要:

1.2 PRM 安装失败的情况

1.3 安装 RPM 包

1.4 安装示列

1. RPM 软件包安装

1.1 RPM 在安装软件包的时候需要:

检查软件的依赖关系 → 检查软件包的冲突 → 执行安装前脚本程序 → 处理配置文件 → 解压软件包并存放到相应位置 → 执行安装后脚本程序 → 更新 RPM 数据库 → 执行安装时触发脚本程序

RPM 对配置文件有特别的处理,PRM 会将原配置文件换个名字保存起来,会将原文件以 源文件.rpmorig 的形式将原配置文件保存起来。

触发脚本程序:软件包满足特定的条件才会执行的脚本程序,这用于软件包之间的交互控制。

软件包名 和 软件名 是不同的

1.2 PRM 安装失败的情况

  • ① 检查软件包的依赖,当 RPM 发现所依赖的动态库或程序等不存在、不满足相关要求的时候,终止安装。
  • ② 检查软件包的冲突,有些软件和其他软件不能共存,通常这些信息在 RPM 包中有记录。
  • ③ RPM 包可能含有在安装过程中以 root 身份运行的任意脚本

1.3 安装 RPM 包

rpm -ivh PACKAGE_FILE ... ... rpm {-i|--install} {install-option} PACKAGE_FILE ... ... rpm -i [安装选项1 安装选项2 ...] [包文件1] [包文件2] ... 
选项  描述

-i

安装指定的包文件
-v 显示指令的执行过程
-vv 详细显示指令执行过程、方便排错
-h 显示安装过程的进度条
–test 测试安装、检查并报告依赖关系及冲突消息等
–nodeps 忽略软件包的依赖关系强制进行安装
–replacepkage 无论软件包是否已经被安装,都重新安装软件包
–nosignature 无检查包签名信息、不检查来源合法性
–nodigest 不检查完整性信息

其他安装选项和说明

安装选项 说明 安装选项 说明
–excludedocs 不安装软件包中的文档文件 –nodeps 不检查依赖关系
–force 忽略软件包及文件的冲突 –noscripts 不运行预定安装脚本和安装后安装脚本
–ftpport port 指定FTP的端口号为port –percent 以百分比的形式显示安装的进度
–ftpproxy host 用 host 作为 FTP 代理 –prefix path 安装到由 path 指定的路径下
–h ( or –bash ) 安装时输出 bash 记号 # –replacefiles 替换属于其他软件包的文件
–ignorarch 不校验软件包的结构 –replacepkgs 强制重新安装已安装的软件包
–ignoreos 不检查软件包运行的操作系统 –test 只对安装进行测试,不实际安装
–includedocs 安装软件包中的文档文件

通用选项和其他 RPM 选项及其说明

通用选项 其他 RPM 选项
选项 说明 选项 说明
–dppath path 设置 RPM 资料库所在的路径为 PATH –help 显示帮助文件
–rcfile rcfile 设置 rpmrc 文件为 rcfile –initdb 创建一个新的 RPM 资料库
–root path

让 RPM 将 path 指定的路径作为 根目录

这样预安装程序和后安装程序都会安装到

这个目录下

–quiet 尽可能地减少输出
-v 显示附加信息 –rebuilddb 重建 RPM 资料库
–vv 显示调试信息 –version 显示 RPM 的当前版本

解决 RPM 包的依赖关系是麻烦的,这通常需要解决多个依赖,使用 rpm -qR 软件名 来查询安装包的依赖关系。

[root@localhost ~]# rpm -qR tree libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1

1.4 安装示列

[root@localhost ~]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm Preparing... [100%] package tree-1.6.0-10.el7.x86_64 is already installed 

由于 tree 比较简单,所以不需要考虑 tree 的依赖关系

包的来源:

http://mirror.centos.org/centos/7/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121208.html

(0)
上一篇 2025-10-25 07:00
下一篇 2025-10-25 07:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信