Команда Ruby "gem" завершается ошибкой с отказом в разрешении @ rb_sysopen - PullRequest
0 голосов
/ 25 декабря 2018

Кажется, что-то сломалось с моей командой "драгоценный камень".Вот что я получаю при запуске "gem"

/ usr / local / lib / site_ruby / 2.3.0 / rubygems / stub_specification.rb: 114: в initialize': Permission denied @ rb_sysopen - /var/lib/gems/2.3.0/specifications/unicode-display_width-1.4.1.gemspec (Errno::EACCES) from /usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification.rb:114:in open 'из / usr / local/lib/site_ruby/2.3.0/rubygems/stub_specification.rb:114:in data' from /usr/local/lib/site_ruby/2.3.0/rubygems/stub_specification.rb:204:in действителен? 'из /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:774:in select' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:774:in gemspec_stubs_in 'из /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:798:в block in map_stubs' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:795:in каждый 'из /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:795:in flat_map' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:795:in map_stubs' из /usr/local/lib/site_ruby/2.3.0/rubygems/ification.rb: 788: в installed_stubs' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:826:in заглушках из /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:747:in _all' from /usr/local/lib/site_ruby/2.3.0/rubygems/specification.rb:1131:in latest_specs 'из / usr / local / lib / site_ruby /2.3.0 / rubygems.rb: 546: в find_latest_files' from /usr/local/lib/site_ruby/2.3.0/rubygems.rb:1111:in load_plugins 'из /usr/local/lib/site_ruby/2.3.0/rubygems/gem_runner.rb:86:in <top (required)>' from /usr/local/lib/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in require' из / usr / local /lib / site_ruby / 2.3.0 / rubygems / core_ext / kernel_require.rb: 54: in require' from /usr/bin/gem:9:in '

Однако команда работает нормально, если я выполняю "sudo gem".

Большая проблема в том, что я не могу использовать «связку» для установки новых драгоценных камней (например, fastlane).Обратите внимание, что я использую «обновление пакета», чтобы установить гем через Gemfile.И это завершается с той же трассировкой стека , что и выше.

Как я могу исправить эту проблему?Спасибо!

1 Ответ

0 голосов
/ 27 декабря 2018

Вы получаете эту ошибку при запуске без sudo, потому что вы используете то, что некоторые люди называют «системным» ruby ​​на вашем компьютере;это рубин по умолчанию, который поставляется с macOS.Если вы запустите which ruby, он, скорее всего, будет указывать на /usr/bin/ruby (если вы не установили rvm, rbenv или другой менеджер версий ruby.

По умолчанию системный ruby ​​(который включает в себясистемные gem и bundler команды указывают на расположение файла, для установки которого требуется sudo.

Я рекомендую не запускать sudo для установки гемов, вместо этого установите менеджер версий ruby, напримеркак rvm (самый популярный), rbenv (также популярный выбор) или asdf (мой предпочтительный менеджер версий, потому что он управляет не только ruby, есливы хотите)

После установки диспетчера версий ruby, следуя инструкциям, вы сможете установить более свежую версию ruby ​​(системный ruby ​​- 2.3.7, самая последняя - 2.6.0).Менеджер версий также установит правильные пути для ваших команд gem и bundle, указывая пути, на которых у вас есть права на запись без использования sudo

Настоятельно рекомендуется использовать менеджер версий ruby, поскольку он не мешаетWiлюбые системные зависимости, которые могут зависеть от версии системы ruby, и менеджер версий позволяет устанавливать несколько версий ruby ​​и переключаться между ними для разных проектов.

...