
需求:内网服务器没有yum源,要离线安装依赖包
解决方法:部署一台相同版本的可以联网的服务器,使用DNF命令下载依赖包,上传到内网服务器离线安装。
具体操作:
我们以RHEL 8/9/10系列操作系统为例
1、安装dnf-utils工具包
默认的 dnf 命令只能做基础的安装、卸载和更新。我们需要安装增强工具包 dnf-utils 才能制作离线安装包
dnf install -y dnf-utils #安装工具包
2、创建目录
#创建临时目录,作为虚拟系统根目录,用来计算依赖关系,不会影响真实的系统
mkdir -p /tmp/fake
#创建存储目录,下载好的所有 .rpm 文件都保持在这里
mkdir -p /root/yum-rpm-full-x86
3、下载安装包到指定目录
dnf install --installroot=/tmp/fake --downloadonly --downloaddir=/root/yum-rpm-full-x86 \
wget telnet nmap traceroute ntp rsync lrzsz OpenIPMI ipmitool freeipmi screen ncurses-devel bind-utils libffi-devel libnfnetlink-devel libnl3-devel popt-devel tcpdump wireshark \
libtool *unixODBC* tar make gcc gcc-c++ perl pcre2-devel zlib-devel glibc-devel \
dejavu-fonts fontawesome-fonts fontconfig fonts-filesystem ttmkfdir fontconfig-devel \
-y
执行完成之后,所有的包都在/root/yum-rpm-full-x86目录,把这个目录打包yum-rpm-full-x86.tar.gz拷贝到需要安装的服务器上
4、离线安装依赖包
#解压
tar -zxvf yum-rpm-full-x86.tar.gz
cd yum-rpm-full-x86
#只安装本地没有的包(跳过冲突),临时禁用所有已配置的远程仓库,只从本地目录安装
yum localinstall ./*.rpm -y --nogpgcheck --disablerepo="*" --skip-broken
原理:
命令详解(为什么这样能解决依赖问题?)
--installroot=/tmp/fake:
这是关键!它告诉 dnf:“假装 /tmp/fake 是一台刚装好的、空空如也的新电脑”。
dnf 不会参考您当前机器上已经安装的包,它会把所有层级的依赖包全部列出来。
--downloadonly --downloaddir=/root/yum-rpm-full-x86:
只下载 RPM 文件到指定目录,不真的去修改那个假目录。
至此,Linux下使用DNF命令下载安装包到指定目录完成。

②190706903
③203744115



