Проблема при установке пакета, говорит, что он устанавливает, но затем не устанавливает - PullRequest
1 голос
/ 25 апреля 2019

Я настраиваю новую систему. Я использую rbenv вместо rvm, потому что rvm меняет определение «cd», и это просто зло.

У меня установлена ​​необходимая версия ruby ​​и rails (я думаю), но пакет вызывает проблемы:

turlingdrome$ gem install bundler
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ rb_sysopen - /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md

turlingdrome$ sudo gem install bundler
/usr/local/Cellar/rbenv/1.1.2/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:6: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed

turlingdrome$ sudo gem uninstall bundler
Gem 'bundler' is not installed

turlingdrome$ bundler install
Traceback (most recent call last):
    2: from /Users/brianp/.rbenv/versions/2.5.3/bin/bundler:23:in `<main>'
    1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)

Итак, я попытался использовать sudo один раз, и теперь я думаю, что права доступа являются суперпользователями ... поэтому я использую sudo. ничего страшного.

Установка, кажется, работает.

Когда я пытаюсь удалить приложение, оно говорит, что оно не установлено.

Когда я пытаюсь запустить его, он находит исполняемый файл, но затем говорит, что не может найти исполняемый файл.

Я использую ruby ​​2.5.3 и rails (я думаю) 5.2.3.

Сбой Rails с:

turlingdrome$ rails -v
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/railties-5.2.3/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /Users/brianp/work in PATH, mode 040777
Traceback (most recent call last):
    4: from bin/rails:3:in `<main>'
    3: from bin/rails:3:in `require_relative'
    2: from /Users/brianp/work/online-reporting/config/boot.rb:6:in `<top (required)>'
    1: from /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- bundler/setup (LoadError)

Я полагаю, это та же проблема.

В случае, если это имеет значение, я на Mac.

Ответы [ 6 ]

2 голосов
/ 03 мая 2019

rbenv работает, вставляя директорию прокладок в начало вашей PATH :

~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin

Через процесс, называемый rehashing, rbenv поддерживаетШиммы в этом каталоге соответствуют каждой команде Ruby во всех установленных версиях Ruby - irb, gem, rake, rails, ruby ​​и т. д.

Шиммы - это легкие исполняемые файлы, которые просто передают вашу команду в rbenv.Таким образом, с установленным rbenv, когда вы запустите, скажем, rake, ваша операционная система сделает следующее:

  • Найдите в вашем PATH исполняемый файл с именем rake
  • Найдите rbenvшим по имени рейк в начале вашего PATH
  • Запустите шим по имени rake, который в свою очередь передает команду rbenv

Вы испортили свойrbenv установка.

1) Удаление установки ruby ​​вне rbenv

2) rvm implode

3) ОчиститьПерейдите в переменную $PATH env из ~/.bash_profile или ~/.bashrc

Удалите любую ссылку $PATH, указывающую на ruby, irb, gem или любую папку, включая исполняемый файл bin.Рассмотрите возможность комментирования любого оператора $PATH из вашего bash_profile

# export PATH="$HOME/etc/bin:$PATH"
# leave the statement below 
# export PATH="$HOME/.rbenv/bin:$PATH

Переменная $PATH содержит список папок:

echo $PATH
home/fabrizio/.rbenv/shims:/opt/android-studio/bin:~/.scripts/bin

, если вы запускаете gem в своем терминале

любой .bin исполняемый файл, включенный в home/fabrizio/.rbenv/shims или /opt/android-studio/bin, исполняемый из любого места в терминале.Когда вы запускаете gem, , команда ruby gem выполняется вместо перехвата из rbenv, потому что вы установили ruby ​​вне rbenv.

ОБНОВЛЕНИЕ НА ОСНОВЕ ВАШЕЙ ОБРАТНОЙ СВЯЗИ

Вы должны были выполнить этот шаг при установке ruby ​​2.5.0 без rbenv , поэтому удалите из ~/.bash_profile или ~/.bashrc следующую строку

PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin"

или любая другая строка, которая добавляет /Users/brianp/.gem/ruby/2.5.0/bin к вашему $PATH, затем удалить ruby ​​с помощью apt .

Прочитайте следующую информацию , дополнительно всегда проверяйтеместо, где устанавливаются драгоценные камни с помощью gem env:

$ gem env home
# => ~/.rbenv/versions/<ruby-version>/lib/ruby/gems/...

, если местоположение в любом месте терминала не находится под ~/.rbenv/, тогда вы устанавливаете драгоценные камни в неправильных местах.

LAST RESORT

Удалите папку с драгоценными камнями с помощью rm -rf ~/.gem, аналогичный подход к этому сообщению , если вы не можете удалить /Users/brianp/.gem/ruby/2.5.0/binот вашего $PATH

РЕШЕНИЕ ДЛЯ ВАШЕЙ ПОСЛЕДНЕЙ ОШИБКИ

Эта ошибка вызвана установкой bundler 2.0

  can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

, необходимо удалить bundler 2.0 и установить 1.9.0

0 голосов
/ 03 мая 2019

Попробуйте удалить Gemfile.lock и попробуйте установить и снова использовать bundler - я только что обнаружил , что на Github:

В Bundler 2 появилась новая функция, которая будет автоматическипереключение между Bundler v1 и v2 на основе файла блокировки [...] Если вы это сделаете, это можно исправить, установив версию Bundler, объявленную в файле блокировки.Эта ошибка была исправлена ​​в RubyGems 3.0.0, но в настоящее время готовятся обратные порты для предыдущих основных версий RubyGems.Мы сообщим вам, когда они станут доступны.

0 голосов
/ 03 мая 2019

предупреждение: небезопасный доступный для записи мир dir / Users / brianp / work в PATH, режим 040777

Похоже, проблема с правами доступа.Попробуйте это:

sudo chmod 755 /Users/brianp/work
0 голосов
/ 03 мая 2019

Кажется, проблема с разрешением для папки.

отказано в разрешении @ rb_sysopen -
/Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/bundler-2.0.1/CHANGELOG.md

Я бы попытался изменить права доступа к указанному файлу / папке, используя chmod 755 /Users/brianp/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/

. Есть несколько сообщений, связанных с аналогичной темой, например, this .

0 голосов
/ 25 апреля 2019

Вы можете попробовать это?

gem install bundler --user-install
0 голосов
/ 25 апреля 2019

Использование rbenv - хороший выбор для управления ruby установкой на Mac, но, похоже, вы оказались в полном беспорядке с нарушенной rbenv/gem/rails/bundler установкой и разрешениями.Это не стоит исправлять, поэтому я предлагаю просто избавиться от rbenv, удалить каталог ~/.rbenv и установить rbenv с brew снова используя это руководство .

Другие способы проверки:

  1. Выполнить rbenv-doctor

    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

  2. Удалите каталог ~/.rbenv, снова запустите rbenv init и установите требуемую версию Ruby

  3. Убедитесь, что which ruby и which gem указывают на соответствующее местоположение внутри ~/.rbenv каталога

На заметку:

  1. rbenv и brew, а также gem не требуют sudo, поэтому вы никогда не должны использовать его сих
  2. Не забудьте добавить eval "$(rbenv init -)" в ваш скрипт инициализации оболочки, например, echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
...