Ich habe einwget
Befehl:
wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/
Aber es funktioniert nur in neueren Versionen von wget
. Leider habe ich eine ältere Version von wget
(GNU Wget 1.15 basierend auf darwin14.3.0) und kann sie nicht aktualisieren. Genauer gesagt ist es die wget
--show-progress
Option, die nicht erkannt wird.
Ich frage mich, ob es einen entsprechenden Befehl gibt fürcurl
? Die Version curl
auf meinem System ist 7.37.1 (x86_64-apple-darwin14.0).
Antwort1
Aber es funktioniert nur in neueren Versionen von
wget
. Leider habe ich eine ältere Version vonwget
(GNU Wget 1.15 basierend auf darwin14.3.0) und kann sie nicht aktualisieren. Genauer gesagt ist es diewget
--show-progress
Option, die nicht erkannt wird.
Basierend auf dem, was ich über die Funktionsweise von curl
und die wget
Funktionsweise von weiß, mögen sie oberflächlich betrachtet gleich erscheinen, aber es gibt kein Äquivalent zur wget
rekursiven Funktionalität in curl
. Um so etwas in zu tun, ist ein schickes Bash-Skript erforderlich, um den Befehl curl
zu umschließen .curl
wget
Was genau meinen Sie also, wenn Sie sagen, dass Sie nicht aktualisieren können ? Da wget
es sich um ein GNU-Tool handelt, wird es nicht mit Darwin (das auf BSD basiert) installiert und wird oft aus dem Quellcode kompiliert. Tatsächlich sind die Versionsdetails, die Sie angegeben haben, eindeutig in irgendeiner Weise aus dem Quellcode kompiliert, da die Version „GNU Wget 1.15, erstellt auf darwin14.3.0“ lautet. Wenn diese Version von also wget
von etwas wie installiert wurdeSelbstgebrautes, besteht Hoffnung, denn wenn Homebrew auf Ihrem System ist, sollten Sie auch Xcode – und die zugehörigen Befehlszeilentools/Compiler – auf Ihrem System installiert haben.
Wenn Sie das nun wissen, sollten Sie in der Lage sein, eine aktualisierte Version wget
– beispielsweise 1.16.3 – aus dem Quellcode zu kompilieren. Dabei umgehen Sie die installierte Homebrew-Version und können sie einfach von Ihrem Home-Verzeichnis aus ausführen. Sie haben hierfür keinen root
/ sudo
-Zugriff. So können Sie es tun.
Kompilieren wget
aus dem Quellcode.
Laden Sie zunächst ein komprimiertes Archiv von einer offiziellen wget
Quellseite herunter:
curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz
Als nächstes entpacken Sie das Archiv wie folgt:
tar -xzf wget-1.*.tar.gz
Gehen Sie nun in das entpackte Verzeichnis:
cd wget-1.*
Führen Sie diesen configure
Befehl aus:
./configure --with-ssl=openssl
Wenn dieser configure
Befehl aus irgendeinem Grund fehlschlägt, müssen Sie möglicherweise einen --with-libssl-prefix
Wert wie diesen hinzufügen:
./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib
Sobald der configure
Vorgang abgeschlossen ist, führen Sie Folgendes aus make
:
make
wget
Wenn dies reibungslos läuft , steht Ihnen eine neu kompilierte Version der Binärdatei 1.16.3 zur Verwendung bereit.
Ausführen der neu kompilierten Version von wget
Ihrem Home-Verzeichnis.
An dieser Stelle würden die meisten Anweisungen sagen, dass Sie ausführen sollten, sudo make install
um die vollständige Installation auf dem System durchzuführen . Aber wenn Sie keine / -Berechtigungen wget
haben – oder die systemweit installierte Version nicht aktualisieren möchten – können Sie die gerade kompilierte Binärdatei trotzdem wie folgt ausführen. Lassen Sie uns zunächst wie folgt aus Ihrem Quellverzeichnis zurückkehren:root
sudo
wget
wget
wget
cd ~/
Führen Sie nun einfach die wget
soeben kompilierte Binärdatei 1.16.3 explizit wie folgt aus, um zu bestätigen, dass sie funktioniert:
~/wget-1.16.3/src/wget --version
Die Ausgabe sollte ungefähr so aussehen:
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]>.
Das bedeutet, Sie sind jetzt im Geschäft!
Ausführen Ihres wget
Befehls von Ihrem Home-Verzeichnis aus.
Sie können den wget
in Ihrer Frage enthaltenen Befehl jetzt wie folgt ausführen:
~/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/
Eine kleine, aber erwähnenswerte Änderung besteht darin, dass viele wget
Optionen vollständige Namen und verkürzte Akronyme haben. Sie --no-parent
können also verkürzt werden, -np
sodass der Befehl folgendermaßen aussieht:
~/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/
Reinigung nach der Verwendung.
Und wenn Sie das gerade kompilierte 1.16.3-Material loswerden möchten wget
– da Sie ja sagen, dass der Computer, an dem Sie arbeiten, nicht Ihnen gehört –, dann löschen Sie einfach die wget
Quelldateien, mit denen Sie gerade gearbeitet haben, wie folgt:
rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3