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

相关推荐
阿祖zu26 分钟前
开源项目-让本地 Codex 临时接管远程 Linux 服务,实现快速运维
linux·gpt·agent
Android系统攻城狮3 小时前
Linux PipeWire深度解析之pw_factory_create_object调用流程与实战(七十二)
linux·音频进阶·pipewire音频进阶
lsh曙光3 小时前
playbook剧本(2)--Ansible变量
linux·运维·网络
lengjingzju3 小时前
编译与调试完全指南—第14章 系统配置与调优
linux
大鹏的NLP博客4 小时前
通用 Linux 嵌入式板端 C/C++ ABI 与 Glibc 依赖治理规范
linux·c++·交叉编译
tedcloud1235 小时前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
瀚高PG实验室5 小时前
SQL优化案例:使用分区表优化SQL查询性能
linux·服务器·数据库·sql·microsoft·postgresql
青禾8375 小时前
Linux 系统信息、权限管理与 Python 并发编程(协程与线程)完全指南
linux·python
2301_800954996 小时前
Linux 常用系统信息与进程管理命令速查
linux·运维·服务器
T型码农要学习6 小时前
eMMC_命令整理
linux·驱动开发·emmc