为什么会出现sudo: bundle命令未找到的情况?

14

为什么使用sudo时找不到“bundle”命令:

[root@desktop gitlab]# sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
sudo: bundle: command not found
[root@desktop gitlab]#

但是在不使用sudo时确实存在:

[root@desktop gitlab]# bundle exec rake gitlab:setup RAILS_ENV=production
 Warning
  You are running as user root, we hope you know what you are doing.
  Things may work/fail for the wrong reasons.
  For correct results you should run this as user git.

This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? no
Quitting...
[root@desktop gitlab]#

我问这个问题的原因是我正在遵循https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos,并且它指示要使用sudo。

我尝试添加-i标志,如Using $ sudo bundle exec ... raises 'bundle: command not found' error所述,但出现了“此帐户当前不可用”的错误。


最近我在 Gentoo 上安装了 Gitlab,发现 git 用户需要一个有效的 shell 和主目录才能成功安装。显然,Gitlab 源代码中有一个提交已经废弃了这个要求,但它还没有成为发布的 Gitlab 版本的一部分。 - svoop
我遇到了完全相同的问题,只不过我在安装 gem 的命令上遇到了错误:'sudo -u git -H bundle install --deployment --without development test mysql aws'。我正在运行 Ubuntu 12.04 服务器。 - ericso
4个回答

20

检查使用sudo和不使用sudo时,PATH是否具有相同的值。显然,它之所以找不到bundle,只是因为其未列在PATH中。

您可以比较以下两行的输出

$ echo 'echo $PATH' | sh
$ echo 'echo $PATH' | sudo sh
理想情况下,sudo 不应该改变 PATH。但这可能是您所使用的托管发行版的一个附带问题。
原帖作者编辑后的输出是:
[root@desktop etc]# echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@desktop etc]# echo 'echo $PATH' | sudo sh
/sbin:/bin:/usr/sbin:/usr/bin:/user/local/bin
[root@desktop etc]#

请看下面的内容:[root@desktop gitlab]# echo 'echo $PATH' | sh /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@desktop gitlab]# echo 'echo $PATH' | sudo sh /sbin:/bin:/usr/sbin:/usr/bin:/user/local/bin [root@desktop gitlab]# - user1032531
2
尝试将以下内容放入您的.bashrc文件中:alias sudo='sudo env PATH=$PATH' - deimus
然后在一个新的bash会话中重新运行您的所有命令,现在它们应该工作:) 希望如此。 - deimus
谢谢Deimus。我把那行代码添加到了/etc/bashrc文件的第一行,但是没有任何变化。我尝试退出并重新登录,但仍然没有变化。请注意,/etc/bashrc文件中写道:“除非你知道自己在做什么,否则不建议更改此文件...”。我应该担心吗? - user1032531
.bashrc 文件不应该位于 /etc/ 目录下,通常它位于主目录 /home/<USERNAME>/.bashrc 中。请确保不会影响您的其他设置。 - deimus
显示剩余8条评论

1

我遇到了一个问题,我以为是我从源代码安装的Gitlab导致的。但尝试使用Omnibus方法备份后,我的问题得到了解决。使用以下命令进行备份:

sudo gitlab-rake gitlab:backup:create


1
用户创建时没有添加bash登录Shell。在CentOS中使用system-config-users更改此设置。然后su git进入/home/git并转到gitlab目录。执行bundle命令时不要使用sudo标记。下一个错误是在config目录中缺少database.yml文件。使用正确的密码修复此问题(即复制mysql或postgres示例并进行编辑)。

0
尝试执行以下命令:

sudo -u git -H env PATH=$PATH && bundle exec rake gitlab:check RAILS_ENV=production

这样可以使用当前用户的相同PATH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接