Wie benenne ich die heruntergeladene Datei mit wget um?

78

Um die SOFA-Statistik vom Server herunterzuladen, verwende ich den Befehl wget:

wget -c http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Der Dateiname der heruntergeladenen Datei lautet in diesem Fall download?source=files. Wenn ich --output-documentdem Befehl die Option hinzufüge , die Ausgabedatei umzubenennen sofastatistics-latest.deb, wird das Format der heruntergeladenen Datei vom dpkg-Paket nicht erkannt.

dpkg-deb: error: `sofastatistics-latest.deb' is not a debian format archive

Wie benenne ich die heruntergeladene Datei mit wget richtig um?

UPDATE - 08. Januar 15

Mit dem angegebenen Link ist die heruntergeladene Datei immer eine * .tar.gz. Um es mit dem richtigen Namen zu erhalten, fügen Sie einfach die folgende --content-dispositionOption hinzu (danke an @ 6EQUJ5!):

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Aber ich brauchte eine * .deb-Datei, also war hier richtig die @creaktive, ich musste nach einem * .deb-Dateilink suchen.

Vielen Dank an alle für die Antworten!

Iurie Malai
quelle
2
Wenn dpkg das sagt, ist es wirklich kein Debian-Archiv ... Was filesagt das aus?
fge
Die von Ihnen erwähnte URL ist eine HTML-Seite.
Salman A
Ich denke, Sie haben die falsche Antwort akzeptiert.
user83039
@ user83039 Es ist nicht falsch, es ist teilweise, aber Sie haben Recht, ich darf diese Antwort nicht als die richtige akzeptieren.
Iurie Malai
1
Ich habe festgestellt, dass --trust-server-nameses für meine Zwecke besser geeignet ist. Siehe auch diese doppelte Frage SO und die gleiche Frage auf Unix.SE .
Adam Katz

Antworten:

110

Eine Umleitung der Standardausgabe in einen beliebigen Dateinamen funktioniert immer. Du machst es richtig, wie man sagt, mit -O

wget http://www.kernel.org/pub/linux/kernel/README -O foo
--2013-01-13 18:59:44--  http://www.kernel.org/pub/linux/kernel/README
Resolving www.kernel.org... 149.20.4.69, 149.20.20.133
Connecting to www.kernel.org|149.20.4.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12056 (12K) [text/plain]
Saving to: `foo'

100%[======================================================================================================================================>] 12,056      --.-K/s   in 0.003s  

2013-01-13 18:59:45 (4.39 MB/s) - `foo' saved [12056/12056]

In der Tat müssen Sie einen HTML-Code in Ihrer Datei haben (kann normalerweise mit einer Man-Datei überprüft werden ).

[BEARBEITEN]

In Ihrem Fall erhält der Client 302 Found (Sie können dies mit der URL curl -v überprüfen ).

Die folgende Locke macht den Trick, indem sie die 3xx respektiert:

$ curl -L http://sourceforge.net/projects/sofastatistics/files/latest/download?source=files -o foo.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   463    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100 2035k  100 2035k    0     0   390k      0  0:00:05  0:00:05 --:--:-- 1541k
$ file foo.deb 
foo.deb: gzip compressed data, was "sofastats-1.3.1.tar", last modified: Thu Jan 10 00:30:44 2013, max compression

Es sollte eine ähnliche Option für wget geben, um HTTP-Weiterleitungen zu tolerieren.

Yauhen Yakimovich
quelle
23

Wenn Sie denselben Download von einem Webbrowser ausführen und feststellen, dass der Browser die Datei tatsächlich korrekt benennt, können Sie die --content-dispositionOption verwenden, um wget dasselbe Verhalten zu geben:

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Meine Debian-Manpage meldet dies als "experimentelle" Funktion, aber ich kann mich nicht erinnern, dass es bei mir nicht funktioniert hat:

       --content-disposition
           If this is set to on, experimental (not fully-functional) support for "Content-Disposition" headers is enabled. This can currently result in extra round-trips to the server
           for a "HEAD" request, and is known to suffer from a few bugs, which is why it is not currently enabled by default.

           This option is useful for some file-downloading CGI programs that use "Content-Disposition" headers to describe what the name of a downloaded file should be.
6EQUJ5
quelle
1

Dieser Link verweist auf einen Redirector, nicht auf das endgültige Ziel! Sie laden also HTML herunter und benennen es in um .deb. Die überfüllte Seite hat dies oben:

Ihr Download startet in 0 Sekunden ... Probleme mit dem Download? Bitte benutzen Sie diesen direkten Link oder versuchen Sie es mit einem anderen Spiegel .

Nun, dies ist ein gültiger Link ( man beachte das downloadPräfix): http://downloads.sourceforge.net/project/sofastatistics/sofastatistics/1.3.1/sofastats-1.3.1-1_all.deb?r=http%3A%2F % 2Fsourceforge.net% 2Fprojects% 2Fsofastatistics% 2Ffiles% 2Fsofastatistics% 2F1.3.1% 2F & ts = 1358119361 & use_mirror = ufpr

Übergeben Sie diese URL an wget. Beachten Sie außerdem, dass SourceForge versucht, Sie zu überlisten, indem es das Betriebssystem über die User-Agent-Zeichenfolge hostet. Die beste Vermutung für "wget" scheint das .tar.gz-Paket zu sein. Sie sollten also genauer sein und die Deb-Datei anfordern!

kreativ
quelle
Für diese Software gibt es eine .tar.gz-Version: sourceforge.net/projects/sofastatistics/files/sofastatistics/… Stellen Sie sicher, dass Sie den .deb-Link auswählen!
Kreative