17

使用安装了 cygwin、chef 和 ruby​​ 的 Windows 命令行。尝试的时候

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  

但这并不理想。我相信这与文件名中的冒号有关,但如何在刀或厨师偏好中更改它?

4

3 回答 3

39

原因是文件名中的tar冒号 ( ) 解释为它是另一台机器上的文件。:您可以使用标志禁用此行为--force-local

这是来自here的答案。

于 2016-06-23T15:45:29.700 回答
4

我不知道一个完整的答案,但最近在 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不要这样做。

于 2014-07-30T14:34:16.647 回答
-1

如果从 cmd 运行,tar 命令会起作用吗?另外,如果输出到本地驱动器怎么办。别的试试这个

tar zxvf "D:/path/to/chef-repo/cookbooks/mysql.tar.gz"
于 2012-10-10T16:42:23.063 回答