这个问题快要了我的命,我觉得我已经尝试了一切。
首先,问题是在升级到 Capistrano 3 时开始出现的。Capistrano 现在在部署时在每个命令之前使用 /usr/bin/env,以确保环境设置正确。
当 Capistrano 创建指向必要的共享目录和相应文件的符号链接时,它会尝试以下命令:
/usr/bin/env ln -s /full/path /different/full/path
...然后就出错了:
/usr/bin/env: ln: Too many levels of symbolic links
我意识到这不是 Capistrano 的错,所以我开始通过 ssh 连接到我的服务器并尝试相同的命令来进行故障排除,并且我收到了相同的错误(这至少有利于一致性)。然后我在没有 /usr/bin/env 的情况下尝试相同的命令:
ln -s /full/path /different/full/path
并且有效!!!!也许你能看到我看不到的真正解决方案?
这是 /usr/bin/env 命令的输出:
rvm_bin_path=/home/deployer/.rvm/bin
GEM_HOME=/home/deployer/.rvm/gems/ruby-1.9.3-p392
TERM=xterm-256color
SHELL=/bin/bash
IRBRC=/home/deployer/.rvm/rubies/ruby-1.9.3-p392/.irbrc
SSH_CLIENT=...
OLDPWD=/home/deployer/Sites/example.com
MY_RUBY_HOME=/home/deployer/.rvm/rubies/ruby-1.9.3-p392
SSH_TTY=/dev/pts/0
USER=deployer
LS_COLORS= .....
_system_type=Linux
rvm_path=/home/deployer/.rvm
SSH_AUTH_SOCK=....
rvm_prefix=/home/deployer
MAIL=/var/mail/deployer
PATH=/home/deployer/.rvm/gems/ruby-1.9.3-p392/bin:/home/deployer/.rvm/gems/ruby-1.9.3-p392@global/bin:/home/deployer/.rvm/rubies/ruby-1.9.3-p392/bin:/home/deployer/.rvm/bin:/opt/rubyee/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/deployer/.rvm/bin
PWD=/home/deployer/Sites
LANG=en_US.UTF-8
_system_arch=i386
_system_version=12.04
rvm_version=1.26.4 (latest)
SHLVL=1
HOME=/home/deployer
LOGNAME=deployer
GEM_PATH=/home/deployer/.rvm/gems/ruby-1.9.3-p392:/home/deployer/.rvm/gems/ruby-1.9.3-p392@global
SSH_CONNECTION=....
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
RUBY_VERSION=ruby-1.9.3-p392
_system_name=Ubuntu
_=/usr/bin/env
我还尝试了如下命令来查找潜在的符号链接循环:
find . -maxdepth 20 -type l -exec ls -ld {} +
但没有产生正确的结果:
lrwxrwxrwx 1 deployer deployer ...