这个问题要了我的命,我觉得我什么都试过了。
首先,问题是在升级到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'ing到我的服务器并尝试相同的命令来进行故障排除,我收到了相同的错误(这至少有利于一致性),然后我尝试不带/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 ...
3条答案
按热度按时间zrfyljdw1#
您可能没有使用相同的
ln
实用程序。当直接从交互式 shell 调用它时,
ln
可能被例如alias
或某个 shell 函数ln() {...;}
覆盖。当
/usr/bin/env
尝试这样做时,不会发生这种情况(AFAIK在PATH
中查找ln
)。我怀疑它找到的ln
有问题,所以您会得到这个错误。下面是一个可能与您的情况类似的示例场景:
现在让我们尝试两种替代方法,首先是
/usr/bin/env
:然后是普通的
ln
(请记住我们对它进行了alias
编辑):所以我的建议是:查看
ln
的问题,例如,通过查找所有可能 * 可见 * 的不同替代项。在bash
中,您可以运行以下命令:cygmwpex2#
尝试以下方法查找符号链接循环:
jmp7cifd3#
如果您正在使用docker,则应在您的案例中安装ruby
来源
https://github.com/docker/for-win/issues/5763#issuecomment-585749243