【问题标题】:zsh: command not found: bundle (after gem install bundle)zsh: command not found: bundle (在 gem install bundle 之后)
【发布时间】:2015-01-21 16:27:59
【问题描述】:

为什么在gem install bundler 之后是zsh: command not found: bundle

我尝试在/etc/zshrcsource /etc/zshrc 中设置path=( /usr/local/lib/ruby/gems/2.2/gems/ ~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ) 无济于事。

root@dev:/home/dev# gem install bundler
Successfully installed bundler-1.7.12
Parsing documentation for bundler-1.7.12
Done installing documentation for bundler after 10 seconds
1 gem installed

root@dev:/home/dev# bundle
zsh: command not found: bundle

root@dev:/home/dev# uname -a
OpenBSD dev.my.domain 5.7 GENERIC#748 amd64

root@dev:/home/dev# gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5
  - RUBY VERSION: 2.2.0 (2014-12-25 patchlevel 0) [x86_64-openbsd]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.2
  - RUBY EXECUTABLE: /usr/local/bin/ruby22
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-openbsd
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/2.2
     - /usr/local/lib/ruby/gems/2.2/gems/
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/lib/ruby/gems/2.2/gems/
     - /root/bin
     - /bin
     - /sbin
     - /usr/bin
     - /usr/sbin
     - /usr/local/bin
     - /usr/local/sbin

【问题讨论】:

  • 如果有人用谷歌搜索得到这个错误:我解决了它只是关闭并再次打开标签。这是与在 Heroku 上部署相关的问题。
  • .zshrc -- 导出 PATH=$HOME/bin:/usr/local/bin:$PATH

标签: ruby gem bundler openbsd


【解决方案1】:

我在使用 zsh 时遇到了同样的问题,这解决了它:

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshenv
$ echo 'eval "$(rbenv init -)"' >> ~/.zshenv
$ echo 'source $HOME/.zshenv' >> ~/.zshrc
$ exec $SHELL

【讨论】:

    【解决方案2】:

    您似乎在安装bundler 系统范围之后。为此,您需要将--no-user-install 标志传递给gem 并使用sudo 执行它:

    sudo gem install bundler --no-user-install
    

    在此之后,您应该在/usr/bin/ 中看到bundle 就好了:

    $ ls /usr/bin/bundle
    /usr/bin/bundle*
    

    【讨论】:

    • 我认为您应该避免在 gems 上使用 sudo,但可能会使用 --no-user-install 标志来进行多用户安装
    【解决方案3】:

    您可以使用gem environment 检查 Rubygems 将安装 gem 可执行文件的目录。

    第一个点应该是EXECUTABLE DIRECTORY。确保此目录在您的$PATH 中(列为SHELL PATH btw)

    【讨论】:

    • 这很奇怪...您是否验证了二进制文件实际上存在于目录中?
    • 确实,运行/usr/local/lib/ruby/gems/2.2/gems/bundler-1.7.12/bin/bundle 似乎有效。
    • 二进制文件也应该存在于EXECUTABLE DIRECTORY: /usr/local/bin - 是吗?
    • 哦 - 它是 bundle22 :)
    • 我必须手动对所有二进制文件进行符号链接还是有更好的方法?
    【解决方案4】:

    你应该在安装bundler后运行以下命令:

    rbenv rehash
    

    【讨论】:

      【解决方案5】:

      在设置 jekyll 时也遇到了同样的错误。我的gem env显示GEM PATHS如下:

      - GEM PATHS:
          - /usr/local/lib/ruby/gems/2.5.0
      

      这个目录的内容是这样的:

      bin/            cache/          extensions/     specifications/
      build_info/     doc/            gems/
      

      bin 内部,我看到了jekyllbundle

      $cd /usr/local/lib/ruby/gems/2.5.0/bin/
      $ls
      bundle        jekyll        listen        safe_yaml     sass-convert
      bundler       kramdown      rougify       sass          scss
      

      如果您发现与我相似的路径和文件,以下任何一种方法都应该有效:

      • 将完整路径/usr/local/lib/ruby/gems/2.5.0/bin/ 附加到PATH via:

        export PATH="/usr/local/lib/ruby/gems/2.5.0/bin/:$PATH"
        
      • /usr/local/bin 中创建符号链接,通过:

        $cd /usr/local/bin
        $ln -sf /usr/local/lib/ruby/gems/2.5.0/bin/bundle .
        $ln -sf /usr/local/lib/ruby/gems/2.5.0/bin/jekyll .
        
      • .zshrc(或.bashrc等)中设置别名:

        alias jekyll="/usr/local/lib/ruby/gems/2.5.0/bin/jekyll"
        alias bundle="/usr/local/lib/ruby/gems/2.5.0/bin/bundle"
        

      总的来说,我觉得所有这些路径盲使设置 jekyll 站点的体验比预期的更加坎坷:(如果其他人有一组可以正常工作的步骤(无需此类故障排除),请发表评论:)

      【讨论】:

        猜你喜欢
        • 2014-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        相关资源
        最近更新 更多