RHEL 7.3 离线安装 RPM 包

The user is asking about how to offline install .rpm files on Red Hat 7.3. This is a straightforward technical question, I'll provide a clear and concise answer.

RHEL 7.3 离线安装 RPM 包

基本安装命令

bash 复制代码
# 安装单个 RPM 包
rpm -ivh package-name.rpm

# 升级已安装的包
rpm -Uvh package-name.rpm

参数说明:

参数 含义
-i install,安装
-U upgrade,升级(未安装则安装)
-v verbose,显示详细信息
-h hash,显示进度条 ###

常见问题与处理

1. 依赖缺失

离线环境下最常见的问题,rpm 不会自动解决依赖:

bash 复制代码
# 报错示例
error: Failed dependencies:
    libnettle.so.4()(64bit) is needed by package-1.0.rpm

解决方法:把依赖包一起拷贝到服务器,批量安装:

bash 复制代码
# 把所有相关 rpm 放到一个目录下,一次性安装
rpm -ivh /path/to/rpms/*.rpm

# 或者指定目录
rpm -ivh --nodeps /path/to/rpms/*.rpm  # ⚠️ 跳过依赖检查(不推荐)

2. 如何提前获取所有依赖(在有网的机器上)

这是离线安装的关键步骤------在联网的同版本系统上下载依赖

bash 复制代码
# 方法一:yumdownloader(推荐)
yum install -y yum-utils
yumdownloader --resolve --destdir=/tmp/rpms/ package-name

# 方法二:repotrack(下载更完整的依赖链)
repotrack -p /tmp/rpms/ package-name

# 方法三:只下载不安装
yum install --downloadonly --downloaddir=/tmp/rpms/ package-name

然后把 /tmp/rpms/ 整个目录拷贝到离线服务器上。

3. 包冲突

bash 复制代码
# 报错示例
file /usr/lib64/xxx from install of package-1.0.rpm conflicts with file from package-old-0.9.rpm
bash 复制代码
# 先卸载旧包
rpm -e package-old

# 或者强制覆盖安装
rpm -ivh --force package-name.rpm

4. 已安装更高版本

bash 复制代码
# 报错示例
package package-2.0.rpm (which is newer than package-1.0.rpm) is already installed
bash 复制代码
# 强制降级
rpm -ivh --oldpackage package-name.rpm

推荐流程:用本地 Yum 仓库安装(最规范)

相比逐个 rpm -ivh,搭建本地 yum 源可以自动解决依赖关系

bash 复制代码
# 1. 把所有 rpm 包拷贝到服务器某个目录,如 /opt/local-repo
mkdir -p /opt/local-repo
# 上传 rpm 文件到此目录

# 2. 创建仓库元数据(需要 createrepo,没有的话也能手动装)
createrepo /opt/local-repo

# 3. 配置本地 repo
cat > /etc/yum.repos.d/local.repo << 'EOF'
[local]
name=Local RPM Repository
baseurl=file:///opt/local-repo
enabled=1
gpgcheck=0
EOF

# 4. 清缓存并安装
yum clean all
yum makecache
yum install package-name

提示 :如果 createrepo 也不可用,可以在联网的同版本机器上 yumdownloader createrepo 把它和依赖一起下好带过去先装上。


速查表

场景 命令
安装单个包 rpm -ivh xxx.rpm
批量安装(自动处理依赖顺序) rpm -ivh *.rpm
强制安装(忽略冲突) rpm -ivh --force xxx.rpm
跳过依赖检查 rpm -ivh --nodeps xxx.rpm
查看包是否已安装 `rpm -qa
查看包安装了哪些文件 rpm -ql package-name
查看文件属于哪个包 rpm -qf /path/to/file
卸载包 rpm -e package-name

你是在继续之前 RHEL 6.5 SNMP 的离线安装工作吗?如果是 RHEL 7.3 的话流程类似,但包版本和依赖会有差异。需要我帮你查具体某个包的离线安装依赖链吗?

相关推荐
LuDvei2 小时前
ubuntu环境下qt打包
linux·数据库·qt·ubuntu
逸Y 仙X2 小时前
文章二十六:ElasticSearch 异步查询执行重度任务
java·大数据·linux·运维·elasticsearch·搜索引擎·全文检索
曦夜日长3 小时前
Linux系统篇,指令(四):shell命令及运行原理
linux·运维·服务器
aningx3 小时前
NatPierce & Sunshine systemctl 服务配置指南
linux
消失的旧时光-19433 小时前
为什么 Linux / Android 系统里全是 struct + 函数指针?—— 一篇讲透 C 语言如何实现面向对象(OOP)
android·linux·c语言
一拳一个娘娘腔3 小时前
入门必看:CVE-2026-31431(Copy Fail)漏洞全解析,700字节脚本拿下Root权限
linux·安全
qinyia3 小时前
Rocky Linux 9 源码编译 Asterisk 20 + FreePBX 17 搭建小型呼叫中心
linux·运维·人工智能
艾莉丝努力练剑4 小时前
【Linux网络】Linux 网络编程入门:TCP Socket 编程(上)
linux·运维·服务器·网络·tcp/ip·计算机网络
Konwledging4 小时前
Linux图形栈
linux