解决方法:部署一台相同版本可以联网的服务器,使用DNF命令下载依赖包,上传到内网服务器离线安装。默认的 dnf 命令只能做基础的安装、卸载和更新。我们需要安装增强工具包 dnf-utils 才能制作离线安装包dnf install -y dnf-utils #安装工具包
#创建临时目录,作为虚拟系统根目录,用来计算依赖关系,不会影响真实的系统mkdir -p /tmp/fake #创建存储目录,下载好的所有 .rpm 文件都保持在这里mkdir -p /tmp/yum-rpm-full-x86
dnf install --installroot=/tmp/fake --downloadonly --downloaddir=/tmp/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
执行完成之后,所有的包都在/tmp/yum-rpm-full-x86目录,把这个目录打包yum-rpm-full-x86.tar.gz拷贝到需要安装的服务器上#解压tar -zxvf yum-rpm-full-x86.tar.gzcd yum-rpm-full-x86#只安装本地没有的包(跳过冲突),临时禁用所有已配置的远程仓库,只从本地目录安装yum localinstall ./*.rpm -y --nogpgcheck --disablerepo="*" --skip-broken
这是关键!它告诉 dnf:“假装 /tmp/fake 是一台刚装好的、空空如也的新电脑”。因此,它会认为连最基础的 glibc、bash、zlib 都没有,从而把所有层级的依赖包(从底层库到上层应用)全部列出来。--downloadonly --downloaddir=/tmp/yum-rpm-full-x86:只下载 RPM 文件到指定目录,不真的去修改那个假目录。至此,Linux下使用DNF命令下载安装包到指定目录完成。