尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

yum安装wget完整指南:源配置、报错排查与离线部署

发布时间:2026/9/17 0:11:56

资讯中心
01
ARTICLE

yum安装wget完整指南:源配置、报错排查与离线部署

yum安装wget完整指南:源配置、报错排查与离线部署
一、项目背景系统装好了第一件事就是装wget结果yum报错、找不到包、下载慢、源不对……这些坑我基本都踩过一遍。这篇就把yum安装wget这条看似简单的命令背后那些真正影响成败的细节完整梳理一遍。1.1 为什么要用yum安装wgetwget是一个命令行下载工具在Linux服务器上几乎是刚需中的刚需。下载源码包、拉取安装脚本、抓取静态资源、批量同步文件都会用到它。而大多数生产环境不会预装wget特别是精简安装的容器镜像、最小化安装的物理服务器、刚初始化完的云主机通常都没有。这时候就需要用yum来安装。yum是Red Hat系Linux发行版的包管理器核心作用是解决依赖关系。wget本身不算复杂依赖很少但yum安装的过程背后涉及到yum源配置、元数据缓存、依赖解析等一系列问题。很多人卡住并不是wget这个包本身有问题而是yum源没配好。我见过不少新人拿到一台新服务器第一反应就是直接yum install wget然后报错No package wget available就开始怀疑系统坏了。其实绝大多数情况下是源的问题而不是包的问题。1.2 这个项目能解决什么问题这篇文章适合这些场景刚装完CentOS/RHEL或其他Red Hat系系统需要补齐基础工具内网环境无法访问外网需要配置本地yum源来安装软件外网下载速度极慢需要更换国内镜像源需要在批量服务器上快速部署统一环境想搞明白yum的工作原理而不只是会敲几条命令整篇的核心就是把yum装wget这件事的前因后果讲透从源配置到实际安装再到常见坑的排查一条线走完。二、yum安装wget的完整流程与原理拆解2.1 yum到底是怎么工作的yum全称是Yellowdog Updater Modified它的核心机制是从配置好的yum仓库repository中读取软件包的元数据然后根据这些元数据解析依赖关系最终下载并安装软件包。一个典型的yum安装过程是这样的yum读取 /etc/yum.conf 主配置文件和 /etc/yum.repos.d/ 目录下所有 .repo 仓库配置文件根据仓库配置中的baseurl指向的地址下载该仓库的repodata目录下的元数据文件根据元数据建立本地缓存记录这个仓库里有哪些软件包、版本号是什么、依赖哪些其他包用户执行yum install wget时yum在缓存中搜索匹配的包解析wget的依赖关系确定还需要一并安装哪些包从仓库下载所有需要的rpm包按照依赖顺序依次安装这套机制的好处是把依赖问题自动化。你不需要手动去下载wget的rpm然后发现它还依赖libc、openssl等底层库再一个个去解决。yum一次性帮你处理完。坏处是yum源一旦配置错误整个过程直接卡死。这就是为什么很多人装wget这种极其简单的包也会失败。2.2 源配置选型在线源还是本地源配置yum源是整个安装流程里最关键的决策。根据网络环境不同通常在两种方案里选方案一在线yum源适用于能访问外网的服务器。系统默认自带的官方源在国内环境下访问速度往往很慢。所以一般建议换成国内镜像源。常见的选择有阿里云镜像源mirrors.aliyun.com清华大学TUNA镜像源mirrors.tuna.tsinghua.edu.cn中科大镜像源mirrors.ustc.edu.cn网易镜像源mirrors.163.com这些镜像源同步官方源的数据同一份软件包从国内镜像下载的速度要比直连官方源快不少。方案二本地yum源适用于内网环境、无法访问外网的服务器。做法是把安装光盘或ISO镜像中的rpm包拷贝到服务器本地通过file://协议挂载为一个仓库。本地源的优势不仅仅是离线可用更重要的是速度快——直接从本地磁盘读取完全不受带宽限制。缺点也很明显软件包版本取决于ISO镜像的版本可能比较旧而且包的数量有限一套完整的DVD ISO大约有四五千个包但和在线源动辄上万包比还是少一些。实际生产环境里这两种方案常常结合使用。比如内网服务器先配置本地源满足基础安装需求再通过代理方式访问外部镜像源补充更多软件包。2.3 环境检查安装之前先确认这些信息在下手装之前先花两分钟确认一下系统的基本信息能省掉后面不少麻烦。查看系统版本cat /etc/redhat-release这个文件会告诉你系统的具体版本比如CentOS Linux release 7.9.2009 (Core)。为什么要确认这个因为不同大版本的yum源配置差异很大。CentOS 7及更早版本使用yum源地址通常是系统版本对应的大版本号如7CentOS 8开始官方转向了DNF但yum命令仍然保留不过是软链接到dnfRed Hat Enterprise LinuxRHEL需要订阅才能访问官方源没有订阅的机器必须自己配置源国产操作系统如银河麒麟、统信UOS等通常基于CentOS或Ubuntu二次开发源配置有自己的规则查看系统架构uname -mx86_64代表64位i686/i386代表32位aarch64是ARM架构。安装包需要和架构匹配虽然yum会自己判断但有时候你手动下载rpm包再安装就会遇到架构不匹配的问题。查看yum源当前状态yum repolist这个命令会列出当前所有可用的仓库、仓库ID、仓库名称以及每个仓库里的包数量。如果输出为空或报错说明源配置有问题需要先处理。我习惯把这三步检查做成一套固定动作到任何一台新服务器上都是先执行这三条命令确认环境没问题再继续。三、实操过程从零配置yum源到成功安装wget3.1 在线源方案替换阿里云源刚好最近帮朋友处理了一台CentOS 7服务器系统的默认源访问缓慢yum安装wget的报了超时。先备份原有的repo文件这是一个好习惯特别是当你可能需要恢复原配置时mkdir -p /etc/yum.repos.d/backup cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ rm -f /etc/yum.repos.d/*.repo注意删除repo文件前务必确认备份成功。这里有个经验备份后最好用ls验证一下备份目录里的文件数量和大小有时候拷贝失败或者文件损坏删掉原文件后才发现问题。然后下载阿里云的repo配置文件。这一步正好用到了wget感觉有点鸡生蛋蛋生鸡的意思——没有wget怎么下载wget但前面说过CentOS基础镜像不一定带wget所以这里可以先临时用curl来处理curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo如果你维护的是CentOS 8、CentOS 9等新版本阿里云同样提供了对应的repo文件比如Centos-8.repo、Centos-9.repo路径规则一样替换版本号即可。下载完成后清理旧的yum缓存重建缓存yum clean all yum makecacheclean all会清空 /var/cache/yum 下的所有缓存数据makecache会重新从源拉取元数据。这一步是必须的因为如果不清理缓存yum可能会继续使用旧的元数据导致新配置的源不生效。然后就可以安装wget了yum install -y wget加上-y参数会自动确认所有交互提问脚本化操作时一定要加。安装成功后验证wget --version看到输出有GNU Wget 1.14或者类似字样说明安装成功。3.2 本地源方案挂载ISO镜像配置仓库外网不可用的场景下本地源是绕不开的方案。这里演示一下完整流程。第一步准备好ISO镜像文件。可以是安装系统时用的那张光盘镜像也可以是从可信渠道获取的官方ISO。然后挂载这个镜像mkdir -p /mnt/cdrom mount -o loop /path/to/your.iso /mnt/cdrom-o loop参数用于把ISO这种镜像文件当作块设备来挂载本质上是内核的loop设备在工作。挂载成功后确认一下内容ls /mnt/cdrom正常会看到Packages目录里面全是rpm包和repodata目录里面是仓库元数据。接下来写repo配置文件。一般建议放在 /etc/yum.repos.d/local.repo 这个文件里[local] nameLocal CDROM Repository baseurlfile:///mnt/cdrom enabled1 gpgcheck0这里解释几个参数[local]仓库ID必须唯一不能和其他repo文件里的重复name仓库显示名称随便写baseurl仓库地址file:///mnt/cdrom 表示本机/mnt/cdrom目录enabled1启用该仓库gpgcheck0跳过GPG签名验证。内网环境用ISO镜像一般可以关掉如果是公网下载的文件建议开启并导入对应公钥为了保险起见可以把其他repo文件都移走mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ mv /etc/yum.repos.d/local.repo /etc/yum.repos.d/注意顺序如果移动通配符的.repo文件local.repo也会被匹配到一起移走所以先设置backup目录移动后再把local.repo移回来。然后执行缓存更新并安装yum clean all yum makecache yum install -y wget因为是本地磁盘读取makecache和install速度都会飞快基本是秒级完成。3.3 批量下载rpm包离线环境装机的常用手段还有一种常见需求要在一批没有外网的服务器上装wget但又不方便每台都挂ISO。这时候可以先在一台有网的机器上下载好rpm包然后拷贝到目标机器上离线安装。有网机器上执行yum install --downloadonly --downloaddir/tmp/wget-packages wget这个命令只下载不安装所有rpm包都会保存到/tmp/wget-packages目录下。注意--downloadonly默认只下载wget主包不会自动下载它的依赖包所以最好先确认wget的依赖情况yum deplist wget从输出结果里能看到依赖项比如libc、libssl等。如果目标机器上这些底层库已经存在那就只需要拷贝wget的rpm包如果不确定建议把所有依赖一起下载。更稳妥的做法是使用repotrack工具yum install -y yum-utils repotrack wget -p /tmp/wget-packagesrepotrack会把wget及其所有依赖包全部下载到指定目录一个都不会漏。这个工具在离线部署场景下非常实用。然后把这整个目录拷贝到目标机器上手动安装rpm -Uvh /tmp/wget-packages/*.rpmrpm -Uvh表示升级安装如果已存在则更新不存在则安装加上 -v 和 -h 参数可以输出详细信息和进度条。这样操作的好处是只要提前准备好到目标机器上一条命令就能搞定不需要每台机器都配源、清理缓存、解析依赖。四、常见问题与排查技巧实录4.1 errors during downloading metadata for repository这是配置yum源后最常见的一个报错错误信息一般是Errors during downloading metadata for repository base: - Curl error (28): Timeout was encountered for url ...这个报错翻译成人话就是yum按照repo文件里配置的地址去下载元数据但下载超时了。排查思路按这个顺序来第一步检查网络连通性curl -I http://mirrors.aliyun.com/centos/7/os/x86_64/如果能正常返回HTTP头信息说明网络通。如果卡住不动或者报错说明网络不通。第二步检查DNS解析nslookup mirrors.aliyun.comDNS解析失败会导致域名无法转换为IP地址自然下载不了。可以尝试在/etc/resolv.conf里配置一个公共DNS服务器测试。第三步检查repo配置文件的baseurl是否写对cat /etc/yum.repos.d/CentOS-Base.repo重点看baseurl和mirrorlist的路径结构。不同的repo文件写法不一样有的用baseurl直接指向具体路径有的用mirrorlist从CentOS官网动态获取镜像列表后者在内网环境下经常会出问题。解决方案是把mirrorlist注释掉启用baseurl。第四步确认系统版本和repo文件版本是否匹配。CentOS 7的repo文件用在CentOS 8上路径里的版本号对不上同样报错。4.2 No package wget available这个报错的意思是在所有启用的仓库中都找不到wget这个包。常见原因有以下几种第一种仓库为空或未启用。用yum repolist查看一下仓库列表如果列表为空说明所有的repo文件都被删掉了或者所有仓库都被禁用了。第二种仓库的baseurl确实存在但enable参数为0。检查repo文件中enabled0的情况改成enabled1。第三种仓库配置的路径下确实没有wget这个包。这种情况比较少见但如果是自己制作的精简源或第三方源软件包不齐全是有可能的。解决方案是检查baseurl指向的目录下Packages文件夹里有没有wget开头的rpm包。第四种元数据没有正确更新。执行yum clean all yum makecache然后再试一次。有时候repo文件改了之后没有清理缓存yum还在用旧的元数据就会误以为仓库里没有这个包。我遇到过一个比较隐蔽的情况在一台RHEL 6.5机器上系统默认带的repo文件指向的是RHNRed Hat Network但服务器没有订阅所以所有仓库都是不可用的。这种情况下yum repolist显示一堆仓库但实际一个都连不上。解决思路是要么手动配置一个第三方源如EPEL或者本地源要么干脆使用CentOS的源替代注意在RHEL上使用CentOS源需要做好心理准备虽然大部分包是兼容的但并不被Red Hat官方支持4.3 wget下载速度慢的解决办法这个问题的本质是网络链路的传输速度瓶颈。wget本身的下载速度优化主要集中在参数调节上。最大速度限制如果你不想wget占满整条带宽可以用--limit-rate限制wget --limit-rate200k http://example.com/file.tar.gz单位支持k和m200k表示最大每秒200KB。重试和超时设置大文件下载时网络抖动可能导致连接中断。配置合理的重试机制wget -t 5 -T 60 http://example.com/file.tar.gz-t 5表示遇到错误最多重试5次-T 60表示每次连接超时时间为60秒。断点续传wget -c http://example.com/file.tar.gz-c参数支持断点续传。如果之前下载了一半断了再次执行会从断点继续而不是重新下。这个参数在下载大文件时极其重要。后台下载wget -b http://example.com/file.tar.gz后台下载会把进度信息写入wget-log文件你可以随时查看。配合nohup使用更佳。另一个影响速度的因素是wget默认使用的HTTP/1.1协议在某些网络环境下表现不佳。新版wget支持一些优化选项但普通用户能做的事情有限。如果下载速度实在慢建议换镜像源而不是纠结wget参数调优。比如把下载源从国外的官方站换成国内的清华、阿里、中科大镜像速度往往是几十倍甚至百倍的差距。4.4 EPEL源和yum-utils相关的坑很多人喜欢在装软件前先装EPELExtra Packages for Enterprise Linux源这个源提供了大量Red Hat官方源里没有的软件包。安装命令是yum install -y epel-release安装成功后会生成 /etc/yum.repos.d/epel.repo 文件。但这里有个坑在某些镜像站配置下EPEL源可能和原有源冲突导致makecache报错。另外安装EPEL版本要和系统大版本匹配比如CentOS 7装epel-release-7的版本否则仓库元数据会一片混乱。yum-utils这个包也值得单独提一下。它的安装命令是yum install -y yum-utils但这条命令在某些场景下会失效。我遇到过一种情况源里没有yum-utils这个包需要先启用EPEL源才能安装。还有一种情况是系统里已经有旧版的yum-utils占了名字导致新版本装不上需要先yum remove yum-utils再重新装。实际上yum-utils提供了很多实用工具repotrack下载一个包及其所有依赖yumdownloader只下载rpm包到当前目录不安装reposync同步整个yum仓库到本地yum-config-manager管理仓库配置如果你经常做离线部署这个包值得好好研究。4.5 系统里没有repo文件的极端情况有些精简版系统、容器镜像或者特殊定制的系统装完之后 /etc/yum.repos.d/ 目录是空的里面一个.repo文件都没有。这种情况下yum install任何包都会报No package available。解决办法是手动创建一个repo文件。比如创建一个最小的在线源配置[base] nameCentOS-$releasever - Base baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck0 enabled1$releasever是yum自动识别的系统主版本号$basearch是系统架构自动识别为x86_64或aarch64等。这样就不需要手写死版本号yum会自动替换。写到 /etc/yum.repos.d/CentOS-Base.repo 后clean all和makecache再试yum install。另外一个极端情况是源配置里写的是http协议的地址但服务器防火墙只允许https出站。这种也会报错解决方案是把baseurl的http换成https前提是镜像站支持https访问。4.6 银河麒麟等国产系统的yum源最近几年国产操作系统的使用场景越来越多。银河麒麟KylinV10是基于CentOS技术路线开发的底层兼容Red Hat系列生态但在yum源配置上有一些自己的规则。Kylin V10的默认源配置文件一般在 /etc/yum.repos.d/kylin-aarch64.repo 或类似命名的文件里。这个源默认指向的是麒麟官方的软件仓库如果你能正常联网直接执行yum install -y wget通常就能用。容易踩的坑是第一Kylin V10的架构通常以aarch64ARM为主部分服务器上也会有x86_64版本。repo文件里的baseurl和系统架构必须匹配否则会报mirrorlist错误。第二麒麟官方源偶尔会不稳定或者做维护这时候需要临时配置一个备用源。方法还是老套路新增一个.repo文件指向可用的镜像源注意不要覆盖原有的repo文件。第三Kylin V10的版本代号比如V10 SP1、V10 SP2、V10 SP3之间可能有差异不同版本的源路径也不完全一样。配置前先cat /etc/kylin-release 确认一下具体版本号再到镜像站找对应的目录。五、yum install扩展场景xdotool、字体包等依赖安装5.1 安装xdotool时暴露的问题xdotool是一个Linux下的命令行自动化工具可以模拟键盘输入、鼠标点击、窗口管理等操作。安装命令看似简单yum install -y xdotool但实际执行时会发现这个包依赖了libX11、libXtst、libXinerama等一系列X Window相关的开发库和运行时库。如果你的服务器是最小化安装没有图形界面这些依赖包基本都没装过。yum的处理方式是自动分析这些依赖并一并下载安装。执行过程中你会看到类似这样的输出Installing: xdotool x86_64 ... Installing for dependencies: libX11 x86_64 ... libXinerama x86_64 ... libXtst x86_64 ...这个过程很顺畅因为yum自动完成了依赖处理。但如果你用的是rpm直接安装没有手动解决依赖就会看到一连串的error: Failed dependencies错误。那么问题来了如果某个依赖包在配好的源里找不到怎么办yum会报冲突或者不支持的错误这时就需要临时添加一个包含这个依赖的源。比如有些包只存在于EPEL源中就需要先安装epel-release。基本排查思路是先用yum deplist xdotool查看依赖列表然后用yum provides 库名 查找哪个包提供了这个库再确认该包属于哪个源。如果所有源里都找不到就要考虑加新源。5.2 字体包安装yum install fontconfig mkfontscale还有一个和wget无关但与yum使用习惯有关的场景安装中文字体配置。命令yum install -y fontconfig mkfontscalefontconfig是字体配置和管理库mkfontscale是生成字体索引的工具。在构建服务器需要渲染图片、导出PDF或者跑自动化测试需要截图时这两个包是常用的。这个命令的坑在于如果系统源配置有问题它的报错信息和装wget时几乎一样——都是metadata下载失败或者No package fontconfig available。所以诊断思路完全一致。还有一个字体相关的经验安装完fontconfig后还不能直接用中文字体还需要再装字体文件。比如yum install -y wqy-microhei-fonts wqy-zenhei-fonts或者直接把Windows下的中文字体文件拷贝到 /usr/share/fonts/ 目录下然后执行fc-cache -fv刷新字体缓存。这套操作以后做服务器端图片渲染、PDF生成、OCR验证时经常会用到。六、yum update、批量部署和源管理的进阶玩法6.1 yum update的合理使用与排除策略yum update -y 这条命令在运维圈里争议很大。有人信奉上线后及时打补丁有人坚持能不动就不动。我的态度是非必要不全员更新。除非有明确的安全公告或者功能需求否则不要在生产环境上无脑执行yum update -y。一次全员更新可能引入几百个新版本包每个新版本都可能改变现有行为导致服务异常。如果确实需要更新可以用排除参数控制更新范围yum update -y --excludekernel*,glibc*这条命令更新所有可更新的软件包但排除内核和glibc这两个风险极高的组件。内核更新可能导致重启后兼容性问题glibc几乎所有的软件都依赖它更新出问题直接让整个系统崩掉。--exclude参数还支持多个关键词用逗号分隔比如--excludekernel*,glibc*,php*。计划任务中也可以加上这个参数yum update -y --excludekernel* /var/log/yum-update.log 21确保计划任务执行时输出到日志文件方便回溯。6.2 批量服务器安装wget的标准操作流程当你需要在上百台服务器上统一安装wget时逐台登录执行yum install显然不现实。推荐的做法是用ansible批量执行。假设你已经配置好了ansible的inventory执行ansible all -m yum -a namewget statepresent或者写一个简单的playbook- hosts: all tasks: - name: Install wget yum: name: wget state: present这个playbook会在所有目标主机上执行yum安装。ansible的yum模块底层就是调用的yum命令但帮你省掉了SSH登录、执行命令、检查结果的全套手工操作。批量部署时还有一个细节值得注意first-time安装的服务器建议先做好源配置的标准化。用ansible统一分发repo文件把阿里云源或者本地源配置到所有机器上然后统一清理缓存、更新元数据最后再批量安装软件包。这个顺序有讲究。如果源配置不统一就批量装包很可能出现一部分机器成功、一部分机器失败的混乱局面。到时候排查哪台机器是什么原因失败的比多花十分钟统一配置要费时得多。6.3 用reposync做源镜像前面说到批量下载rpm包那是针对特定软件包的小规模离线部署。如果你需要为整个机房搭建一个内网yum源那么reposync就是更合适的工具。reposync可以把远端yum仓库的所有软件包同步到本地配合createrepo命令生成元数据本地就能形成一个完整的yum仓库。基本用法reposync -r base -p /data/yum-repos/centos/7/ createrepo /data/yum-repos/centos/7/同步完成后内网其他机器上的repo文件可以指向这台服务器[base] nameLocal CentOS 7 Base baseurlhttp://your-server-ip/yum-repos/centos/7/ enabled1 gpgcheck0这样内网所有机器安装软件的速度都能达到局域网速度几百MB到几GB的软件包同步都是秒级完成。创建本机镜像仓库的命令是createrepo如果系统里没有先用yum install -y createrepo安装上。6.4 常见问题速查表把上面提到的常见问题汇总一下问题现象可能原因排查命令解决方式errors during downloading metadata网络不通/源地址错误/防火墙拦截curl -I 测试源地址更换可用镜像源或修正repo配置No package wget available仓库为空/未启用/元数据过期yum repolist查看仓库状态清理缓存、启用仓库、确认源路径正确找不到xdotool包软件不在当前repo中yum search xdotool安装EPEL源或其他第三方源镜像源访问超时网络链路慢/源不稳定curl -I 测试切换到其他国内镜像源rpm安装报依赖错误手动安装未处理依赖rpm -qpR package.rpm改用yum安装并启用完整源系统无repo文件精简安装/定制系统ls /etc/yum.repos.d/手动创建repo配置这张表是多年排障经验的浓缩。遇到问题先对照表格快速排查通常能在几分钟内定位根因。七、一些实操中的体会在实际操作中我发现很多人在yum装wget失败后第一反应是重装系统或者换发行版而不是静下心来排查源的问题。这是一个非常消耗时间的选择。大多数情况下yum安装失败的根因就集中在源配置、网络连通性、元数据缓存这三个点上挨个排查一遍就能解决。还有一个小技巧值得分享在 /etc/yum.conf 里配置proxy可以解决某些内网环境的访问问题。如果你的服务器只能通过HTTP代理访问外网在yum.conf里加上proxyhttp://proxy-ip:port proxy_usernamexxx proxy_passwordxxx这个配置对所有仓库生效不需要每个repo文件单独设置。但注意如果内网有本地源本地源走file协议不会经过代理不受影响。另外建议每次修改repo文件后都养成立刻clean all和makecache的习惯。很多人改了repo文件但忘了清理缓存结果新源不生效还以为是自己改错了。这个习惯能帮你省掉很多无谓的排查时间。最后再提一句wget本身装好之后日常下载我一般用wget加 -c 参数做断点续传加 -t 3 设置重试次数防止网络抖动导致下载失败。下载大文件时配合nohup把任务丢到后台然后定期检查日志这个组合是效率最高的一套操作。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。