【问题标题】:Why is sudo: bundle command not found?为什么找不到 sudo: bundle 命令?
【发布时间】:2014-04-22 19:31:38
【问题描述】:

为什么使用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。

我尝试按照Using $ sudo bundle exec ... raises 'bundle: command not found' error 的说明添加-i 标志,但得到“此帐户当前不可用。”。

【问题讨论】:

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

标签: ruby linux rubygems bundler sudo


【解决方案1】:

检查PATH 在有和没有sudo 的情况下是否具有相同的值。显然它找不到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]#
  • 尝试在您的.bashrc 中添加以下内容:alias sudo='sudo env PATH=$PATH'
  • 然后在新的 bash 会话中重新运行所有命令,现在它们应该可以工作了 :) 希望
  • 如果您仍然遇到问题,请告诉我
  • 谢谢大神。将该行添加到/etc/bashrc 的第一行,但没有变化。尝试注销并重新登录,但仍然没有。请注意,/etc/bashrc 声明“除非您知道自己在做什么,否则更改此文件不是一个好主意……”。我应该担心吗?
【解决方案2】:

用户是在没有 bash 登录 shell 的情况下创建的。使用 system-config-users 在 centos 中更改此设置。然后 su git 进入 /home/git 并移动到 gitlab 目录。执行不带 sudo 标签的捆绑命令。您将遇到的下一个错误是配置目录中缺少 database.yml。使用正确的密码修复此问题(即复制 mysql 或 postgres 示例并进行编辑)。

【讨论】:

    【解决方案3】:

    试试:

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

    使用与当前用户相同的PATH

    【讨论】:

      【解决方案4】:

      我遇到了这个问题,我认为我的 gitlab 是从源代码安装的,但我遇到了同样的错误。但是在尝试使用 Omnibus 方法进行备份后,我的问题解决了 用这个命令:

      sudo gitlab-rake gitlab:backup:create

      【讨论】:

        猜你喜欢
        • 2020-10-01
        • 1970-01-01
        • 2019-02-08
        • 2014-07-06
        • 1970-01-01
        • 2019-12-09
        • 1970-01-01
        • 2012-03-30
        • 2021-09-05
        相关资源
        最近更新 更多