使用Chef Knife的Windows命令行tar“无法连接到d:resolve failed”

时间:2012-10-10 15:54:02

标签: command-line gzip tar chef

使用Windows命令行安装cygwin,chef和ruby。在尝试时

knife cookbook site install mysql

返回以下错误

Begin output of tar zxvf D:/path/to/chef-repo/cookbooks/mysql.tar.gz  
STDOUT:  
STDERR: tar<child>: Cannot connect to D: resolve failed  
gzip: stdin: undexpected end of file  
tar: Child returned status 128  
tar:  Error is not recoverable: exiting now</code>

我该如何解决这个问题?我可以使用

手动解压缩
tar zxvf mysql.tar.gz  

但这不太理想。我相信这与colon in filename有关,但我怎样才能在刀具或厨师偏好中改变它?

3 个答案:

答案 0 :(得分:16)

原因是tar将文件名中的冒号(:)解释为意味着它是另一台机器上的文件。您可以使用标记--force-local

禁用此行为

这来自here的答案。

答案 1 :(得分:5)

我不知道一个完整的答案,但最近在Linux机器上已经看到了这个问题:

$ date > today
$ tar -czf - today > to:day.tgz
$ tar -tzf to:day.tgz
ssh: connect to host to port 22: Connection refused
tar (child): to\:day.tgz: Cannot open: Input/output error
tar (child): Error is not recoverable: exiting now

gzip: stdin: unexpected end of file
tar: Child returned status 2
tar: Error is not recoverable: exiting now
$ tar -tzf - < to:day.tgz 
today
$ 

似乎tar想要进行某种远程文件处理,因为文件名中有冒号,你可以通过使用某种形式的重定向或管道来伪造它 - 用于读取和写入tarball 。我仍然希望找到一个选项或某事告诉tar不要这样做。

答案 2 :(得分:0)

如果从cmd运行,tar命令会起作用吗?如果输出是本地驱动器也是如此。还有别的尝试,

tar zxvf "D:/path/to/chef-repo/cookbooks/mysql.tar.gz"