1

У меня есть команда 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 (GNU Wget 1.15, построенная на darwin14.3.0), и я не могу ее обновить. В частности, это опция wget --show-progress которая не распознается.

Мне интересно, есть ли эквивалентная команда для curl? Версия curl в моей системе - 7.37.1 (x86_64-apple-darwin14.0).

1 ответ1

2

Но это работает только в более новых версиях wget . К сожалению, у меня есть более старая версия wget (GNU Wget 1.15, построенная на darwin14.3.0), и я не могу ее обновить. В частности, это опция wget --show-progress которая не распознается.

Исходя из того, что я знаю о том, как работает curl и как работает wget , они могут показаться внешне одинаковыми, но в wget нет эквивалента рекурсивной функциональности curl . Для того, чтобы сделать что-то подобное в curl нужно использовать некоторые сценарии Bash, чтобы обернуть команду curl .

Итак, когда вы говорите, что не можете обновить wget , что именно вы имеете в виду? Поскольку wget - это инструмент GNU, он не устанавливается вместе с Darwin (на основе BSD) и часто компилируется из исходного кода. Фактически предоставленные вами сведения о версии явно каким-то образом скомпилированы из исходных текстов, поскольку версия «GNU Wget 1.15 построена на darwin14.3.0». Поэтому, если эта версия wget была установлена с помощью чего-то вроде Homebrew , есть надежда, поскольку, если 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

Если это работает правильно, то новая версия скомпилированного двоичного файла wget 1.16.3 готова для использования.

Запуск только что скомпилированной версии 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 <hniksic@xemacs.org>.
Please send bug reports and questions to <bug-wget@gnu.org>.

Что означает, что вы сейчас в бизнесе!

Запустите команду 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .