大家好,欢迎来到IT知识分享网。
一个软件的流程:准备 → 安装 → 升级 → 卸载
通产情况下软件的安装就是文件的复制,软件安装是会把所需要用到的文件复制到特定的目录。
目录
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