У вас немає дозволів на запис для каталогу /Library/Ruby/Gems/2.3.0. (користувач mac)


159

нижче - те, що мені потрібно зробити.

Щоб запустити специфікації, потрібно встановити RSpec. Спочатку запустіть gem install bundlerу кореневому каталозі вашого проекту. Тоді біжи bundle install. Для виконання однієї специфікації файлу, виконайте команду: bundle exec rspec spec/00_hello_spec.rb. Щоб запустити всі специфікації одночасно, запустіть bundle exec rspec.

Отже, я набрав gem install bundlerтермінал і отримав помилку:

У вас немає дозволів на запис для каталогу /Library/Ruby/Gems/2.3.0.

і це було у файлі проекту в atom

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

Моє запитання:

Здається, термінал дає мені відповідь, тому що я не повинен нічого змінювати на ruby, і мені потрібно bundle installвсередині атома? Хтось може сказати мені, як користуватися atom або запускати що-небудь в atom?

Відповіді:


280

Оновлення: З тих пір я написав дуже детальне пояснення різних способів встановлення каменів Ruby на Mac. Моя оригінальна рекомендація використовувати скрипт все ще існує, але моя стаття йде більш докладно: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

Ви маєте рацію, що macOS не дозволить вам нічого змінювати за допомогою версії Ruby, яка постачається з вашим Mac. Однак можна встановити дорогоцінні камені, як-от bundlerвикористання окремої версії Ruby, яка не заважає тій, яку надає Apple.

Використовувати sudoдля встановлення самоцвітів або змінювати дозволи системних файлів та каталогів настійно не рекомендується, навіть якщо ви знаєте, що робите. Чи можемо ми припинити надавати цю погану пораду? Ось детальна стаття, яку я написав, де показано, як sudo gem installможна знищити комп’ютер: https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/

Рішення передбачає два основних етапи:

  1. Встановіть окрему версію Ruby, яка не заважає версії, яка постачається з вашим Mac.
  2. Оновіть PATHтак, щоб нова версія Ruby була першою в PATH. Деякі інструменти роблять це автоматично за вас. Якщо ви не знайомі з PATHі як це працює, прочитайте моє керівництво .

Існує кілька способів встановити Ruby на Mac. Найкращий спосіб, який я рекомендую і хотів би, щоб його поширення було більш поширеним в різних інструкціях з встановлення, - це використання автоматизованого сценарію, який створить для вас належне середовище Ruby. Це різко знижує ймовірність натрапити на помилку через неадекватні вказівки, які змушують користувача робити купу речей вручну і залишаючи за ними самостійно розгадати всі необхідні кроки.

Інший шлях, яким можна піти, - витратити зайвий час, роблячи все вручну і сподіваючись на краще. По-перше, ви захочете встановити Homebrew , який встановлює необхідні інструменти командного рядка та полегшує встановлення інших необхідних інструментів.

Тоді два найпростіші способи встановити окрему версію Ruby:

Якщо вам потрібна гнучкість легкого переключення між багатьма версіями Ruby [РЕКОМЕНДОВАНО]

Виберіть один із цих чотирьох варіантів:

  • chruby та ruby-install - мої особисті рекомендації та ті, які автоматично встановлюються моїм сценарієм. Їх можна встановити за допомогою Homebrew:
brew install chruby ruby-install
  • rbenv - можна встановити за допомогою Homebrew

  • RVM

  • asdf

Якщо ви вибрали chrubyі ruby-install, ви можете встановити останню версію Ruby таким чином:

ruby-install ruby

Після того, як ви встановили все і налаштували свій .zshrcабо .bash_profileвідповідно до вказівок з наведених вище інструментів, вийдіть і перезапустіть Terminal, а потім перейдіть на потрібну версію Ruby. У випадку chruby, це було б приблизно так:

chruby 2.7.2

Чи потрібно вам налаштовувати, .zshrcчи .bash_profileзалежить від того, яку оболонку ви використовуєте. Якщо ви не впевнені, прочитайте цей посібник: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

Якщо ви точно знаєте, що вам не потрібна більше однієї версії Ruby одночасно (крім тієї, що поставляється з macOS)

  • Встановіть ruby ​​за допомогою Homebrew:
brew install ruby

Потім оновіть PATH, запустивши (замініть 2.7.0на нещодавно встановлену версію):

echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc

Потім "оновіть" свою оболонку, щоб ці зміни набрали чинності:

source ~/.zshrc

Або ви можете відкрити нову вкладку терміналу, або вийти і перезапустити термінал.

Замініть .zshrcна, .bash_profileякщо ви використовуєте Bash. Якщо ви не впевнені, яку оболонку ви використовуєте, прочитайте цей посібник: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

Щоб перевірити, чи використовуєте ви зараз несистемну версію Ruby, можна виконати такі команди:

which ruby

Це має бути щось інше, ніж /usr/bin/ruby

ruby -v

Якщо ви використовуєте macOS Catalina, це має бути щось інше, ніж 2.6.3. На сьогоднішній день 2.7.2 - це остання версія Ruby.

Після встановлення нової версії Ruby тепер ви можете встановити пакет (або будь-який інший камінь):

gem install bundler

4
якщо ви подібні до мене і використовуєте zsh (або іншу оболонку, відмінну від bash), є додатковий крок! Після встановлення rbenvвам доведеться це зробити echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. Джерело
Марло

