我想在我的bash脚本中从Sourceforge下载最新版本的graphicsmagick
wget -q https://sourceforge.net/projects/graphicsmagick/files/latest/download?source=files -O GraphicsMagick-LATEST.tar.gz
tar -xzvf GraphicsMagick-LATEST.tar.gz
问题是,当我尝试提取tar.gz时,我收到以下错误
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
这意味着脚本没有下载最新的tar.gz而是下载另一种文件类型?
为什么会发生这种情况,我在这里缺少什么?
答案 0 :(得分:1)
我建议:
wget -q -O - ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/GraphicsMagick-LATEST.tar.gz | tar -xzvf -
答案 1 :(得分:1)
忘记我的prevoius答案。问题不在文件中。当您将wget与当前链接一起使用时,您将指向sourceforge页面。您没有下载该文件,但是您正在下载HTML页面。将文件重命名为.html
,您可以看到sourceforge页面的所有代码。
wget -q https://sourceforge.net/projects/graphicsmagick/files/latest/download?source=files -O file.html --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0"
将下载HTML。
您提供的链接会根据您的操作系统将javascript重定向到正确的链接(正如我在其他答案中所述)。但是wget无法执行此javascript代码,因此不会重定向。链接仍然在HTML中。搜索下一个字符串:
Problems with the download? Please use this
在此字符串之后,您可以找到指向上一版本的直接链接:
http://downloads.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.25/GraphicsMagick-1.3.25.tar.gz?r=&ts=1482426819&use_mirror=vorboss
(请注意,如果您使用--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0"
,则该链接适用于tar.gz
,不适用于.rpm
)
因此,您必须每次都下载HTML文件,在HTML中搜索下载链接(使用当前最新版本),并在新的wget
命令中使用它。
答案 2 :(得分:0)
您正在强制将文件重命名为tar.gz扩展名。但该文件的格式不同。实际上,当您直接下载链接时,该文件不是gz文件,而是rpm文件。
您需要直接下载所需的文件:
wget https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.25/GraphicsMagick-1.3.25.tar.gz/download -O GraphicsMagick-LATEST.tar.gz
但是在这里,您要预定义要下载的文件版本。