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 的话流程类似,但包版本和依赖会有差异。需要我帮你查具体某个包的离线安装依赖链吗?

相关推荐
且从容.1 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落3 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨3 小时前
WSL2的安装与使用
linux·wsl
微小的鱼3 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng3 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky16 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默16 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816317 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
爱莉希雅&&&19 小时前
GitLab 完整学习笔记
linux·运维·服务器