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