2
Якщо ви зіткнулися з помилкою дозволу в / usr / local directory, запустіть sudo chown -R $(whoami) $(brew --prefix)/*. Дивіться цю тему для отримання додаткової інформації
Anas Tiour

6
Це дуже корисно ... Це слід встановити як правильну відповідь.
Спенсер Мюллер Дініз,

5
Оскільки MacOS заохочує людей перейти на zsh, вам слід також застосувати зміну до ~ / .bash_profile до ~ / .zshrc.
Adam_G

1
@stevec Можливо, ви пропустили кілька кроків в інструкціях з встановлення rbenv? А може, ви не вийшли і не перезапустили термінал? Я дотримувався б інструкцій rbenv тут: github.com/rbenv/rbenv#installation . Якщо ви готові використовувати chrubyзамість цього, я настійно рекомендую використовувати сценарій, який налаштовує на вас все, наприклад цей: github.com/monfresh/install-ruby-on-macos . Вам слід спочатку видалити rbenv перед запуском цього сценарію: github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

83

Якщо ви не хочете запускати, sudoто встановіть ruby ​​за допомогою homebrew

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

Можливо, ви захочете додати export GEM_HOME="$HOME/.gem"до свого, ~/.bash_profileабо .zshrcякщо ви використовуєте zsh

Примітка: RubyGems зберігає старі версії дорогоцінних каменів, тому сміливо виконуйте чистку після оновлення:

gem cleanup

4
не допоміг на ОС Каталіна 😐
Ефрат Левітан

Оновив свою відповідь
СТІКО

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Ефрат Левітан,

Здається, ви намагаєтесь запустити railsкоманду. Останні дві команди, які я маю, не запускають railsкоманду. Спробуйте відкрити новий термінал за межами вашого проекту, а потім скопіюйте останні два рядки моєї відповіді по одному.
СТІКО

не забудьте source ~/. zshrc(або ~/.bash_profile)
gordinmitya

73

Працював для мене, використовуючи параметр, що --user-installпрацює за наступною командою:

gem install name_of_gem --user-install

Потім він почав завантажувати та встановлювати його.

Редагувати

Був один дорогоцінний камінь, який я все ще не міг встановити (для цього потрібні були заголовки Ruby.h набору для розробки Ruby або щось інше), тоді я спробував різні менеджери версій, але якимось чином це все-таки не спрацювало, як було зазначено в документації, як просто встановити та переключити (це просто не змінило версії). Потім я видалив усі встановлені менеджери версій і встановив згодом brew install rubyостанню версію, а також встановив змінну PATH. (Це буде згадано після встановлення рубіну з браги), який спрацював.


2
Це має бути обрана відповідь. Варення ще не підтримується чіпами M1, і це працює як шарм.
Том Роггеро,

1
Чому ця відповідь поки що в списку? Це правильна відповідь.
peterretief

7

Зазвичай рекомендується використовувати менеджер версій, наприклад rbenvor rvm. В іншому випадку встановлені Камені будуть доступні, як і rootдля інших користувачів.

Якщо ви знаєте, що робите, можете використовувати sudo gem install.


5

Я зіткнувся з такою ж проблемою після встановлення macOS Catalina. Я спробував нижче команди та її роботу.

sudo gem update

4

Запусти це

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

Дотримуйтесь інструкцій, (у моєму випадку додайте до ~ / .zshrc );)


Також важливо: Зміни набувають чинності лише при перезавантаженні консолі. Два варіанти

  • Введіть source <modified file>
  • закрити і знову відкрити

Я перейшов на Каталіну (яка переходить з bash на zsh) і забув скопіювати все з .bash_profileкінця на.zshrc
wetjosh

Це працює! Не використовуйте sudo! Якщо ви не використовуєте ZSH, ви можете додати це до свого .profileабо .bash_profile. Чудовий спосіб перевірити, чи це працює, - which rubyце вказувати на шлях, який має, rbenvа не повинен /usr/local/ruby.
Swaathi Kakarla

2

Якщо ви встановили ruby ​​окремо та встановили ruby ​​за допомогою rbenv / rvm, ви можете вказати різні версії.

спробуй

gem env home

і

ruby -v

обидва повинні вказувати на ту саму версію. перевірте, чи ви встановили ruby ​​за допомогою rbenv / rvm.

Для того, щоб самоцвіт працював, ви повинні викликати rbenv,

rbenv shell <ruby version> 

і

rbenv global <ruby version>

Я не впевнений, як працює RVM. Повідомте мене, якщо це спрацює.


не було встановлено оболонку та глобальний. Чому цього немає в інструкціях rbenv 🤔
feitla

Не впевнений, чому це було пропущено, мені вдалося з’ясувати після випробування.
Bharathan Kumaran

0

Рішення для Mac

  1. Встановіть / оновіть RVM з останньою рубіновою версією

    \curl -sSL https://get.rvm.io | bash -s stable

  2. Встановіть пакет

    gem install bundler


після цього дві команди (sudo) gem install ....почали працювати


можливо, доведеться також вказатиrvm use <version>
ObjectNameDisplay

0

Слід використовувати іншу установку рубіну. Для цього я використовую rbenv .

# install your version of ruby
$ rbenv install 2.0.0-p247

# modify .ruby_version on current directory
$ rbenv local 2.0.0-p247

# proceed installing gems
$ gem install bundler

Disclamer: Я не рубін. Це спрацювало для мене, і якщо ви фахівець з рубінів і бачите, що в цій відповіді потрібно змінити, будь ласка, коментуйте!


-1

Це працювало для мене на Mac

sudo chown -R $ (whoami) $ (brew --prefix) / *


-1

Я використовую Mojave з rbenv, це рішення працює для мене:

$ vi ~/.bash_profile

Додайте цей рядок у файл:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

-2

Проблеми, які виникали у мене: - У вас немає дозволів на запис для каталогу /Library/Ruby/Gems/2.6.0.

Рішення спрацювало для мене: sudo gem install rails -v 6.0.0


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.