Zsh: команда не найдена: bundle (после комплекта установки gem)

Почему zsh: command not found: bundle после gem install bundler?

Я попытался установить path=( /usr/local/lib/ruby/gems/2.2/gems/ ~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ) в /etc/zshrc и source /etc/zshrc безрезультатно.

[email protected]:/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

[email protected]:/home/dev# bundle
zsh: command not found: bundle

[email protected]:/home/dev# uname -a
OpenBSD dev.my.domain 5.7 GENERIC#748 amd64

[email protected]:/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

Ответ 1

Кажется, вы установили bundler в общесистемную. Для этого вам нужно передать флаг --no-user-install в gem и выполнить его с помощью sudo:

sudo gem install bundler --no-user-install

После этого вы должны увидеть bundle в /usr/bin/ просто отлично:

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

Ответ 2

У меня была та же проблема с использованием Zsh, и это исправлено:

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

Ответ 3

Вы можете проверить каталог, в котором Rubygems будет устанавливать исполняемые файлы gem с помощью gem environment.

Одна из первых точек должна быть EXECUTABLE DIRECTORY. Убедитесь, что этот каталог находится в вашем $PATH (указанном как SHELL PATH btw)

Ответ 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 я вижу и jekyll и bundle:

$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 через:

    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 более громким, чем ожидалось :( Если у других есть набор шагов, которые просто работают (без таких проблем для устранения неполадок), пожалуйста, прокомментируйте :)