资讯动态

Mac安装curl与wget指南:Homebrew与源码编译全解析

发布时间:2026/8/15 5:09:40 来源:尧图企业网站定制
1. 为什么Mac用户需要手动安装curl和wget如果你刚接触Mac可能会觉得奇怪我的终端明明可以运行curl命令为什么还要“安装”它而wget这个在Linux世界里几乎人手一个的工具在Mac的终端里敲下去却只会得到一个“command not found”的冷冰冰提示。这背后其实反映了苹果对于开发者工具链的一种独特设计哲学也引出了我们今天要解决的核心问题。首先关于curl。macOS确实预装了它而且版本通常与系统深度绑定。你可以在终端输入curl --version查看它很可能是一个比较老的版本例如随系统发布的curl 7.64.1。这个预装版本对于完成基本的HTTP/HTTPS请求、下载文件等任务来说是足够的。但是如果你需要用到一些新特性比如HTTP/3支持、更现代的TLS库、或者某些特定的协议扩展或者你遇到了一个只在较新curl版本中修复的Bug那么系统自带的版本就显得力不从心了。更重要的是系统自带的curl链接的是苹果自己的SSL/TLS库Secure Transport而非业界更通用的OpenSSL或LibreSSL这在某些特定场景下比如需要与使用OpenSSL的服务端进行非常规交互时可能会带来兼容性问题。因此通过包管理器安装一个新版本的、功能更全的curl是很多深度开发者的常见操作。而wget的情况则简单直接得多苹果从未在macOS中预装过它。wget以其强大的递归下载、断点续传、镜像网站等功能著称是系统管理、数据抓取和备份的利器。没有它在Mac上进行一些批量下载任务会变得非常不便。所以为Mac安装wget几乎是每个从Linux环境切换过来的用户或者需要处理网络任务的开发者要做的第一件事。那么安装它们的最佳路径是什么在Mac生态中答案非常明确Homebrew。Homebrew是macOS上事实标准的包管理器它就像Ubuntu的apt、CentOS的yum一样能让你以最简单、最统一的方式安装、更新和管理成千上万的命令行工具和桌面应用。通过Homebrew安装的软件会被集中管理在/usr/local在Apple Silicon Mac上是/opt/homebrew目录下与系统自带的软件完全隔离避免了污染系统目录也使得卸载和升级变得异常轻松。因此本文的核心将围绕如何使用Homebrew来安装和管理curl与wget并深入探讨其中的细节、替代方案以及你可能遇到的坑。2. Homebrew的安装与基础配置搭建高效软件管理环境在开始安装curl和wget之前我们必须先准备好它们的“安装器”——Homebrew。如果你的Mac上还没有Homebrew那么安装它是第一步也是最关键的一步。2.1 安装Homebrew官方脚本与国内镜像Homebrew的官方安装命令非常简洁就是一行curl命令看系统自带的curl在这里派上了用场/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)这行命令做了以下几件事使用系统自带的curl以-f失败时静默、-s静默模式、-S错误时显示、-L跟随重定向参数下载位于GitHub上的安装脚本。将下载的脚本内容通过管道|传递给/bin/bash来执行。然而由于网络原因直接从GitHub拉取安装脚本和核心仓库Tap的速度可能非常慢甚至失败。因此对于国内用户强烈建议使用国内镜像源进行安装。国内高校和企业维护的镜像站能极大提升安装和后续更新的速度。以使用中科大USTC镜像为例更可靠的安装步骤通常是# 首先确保能访问raw.githubusercontent.com如果不行可能需要先配置hosts或使用其他网络环境。 # 然后执行安装脚本但脚本中会询问是否使用镜像可以选择使用中科大镜像。 # 或者直接使用国内开发者提供的安装脚本如brew.sh脚本的国内加速版但需注意脚本来源的安全性。 # 一个常见且相对安全的方法是先手动设置环境变量再运行官方脚本 export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.ustc.edu.cn/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.ustc.edu.cn/homebrew-core.git export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.ustc.edu.cn/homebrew-bottles /bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)在安装过程中脚本会提示你它将要执行的步骤并可能要求你输入密码以授权创建必要的目录如/usr/local或/opt/homebrew。对于Apple Silicon (M1/M2/M3) MacHomebrew默认会安装到/opt/homebrew目录这是为了与英特尔Mac的/usr/local区分避免架构混乱。安装完成后脚本会输出几行重要的提示告诉你需要将Homebrew的可执行文件路径添加到你的shell配置文件如~/.zshrc或~/.bash_profile中。对于Apple Silicon Mac和默认使用zsh的现代macOS通常是echo eval $(/opt/homebrew/bin/brew shellenv) ~/.zshrc source ~/.zshrc执行完source命令后你就可以在终端中使用brew命令了。可以通过brew --version来验证安装是否成功。2.2 配置Homebrew使用国内镜像源已安装用户如果你已经安装了Homebrew但觉得更新或安装软件太慢可以事后更换为国内镜像源。这里以中科大镜像为例# 替换brew.git仓库 cd $(brew --repo) git remote set-url origin https://mirrors.ustc.edu.cn/brew.git # 替换homebrew-core.git仓库 cd $(brew --repo)/Library/Taps/homebrew/homebrew-core git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git # 对于Apple Silicon Mac还需要设置bottles镜像二进制预编译包 echo export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.ustc.edu.cn/homebrew-bottles ~/.zshrc source ~/.zshrc # 更新brew本身确保配置生效 brew update注意不同镜像站的地址可能不同还有清华镜像Tuna等选择。更换后如果遇到某些特别新的软件包镜像同步延迟可以暂时注释掉相关环境变量换回官方源进行安装。完成Homebrew的安装和基础配置后我们的软件管理环境就搭建好了。接下来就可以用它来轻松安装我们需要的工具。3. 使用Homebrew安装与管理curl和wget有了Homebrew安装curl和wget就变成了两行简单的命令。但在这简单的背后有一些细节值得深入探讨。3.1 安装wget直接了当安装wget是最简单的因为系统没有预装Homebrew会直接为你安装最新版本brew install wget执行这个命令后Homebrew会从你配置的镜像源或官方源查找wget的Formula安装配方。解析依赖wget依赖于openssl3或libressl等来支持HTTPS。下载对应的bottle预编译好的二进制包或者如果没有bottle则在本地从源码编译。将wget及其依赖安装到Homebrew的Cellar酒窖即安装目录中并在/opt/homebrew/bin或/usr/local/bin下创建符号链接。安装完成后在终端输入wget --version你应该能看到版本信息确认安装成功。现在你就可以使用wget的所有功能了例如递归下载整个目录wget -r -np -nH --cut-dirs1 https://example.com/some/path/3.2 安装curl处理与系统命令的冲突安装curl则稍微复杂一点因为系统已经有一个了。如果你直接运行brew install curlHomebrew同样会为你安装最新版本。但是安装后你会发现在终端输入curl --version显示的很可能还是系统自带的旧版本。这是因为在默认情况下你的终端PATH环境变量中系统路径/usr/bin排在Homebrew的路径/opt/homebrew/bin之前。当你输入curl时系统会优先找到/usr/bin/curl。要使用Homebrew安装的新版curl你有以下几种选择方案一使用完整路径最直接但不方便的方法是直接使用Homebrew版curl的完整路径/opt/homebrew/bin/curl --version方案二创建别名Alias在你的shell配置文件如~/.zshrc中为Homebrew的curl设置一个别名例如bcurlalias bcurl/opt/homebrew/bin/curl这样你就可以通过bcurl命令来调用新版本了。但这意味着你需要改变使用习惯。方案三调整PATH顺序不推荐你可以修改PATH将Homebrew的路径放在系统路径前面。但这可能会影响其他依赖于系统自带命令的脚本风险较高。方案四让Homebrew帮你链接推荐Homebrew提供了一个更优雅的解决方案brew link命令。但直接运行brew link curl可能会失败因为/usr/bin下的文件受系统保护SIP。Homebrew的curlformula通常默认不会强制链接到/usr/local/bin来覆盖系统命令。实际上更常见的做法是接受这种共存。Homebrew安装的curl就在/opt/homebrew/bin/curl你可以通过上述别名方式使用或者在一些脚本中显式指定路径。大多数情况下系统自带的curl已经能满足日常需求只有在需要新特性时才使用Homebrew版本。如果你确实需要让curl命令默认指向Homebrew版本并且理解潜在风险可以尝试在安装时使用--force选项进行链接但这需要先解除相关文件的只读属性操作较为复杂且可能影响系统稳定性一般不建议普通用户这样做。一个更安全的方法是安装一个名字不同的包。但curl就是curl没有替代名。因此对于curl我个人的建议是除非你有明确需求必须使用新版curl的特定功能否则可以不必通过Homebrew安装它直接使用系统自带版本即可。如果需要就通过别名或完整路径来使用Homebrew版。相比之下wget因为没有冲突安装后即可直接使用体验是无缝的。3.3 验证安装与版本管理安装完成后进行验证是一个好习惯# 验证wget which wget # 应显示 /opt/homebrew/bin/wget 或 /usr/local/bin/wget wget --version # 验证curl (Homebrew版) which curl # 可能仍显示 /usr/bin/curl /opt/homebrew/bin/curl --version # 查看Homebrew安装的版本Homebrew的强大之处还在于版本管理。如果你想安装某个特定版本的wget可以先用brew search wget查看有哪些版本可用然后用brew install wgetversion安装。软件更新也很简单brew update # 更新Homebrew自身和所有Formula列表 brew upgrade # 升级所有已安装的软件包 brew upgrade wget # 仅升级wget如果你想卸载它们brew uninstall wget brew uninstall curl卸载命令会移除该软件包但通常不会自动删除配置文件如果有的话一般在~/.config或软件自身目录下。4. 源码编译安装深入理解与绝对控制虽然Homebrew是首选但了解如何从源码编译安装curl和wget能让你在遇到特殊情况比如Homebrew没有提供某个特定版本、你需要进行深度定制、或者你在一个没有包管理器的环境中时游刃有余。这个过程也是理解软件构建流程的绝佳实践。4.1 源码编译wget我们从wget开始因为它不依赖系统已有版本。第一步获取源码访问GNU wget的官方仓库或镜像站下载源码包。通常推荐使用稳定版Stable Release。你可以使用系统自带的curl来下载cd ~/Downloads # 切换到下载目录 curl -O https://ftp.gnu.org/gnu/wget/wget-1.21.4.tar.gz # 请替换为最新稳定版本号第二步解压与配置tar -xzf wget-1.21.4.tar.gz cd wget-1.21.4在编译之前我们需要运行configure脚本。这个脚本会检查你的系统环境确认是否具备所有必需的依赖库如openssl、libidn2并生成适合你系统的Makefile。./configure --prefix/usr/local/wget-1.21.4 # --prefix指定安装目录--prefix参数至关重要它指定了软件最终安装的根目录。将其设置为/usr/local下的一个特定子目录是一种非常清晰的管理方式便于后续查找和卸载。如果遇到错误提示缺少openssl开发库你需要先安装它。在macOS上最方便的方式仍然是使用Homebrewbrew install openssl。安装后configure脚本可能仍找不到你需要明确指定其路径./configure --prefix/usr/local/wget-1.21.4 --with-sslopenssl CPPFLAGS-I/opt/homebrew/opt/openssl3/include LDFLAGS-L/opt/homebrew/opt/openssl3/lib这里CPPFLAGS和LDFLAGS分别告诉编译器头文件和库文件的位置路径请根据你实际安装的openssl版本调整。第三步编译与安装配置成功后就可以开始编译了。make # 此过程可能持续几分钟取决于电脑性能编译无误后进行安装sudo make install # 因为安装到/usr/local通常需要sudo权限第四步创建软链接可选安装后可执行文件位于/usr/local/wget-1.21.4/bin/wget。为了方便使用可以将其链接到/usr/local/bin该目录通常在PATH中sudo ln -sf /usr/local/wget-1.21.4/bin/wget /usr/local/bin/wget现在在任何位置都可以直接使用wget命令了。4.2 源码编译curl编译curl的过程与wget类似但依赖更多功能选项也更复杂。第一步获取源码从curl官网或GitHub发布页下载。cd ~/Downloads curl -O https://curl.se/download/curl-8.8.0.tar.gz # 请替换为最新版本 tar -xzf curl-8.8.0.tar.gz cd curl-8.8.0第二步配置与解决依赖curl支持数十种协议依赖众多库。一个支持HTTPS的基础配置可能如下./configure --prefix/usr/local/curl-8.8.0 --with-openssl/opt/homebrew/opt/openssl3同样你需要确保openssl等开发库已安装。curl的configure脚本有大量选项./configure --help查看你可以按需启用/禁用协议如--with-libssh2、--with-nghttp2。第三步编译与安装make sudo make install第四步处理与系统curl的共存编译安装后你的新curl位于/usr/local/curl-8.8.0/bin/curl。为了避免覆盖系统命令强烈建议不要将其链接到/usr/bin或/usr/local/bin的前置路径中。可以采用以下策略使用别名在~/.zshrc中添加alias mycurl/usr/local/curl-8.8.0/bin/curl。使用自定义路径将自定义的bin目录如~/mybin加入PATH并将新curl的软链接放在那里。临时覆盖在需要时使用完整路径。源码编译的意义与代价从源码编译让你获得了绝对的控制权你可以选择编译选项、优化级别、链接的库版本。这对于调试、定制化或为特定环境如交叉编译构建二进制文件至关重要。然而代价是过程繁琐需要手动解决依赖并且失去了Homebrew自动管理的便利性如自动更新、依赖解析、清理等。对于日常使用Homebrew无疑是更优选择。5. 高级应用、问题排查与替代方案安装好工具只是开始让它们在各种场景下稳定工作并解决可能遇到的问题才是真正的挑战。5.1 curl与wget的典型应用场景对比虽然两者都用于网络数据传输但侧重点不同curl更偏向于与API交互、测试HTTP请求、传输数据。它支持更多的协议超过20种功能更像一个强大的“瑞士军刀”可以详细显示请求/响应头、支持表单上传、Cookie管理、代理等且默认将输出打印到标准输出stdout。# 测试API端点并只显示HTTP状态码 curl -s -o /dev/null -w %{http_code}\n https://api.example.com/health # 发送带JSON体的POST请求 curl -X POST -H Content-Type: application/json -d {key:value} https://api.example.com/datawget更偏向于下载文件特别是递归下载和网站镜像。它的设计是“非交互式”的适合脚本中自动下载默认将下载内容保存到文件并支持断点续传-c。# 下载文件并指定保存文件名 wget -O latest.tar.gz https://example.com/path/to/file.tar.gz # 递归下载网站限制深度并转换为本地浏览格式 wget -r -l 2 -k -p https://example.com/docs/5.2 常见问题与排查指南Homebrew安装失败或极慢现象brew install卡在Updating Homebrew...或下载阶段。排查首先ping raw.githubusercontent.com检查连通性。如果延迟高或丢包就是网络问题。解决如前所述更换国内镜像源是最有效的方法。也可以尝试在命令前加环境变量HOMEBREW_NO_AUTO_UPDATE1来跳过自动更新先直接安装HOMEBREW_NO_AUTO_UPDATE1 brew install wget。SSL证书验证错误现象使用curl或wget访问HTTPS网站时报错SSL certificate problem: unable to get local issuer certificate。原因工具无法找到有效的根证书链来验证服务器证书。系统自带的curl使用macOS的钥匙串Keychain而Homebrew安装的版本可能默认使用它自己管理的证书包或者路径没设置对。解决对于Homebrewcurl确保安装了ca-certificates包brew install ca-certificates并确认curl编译时链接了正确的证书路径。可以尝试指定证书包curl --cacert /opt/homebrew/etc/ca-certificates/cert.pem ...。临时绕过仅用于测试不安全curl -k或wget --no-check-certificate。编译curl/wget时找不到openssl现象configure错误提示OpenSSL libraries not found。解决明确指定openssl的安装路径。如果你用Homebrew安装了openssl3那么路径通常是/opt/homebrew/opt/openssl3。在configure时使用--with-ssl/opt/homebrew/opt/openssl3并正确设置CPPFLAGS和LDFLAGS环境变量。命令覆盖与PATH混乱现象输入curl后不确定自己用的是哪个版本。排查使用which curl查看当前生效的是哪个路径下的命令。使用/usr/bin/curl --version和/opt/homebrew/bin/curl --version分别查看版本。解决理解你的PATH变量echo $PATH。如果希望优先使用Homebrew版本可以调整PATH顺序但需谨慎。使用别名是更安全清晰的做法。5.3 其他安装与管理方案简介除了Homebrew和源码编译还有其他选择各有适用场景MacPorts另一个历史悠久的macOS包管理器。与Homebrew哲学不同MacPorts更倾向于构建一个独立于系统的完整环境有时会导致更多的重复依赖。对于普通用户Homebrew的体验更简单、更“Mac”。但如果你需要极致的控制或某些软件只有MacPorts提供可以考虑它。预编译二进制包有些项目会直接提供.pkg安装程序或.dmg磁盘映像。双击安装虽然简单但不利于版本管理和命令行集成通常不是开发者的首选。使用conda/miniconda如果你主要进行Python数据科学工作conda环境也可以管理一些命令行工具。但它的软件包数量远不及Homebrew主要用于Python生态。对于绝大多数macOS用户和开发者而言Homebrew是管理curl、wget以及几乎所有其他命令行工具的最佳选择。它平衡了易用性、强大功能和社区活跃度。源码编译则是你在需要应对边缘情况、进行深度定制或学习软件构建过程时的备选技能。最后无论是使用Homebrew安装还是自己从源码编译关键在于理解工具本身的价值以及它们如何融入你的工作流。curl和wget是连接本地与远程世界的桥梁熟练掌握它们能让你的命令行工作效率提升一个档次。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价