应优先使用 yum localinstall(CentOS 7)或 dnf install(CentOS 8+)自动解决依赖;若必须用 rpm,则仅在明确风险后加 --nodeps --force 强制安装。

直接用 rpm -i 安装时依赖报错怎么办
rpm 命令本身不解决依赖,遇到 Failed dependencies 错误是常态,硬加 --nodeps 或 --force 很可能让软件启动失败或功能异常。
真正稳妥的做法是交给系统包管理器处理:
- CentOS 7 / RHEL 7:用
sudo yum localinstall package.rpm - CentOS 8+ / RHEL 8+ / Fedora:用
sudo dnf install package.rpm
它们会自动拉取缺失的依赖包并安装,且记录在系统数据库中,后续升级、卸载都可追溯。如果本地没有网络,得先用 yumdownloader 或 dnf download 把依赖包一并下好再离线安装。
卸载时提示 “package is not installed” 是包名写错了
rpm -e 卸载用的是安装后的包名,不是 .rpm 文件名。比如你下载的是 nginx-1.24.0-1.el8.x86_64.rpm,实际包名通常是 nginx 或 nginx-core,取决于发行版打包策略。
查准包名再卸载:
- 查是否已装:
rpm -q nginx - 模糊搜索:
rpm -qa | grep -i nginx - 看完整包名(含版本):
rpm -qi nginx输出里的Name字段
别输 nginx-1.24.0-1.el8.x86_64.rpm —— .rpm 后缀和架构标识都不能带,否则一定报错。
rpm -ivh 和 rpm -Uvh 的区别在哪
rpm -ivh 是纯安装,如果同名包已存在,会直接报错退出;rpm -Uvh 是“升级或安装”,已存在就覆盖升级,不存在就当作新包安装。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
适用场景很明确:
- 首次部署、确认系统干净:用
rpm -ivh - 更新已有软件(比如打补丁、升小版本):用
rpm -Uvh - 注意:
-Uvh不会自动清理旧配置文件,/etc 下的配置通常保留,但脚本执行逻辑要看 RPM 包自身定义
别用 -Uvh 强行覆盖不同主版本(如从 nginx-1.18 升到 nginx-1.24),配置格式或模块 ABI 可能不兼容,得先停服务、备份配置、手动迁移。
src.rpm 包不能直接 rpm -i 运行
.src.rpm 是源码包,里面只有源代码和 .spec 构建描述,不是可安装的二进制包。直接 rpm -i xxx.src.rpm 只是把源码解压到 /usr/src/rpm/(路径因系统而异),不会生成任何运行程序。
要真正用上它,得编译:
- 进入 SPEC 目录:
cd /usr/src/rpm/SPECS(具体路径可用rpm --eval '%{_sourcedir}'确认) - 构建二进制包:
rpmbuild -bb xxx.spec - 生成的
.rpm在/usr/src/rpm/RPMS/下对应架构子目录里,再用rpm -ivh安装
普通用户几乎不需要碰 src.rpm;除非你要定制编译参数、打补丁、或适配非标环境,否则优先找现成的二进制 rpm 或用 dnf/yum 安装。
最容易被忽略的一点:所有 rpm 写操作(安装、卸载、升级)都必须有 root 权限,普通用户只能查;而 yum/dnf 虽然也需 sudo,但它的事务日志、依赖解析、回滚能力远超裸 rpm,日常运维别绕开它。

















