【问题标题】:Capistrano gzip: stdin: unexpected end of file interruptionCapistrano gzip:标准输入:文件中断意外结束
【发布时间】:2011-12-21 13:12:42
【问题描述】:

我遇到了 Capistrano 部署问题。部署过程因 Gzip 错误而被删除。

会是什么?

 cap flow deploy 

* executing `flow' 
* executing `deploy' 
* executing `deploy:update' 
** transaction: start 
* executing `deploy:update_code' 
* getting (via checkout) 
revision to /tmp/20111214204507 
executing locally: cp -R . /tmp/20111214204507 
c    ommand finished in 413ms 
compressing /tmp/20111214204507 to /tmp/20111214204507.tar.gz 
executing locally: tar chzf 20111214204507.tar.gz 20111214204507 
command finished in 2419ms 
servers: ["10.11.10.10"] 
Password: ** sftp upload /tmp/20111214204507.tar.gz -> /tmp/20111214204507.tar.gz 
[10.11.10.10] /tmp/20111214204507.tar.gz 
[10.11.10.10] done * sftp upload complete * executing "cd /home/tieto/dvs_production/releases && tar xzf /tmp/20111214204507.tar.gz && rm /tmp/20111214204507.tar.gz" 
servers: ["10.11.10.10"] 
[10.11.10.10] executing command 
[err :: 10.11.10.10] 
[err :: 10.11.10.10] gzip: 
[err :: 10.11.10.10] stdin: unexpected end of file 
[err :: 10.11.10.10] tar: 
[err :: 10.11.10.10] Child returned status 1 
[err :: 10.11.10.10] 
[err :: 10.11.10.10] tar: 
[err :: 10.11.10.10] Error exit delayed from previous errors 
[err :: 10.11.10.10] 
command finished in 62ms 
[deploy:update_code] rolling back * executing "rm -rf /home/flow/production/releases/20111214204507; true" 
servers: ["10.11.10.10"] 
[10.11.10.10] executing command 
command finished in 69ms 
failed: "sh -c 'cd /home/flow/production/releases && tar xzf /tmp/20111214204507.tar.gz && rm /tmp/20111214204507.tar.gz'" on 10.11.10.10

【问题讨论】:

    标签: ruby-on-rails ruby capistrano


    【解决方案1】:

    答案就在这里,如果您或其他尝试本地部署的人仍然遇到此问题: http://f3internet.com/articles/2010/06/18/deploying-static-sites-with-capistrano/

    [10.11.10.10] done * sftp upload complete * executing "cd /home/tieto/dvs_production/releases && tar xzf /tmp/20111214204507.tar.gz && rm /tmp/20111214204507.tar.gz" 这一行试图同时解压和删除临时副本。

    解决方法是在同一台机器上定义本地/远程复制目录:

    set :copy_dir, "/home/#{local_user}/tmp"
    set :remote_copy_dir, "/tmp"
    

    【讨论】:

    • 我发现只需要设置copy_dir,并且可以在命令行上完成,所以我不需要为部署到同一台机器的边缘情况修改部署文件:cap部署 -s copy_dir='/not/tmp'
    【解决方案2】:

    通常这是三件事中的一件:

    1. 错误/损坏的 gzip 文件
    2. 尝试以不同于打包方式的方式提取文件
    3. microsoft 行在您应用中的文件内结束 (\r\n)

    我的钱在第三个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2016-08-05
      • 2018-01-23
      • 2020-07-10
      相关资源
      最近更新 更多