我有一个wget
命令:
wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/
但它只适用于较新版本的wget
。不幸的是,我有一个较旧版本的wget
(基于 darwin14.3.0 构建的 GNU Wget 1.15),无法升级它。具体来说,是wget
--show-progress
无法识别的选项。
我想知道是否有等效的命令curl
? 我的系统上的版本curl
是 7.37.1 (x86_64-apple-darwin14.0)。
答案1
但它只适用于较新版本的
wget
。不幸的是,我有一个较旧版本的wget
(基于 darwin14.3.0 构建的 GNU Wget 1.15),无法升级它。具体来说,是wget
--show-progress
无法识别的选项。
根据我对 how curl
works 和 how wget
works 的了解,它们表面上可能看起来相同,但在 中没有等效的wget
递归功能curl
。要在 中执行此类操作,curl
需要一些花哨的 Bash 脚本来包装curl
命令。
所以当你说无法升级时wget
,你到底是什么意思?由于wget
是 GNU 工具,它不会随 Darwin(基于 BSD)一起安装,并且通常是从源代码编译的。事实上,你提供的版本详细信息显然是以某种方式从源代码编译的,因为版本是“基于 darwin14.3.0 构建的 GNU Wget 1.15”。因此,如果该版本的wget
安装方式类似于自制,如果您的系统上有 Homebrew,那么您的系统上也应该安装了 Xcode 和相关的命令行工具/编译器,所以这是有希望的。
现在知道了这一点,您应该能够wget
从源代码编译更新版本(例如 1.16.3);绕过 Homebrew 安装版本,只需从您的主目录中执行即可。您没有root
/sudo
访问权限来执行此操作;以下是您可以执行的操作。
从源代码编译wget
。
首先从官方源站点获取压缩档案wget
:
curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz
接下来,像这样解压缩档案:
tar -xzf wget-1.*.tar.gz
现在进入解压后的目录:
cd wget-1.*
运行此configure
命令:
./configure --with-ssl=openssl
如果该configure
命令因某种原因失败,您可能需要添加--with-libssl-prefix
如下值:
./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib
该过程完成后configure
,运行make
:
make
如果运行顺利,那么新编译的 1.16.3 二进制版本wget
就可以供您使用了。
wget
从您的主目录运行新编译的版本。
现在,大多数说明都会说您应该运行sudo make install
以wget
在系统上完全安装。但是,如果您没有root
/sudo
权限(或者您不想升级wget
系统范围内安装的版本),您仍然可以像这样运行刚刚编译的二进制文件。首先,让我们像这样wget
退出源目录:wget
cd ~/
现在只需运行wget
刚刚明确编译的 1.16.3 二进制文件即可确认它正常工作:
~/wget-1.16.3/src/wget --version
输出应该是这样的:
GNU Wget 1.16.3 built on darwin13.4.0.
+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl
Wgetrc:
/usr/local/etc/wgetrc (system)
Compile:
gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc"
-DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib
-DNDEBUG
Link:
gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o
http-ntlm.o ../lib/libgnu.a
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Originally written by Hrvoje Niksic <[email protected]>.
Please send bug reports and questions to <[email protected]>.
这意味着您现在可以开始做生意了!
wget
从您的主目录运行您的命令。
因此,您现在可以wget
像这样运行问题中发布的命令:
~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/
还有一个小调整 — — 但值得注意 — — 就是许多wget
选项都有全名和缩写。因此--no-parent
可以缩写为,-np
使命令如下所示:
~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/
使用后清理。
如果你想删除wget
你刚刚编译的 1.16.3 内容 — — 因为你说你正在使用的计算机不是你的 — — 那么只需删除wget
你刚刚使用的源文件,如下所示:
rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3