Capistrano 错误 tar:这看起来不像 tar 存档

Posted

技术标签:

【中文标题】Capistrano 错误 tar:这看起来不像 tar 存档【英文标题】:Capistrano error tar: This does not look like a tar archive 【发布时间】:2014-02-03 06:40:50 【问题描述】:
 INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
 INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
 INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5]    fatal: Not a valid object name
DEBUG [2dea2fe5]    tar: This does not look like a tar archive
DEBUG [2dea2fe5]    tar: 
DEBUG [2dea2fe5]    Exiting with failure status due to previous errors      

我对两件事感到困惑:

    为什么 Capistrano 在这里运行 git archivegit archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

    为什么tar 失败了?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,直到我意识到我正在从 git 中拉出不存在的分支。

【讨论】:

这样的额头。 第二次遇到你的回答,第二次出现这种情况,感觉很傻! 我很高兴这个问题有这么多的赞成票。至少我不会孤独地失败。 这可能是问题的原因,但并不能真正回答所提出的问题。埃里克似乎没有以这种方式解决他的问题。我会发布一个替代品。回答。 说真的,这可能是我第 42 次做同样的谷歌搜索并阅读这个答案 xD【参考方案2】:

删除 app_name/repo 也为我解决了这个问题。

【讨论】:

每当 cap deploy 出现 repo 问题时,这对我有用,但并非总是如此。【参考方案3】:

当要部署的服务器中的 repo 混乱时,就会发生这种情况。我们谈论的是 Capistrano 默认情况下会放入 /var/www/$application/repo 的裸 git repo(供其他人参考)。

在您的情况下,它没有本地 feature/Capistrano 分支,因此在运行 git archive feature/Capistrano 时,不会向该 | 管道输出任何内容。为了确认,ssh 进入服务器,cd 进入 /home/rails/rails-capistrano/repo,然后运行git branch

    它运行git archive 作为导出所选分支树的一种方式。 git archive “将其写入标准输出”,因此 Capistrano 将其重定向到 tar 以便立即将存档解压缩到新的发布目录中。 (为什么 Capistrano 选择这个而不是 git checkout 让我失望。)

    tar 失败,因为它什么也没收到 d:

我能想到两种可能的解决方案/方法来解决问题:

ssh 进入服务器并手动删除@lugolabs 提到的 repo 文件夹(例如,在您的情况下为 /home/rails/rails-capistrano/repo) 确保服务器的 repo 正在使用您期望的远程(ssh in,cd 到 repo/,然后运行 ​​git remote -v)——您可能只需要在 deploy.rb 中更新您的 :repo_url(并删除存储库/目录)。

【讨论】:

除了删除当前的 repo,我们还有其他方法吗?【参考方案4】:

我认为该文件夹是通过 git pull 填充的,因此它不应该为空。如果您确实看到它是空的,则问题来自 git 而不是 tarball。

我遇到的问题是我的 capistrano deploy.rb 存储库 URL 设置为与我正在从事的项目不同的 URL。为了解决此问题,我还必须登录到服务器并删除 app_name/repo必须缓存原始错误远程 URL 的文件夹。

【讨论】:

对于谷歌搜索的人:还要检查你是否设置了现有的分支!!! ...为我工作:)【参考方案5】:

每当我遇到此错误时,都是因为我的 deploy/environment.rb 文件中指定的分支未检入 git。执行 add / commit / git push origin branch_name,这可能会让事情顺利进行。

【讨论】:

【参考方案6】:

我使用 Bedrock Roots (wordpress) 进行开发,使用 capistrano 进行部署和 git flow。 尝试部署时偶然发现此错误,而在本地 hotfix/x.x.x 分支上。所以我完成了当前(合并更改到开发分支),然后成功部署。

【讨论】:

你明白为什么合并到开发可以解决你的问题吗? 部署其他分支可能会起作用,但问题仍然是为什么您尝试部署的特定分支不起作用?我可能有答案。 @EricFrancis 实际上,我现在这样做了)正如投票答案所述,远程(capistrano 从哪里部署)上不存在修补程序【参考方案7】:

您可以在deploy.rb 上设置您的分支: set :branch, "main"

source

注意:默认分支是master

【讨论】:

以上是关于Capistrano 错误 tar:这看起来不像 tar 存档的主要内容,如果未能解决你的问题,请参考以下文章

Capistrano不会创建版本

Rails 3 -- Bundler/Capistrano 错误

SwiftUI ForEach Binding 编译时错误看起来不像 for-each

Capistrano 与 PostgreSQL,错误:其他用户正在访问数据库

Capistrano在升级ruby版本和puma时重启错误版本的puma

Spring Boot Security:编码密码看起来不像 BCrypt