我经常从sourceforge.net下载带有wget的tarball。
然后将下载的文件命名为SQliteManager-1.2.4.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F&ts=1305711521&use_mirror=switch。
当我试图
tar xzf SQliteManager-1.2.4.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F\&ts\=1305711521\&use_mirror\=switch我收到以下错误消息:
tar (child): Cannot connect to SQliteManager-1.2.4.tar.gz?r=http: resolve failed
gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting now在将文件重命名为foo.tar.gz之后,提取工作非常完美。
是否有一种方法,在提取之前不强制每次重命名目标文件?
发布于 2011-05-18 10:58:56
您所看到的错误的原因可以在文档中找到:
如果存档文件名包含冒号(‘:’),则假定它是另一台计算机...上的文件
也就是说,它将SQliteManager-1.2.4.tar.gz?r=http解释为主机名,并试图将其解析为IP地址,因此出现了“解决失败”错误。
同样的文件还说:
如果您需要使用名包含冒号的文件,则可以使用“-force-local”选项来抑制远程磁带驱动器行为。
发布于 2011-05-18 09:55:52
使用wget下载时,使用-O选项指定输出文件名。
wget "http://domain.com/file.tgz?crazy=args&stuff=todelete" -O file.tgz这将导致使用给定文件名保存文件,并为您省去麻烦或重命名它。不,你并不是唯一一个希望源库不会愚蠢到发送带有url参数的文件的人。
发布于 2011-05-18 09:59:02
下载使用
wget --trust-server-names URL这样wget将使用正确的文件名保存。默认情况下,它使用URL中的最后一个组件
为例
wget --trust-server-names http://sourceforge.net/projects/sqlitemanager/files/sqlitemanager/1.2.4/SQliteManager-1.2.4.tar.gz/downloadhttps://unix.stackexchange.com/questions/13377
复制相似问题