Я пытаюсь установить Gem с помощью gem install mygem
или обновить RubyGems с помощью gem update --system
, и это не удается с этой ошибкой:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
У кого-нибудь есть идеи как это решить?
sudo chown -R $USER /Library/Ruby/Gems/
Ответы:
означает, что у вас нет разрешения писать там.
Это версия Ruby, установленная Apple, для собственного использования. Несмотря на то, что можно вносить незначительные изменения в это, если вы знаете, что делаете , потому что вы не уверены в проблеме с разрешениями, я бы сказал, что не стоит продолжать идти по этому пути.
Вместо этого я настоятельно рекомендую вам изучить использование rbenv или RVM для управления отдельным Ruby, установленным в изолированную программную среду в вашем домашнем каталоге, который вы можете изменить / fold / spindle / change, не беспокоясь о том, чтобы испортить систему Ruby.
Между этими двумя я использую rbenv, хотя в прошлом я часто использовал RVM. rbenv использует более простой подход к управлению установкой Ruby. RVM обладает множеством функций и является очень мощным, но в результате более навязчивым. В любом случае, ПРОЧИТАЙТЕ для них документацию по установке пару раз, прежде чем начинать установку, в зависимости от того, что вы выберете.
источник
brew install ruby
решит ваши проблемы с зависимостями чистым способом, который не уничтожит установку Apple. Если вы ужеsudo
обновили первоначальную установку и беспокоитесь о том, что вы сделали, вы сможете отменить это следующим образом:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix
» и это только добавляет вес тому, почему люди не должны использоватьsudo
илиchown
. Вздох ....brew install ruby
просто закройте Терминал и снова откройте его.Попробуйте добавить
--user-install
вместо использованияsudo
:источник
--user-install
Вариант, по- видимому уже некоторое время. Я просто хотел бы, чтобы вы написали это ранее. =)if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi
Источник: guides.rubygems.org/faqs/#user-installВы действительно должны использовать менеджер версий Ruby.
Правильное использование одного из них предотвратит и может решить вашу проблему с разрешениями при выполнении
gem update
команды.Я рекомендую rbenv .
Однако даже если вы используете менеджер версий Ruby, вы все равно можете получить то же сообщение об ошибке.
Если вы это делаете и используете rbenv, просто убедитесь, что
~/.rbenv/shims
каталог находится перед путем к системе Ruby.$ echo $PATH
покажет вам порядок вашего пути загрузки.Если вы обнаружите, что ваш каталог shims идет после вашего системного каталога Ruby bin, отредактируйте ваш
~/.bashrc
файл и поместите его в качестве последней команды экспорта PATH:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
показывает, какую версию Ruby вы используетеЭто показывает, что я в настоящее время использую системную версию Ruby (обычно не очень хорошо)
$ rbenv global 1.9.3-p448
переключает меня на более новую, предварительно установленную версию (см. ссылки ниже).Это показывает, что я использую более новую версию Ruby (которая, скорее всего, не вызовет Gem :: FilePermissionError)
Обычно вам не нужно вводить команду gem с помощью sudo. Если вы чувствуете необходимость сделать это, возможно, что-то неправильно настроено.
Для получения подробной информации о rbenv смотрите следующее:
источник
rbenv
, если вы следуете инструкциям по установке Homebrew , все, что вам нужно сделать, это добавитьeval "$(rbenv init -)"
в конфигурацию вашей оболочки иrbenv
позаботиться о том, чтобы настроить ееPATH
для себя.Почему бы тебе не сделать:
источник
brew upgrade
Error: Permission denied...
. Это исправило это. Спасибо!Это решит проблему с MacOs Mojave и MacOs Catalina простым способом:
Затем установите GEM_HOME в свой каталог пользователя. На терминале:
Bash
:ИЛИ если на
Zsh
:источник
xcode-select --install
. Это необходимо для компиляции расширений.~/.bashrc
или~/.zshrc
файл, удалите 3 добавленные строки, а затем снова запуститеsource ~/.bashrc
командуДля меня проблема была связана с использованием
rbenv
и забыванием установить правильную версию глобально.Поэтому я должен был установить его с
rbenv global xxx
В моем случае я установил,
2.0.0-p247
поэтому я должен был выполнить команду:Тогда все работало нормально.
источник
rbenv global 2.1.1
а затем выполнить сrbenv rehash
. Теперь перезапустите вашуgem install
команду.rbenv rehash
мне не хватало.rbenv versions
.Вы должны исправить свои пути.
Чтобы определить, будет ли работать это исправление, выполните следующее:
Это должно вывести каталог, к которому у вас нет прав доступа:
Чтобы исправить это, выполните следующие действия:
Определите путь, который необходимо скопировать в свой профиль:
Первая строка вывода - это строка, которую нужно скопировать в свой профиль:
Скопируйте путь к своему профилю и сохраните его.
Перезагрузите свой профиль (
source ~/.zshenv
для меня).Беги
rbenv rehash
.Теперь при запуске
which gem
вы должны получить локальный путь, к которому у вас есть разрешения:источник
eval "$(rbenv init -)"
в свой состав~/.bash_profile
все необходимые изменения.источник
sudo
не имеет разрешения. хахаЭто сработало для меня. Кроме того, если вы установили гемы как root ранее, это решит эту проблему, вернув вам право собственности (лучше с точки зрения безопасности).
источник
/Library
папке, система может сломаться в будущих обновлениях. (извините за поздний ответ)Есть два маршрута: используйте либо rbenv, либо RVM. Ниже приведены рецепты для обоих. Перед этим вы, вероятно, захотите отключить установку локальных документов для драгоценных камней.
Затем:
install rbenv
install ruby-build
запустить:
Это устанавливает актуальную версию системы драгоценных камней в ваших локальных каталогах. Это означает, что вы не вмешиваетесь в конфигурацию системы. Если вы задаете этот вопрос, вам не следует возиться с безопасностью системы, и вы потратите больше времени на понимание проблем, с которыми вы можете столкнуться, чем на простой способ избежать проблемы, с которой вы начали. Познакомьтесь с InfoSec позже, когда узнаете больше об операционной системе и программировании.
В качестве альтернативы используйте вместо этого «RVM»: Для установки rvm выполните:
Это приводит к тому же результату: вы получаете локальную систему Ruby and Gem, которая не мешает системным версиям. Нет необходимости в Homebrew, или в перегрузке системных библиотек и т. Д.
источник
Я нашел это с практическими рекомендациями для
sudo
меньшего драгоценного камня :brew install rbenv ruby-build
sudo gem update --system
добавить экспорт в
.bashrc
:И, наконец, добавьте это к себе
~/.gemrc
:gem update --system
источник
brew install rebenv ruby-build
, то естьsystem
после моего каталога? Есть идеи, что вызвало это и как от этого избавитьсяsystem
?Попробуйте ответ Натана, прежде чем использовать мой оригинальный ответ ниже. Его рекомендация
--user-install
должна выполнить ту же самую цель, не прибегая к гадости с вашей.bash_profile
или версией рубина.Если вас не интересует конкретная версия ruby, вы можете пропустить дополнительные параметры менеджера среды ruby и просто добавить эти строки в
~/.bash_profile
:Путь украден из оригинального вывода
gem env
:Никакой
sudo
загрузки не требуется, и вы можете использовать уже установленный ruby, любезно предоставленный Apple.источник
Мне нужно было сделать
rbenv rehash
так, чтобы это указывало на мою местную библиотеку Gem.Похоже, что ваш менеджер драгоценных камней указывает на системную библиотеку, поэтому вместо того, чтобы возиться с разрешениями, сделайте эквивалент «перефразировки» для вашего менеджера, чтобы все указывалось локально.
источник
Старше и мудрее
Не делай то, что я здесь говорю, просто знай, что будь осторожен в любое время
sudo
. Вы, вероятно, хотите использовать что-то вродеrbenv
изоляции любой работы, которую вы делаете.прочь
узнать о
chown
Я не знаю, нравится ли вам командная строка, но это сделает работу над любым проектом с любым инструментом, устанавливающим пакеты в вашу систему, быстрым.
chown
насколько я могу судить, означает смену владельца.Причина, по которой я искал этот ответ, заключается в том, что
gem install
я сегодня бросил эту ошибку:Это прекрасная возможность использовать
chown
. Вы видите, что Ruby предоставил нам каталог, к которому ему нужен доступ, и кажется, что это каталог, который он будет использовать довольно часто.В этом случае есть только три вещи, которые нужно знать, чтобы решить проблему, но
chown
она намного мощнее и предоставляет вам гораздо больше гибкости, чем я продемонстрирую сейчас. Пожалуйста, обратитесь к источнику в нижней части для получения дополнительной информации.Две вещи
Если вы находитесь в оболочке, найти имя пользователя легко. Просто посмотрите на подсказку. Моя выглядит так:
Текущий пользователь - это просто имя перед
@
. Мы знаем каталог из сообщений об ошибках, но у вас есть два варианта. Вы можете либо ограничить свое разрешение текущей версией../gems/1.9.1
, либо дать себе разрешение на запись для драгоценных камней всех версий, используя../gems
.Команда для фактического изменения владельца будет выглядеть следующим образом.
Это
-R
известно как флаг, и-R
флаг обычно говорит команде делать что-то рекурсивно, или, другими словами, выполнять команду для каждой вещи, которая содержится в каталоге, и всех вещей, содержащихся в каталогах, содержащихся внутри, и так далее до больше ничего нетисточник
Я отформатировал свой Mac, и многие предложенные решения не сработали для меня. Для меня сработали эти команды в правильном порядке:
Установите Homebrew:
Установите Ruby:
Установить компас:
источник
sudo
для установки чего-либо с Gem. Использованиеsudo
устанавливает его в Ruby, принадлежащий системе, а не в тот, который у вас есть. Использование изолированного Ruby намного проще в управлении и использовании при программировании, поскольку вы можете создавать несколько разнородных экземпляров и пробовать разные вещи, а затем уничтожать их, когда закончите.sudo chown -R $USER /Library/Ruby/Gems/
источник
Работа для меня:
источник
sudo
это команда, которую новички любят, потому что она позволяет так легко делать неправильные вещи, и требуются годы, чтобы научиться быть соответствующим параноиком при ее использовании.Проверьте, верна ли ваша версия Ruby. Если нет, измените это.
Это работает для меня:
источник
update
>chown
. Спасибо! , Я также должен был бежатьbrew install ruby
Установите rbenv с помощью
brew install rbenv
;Затем положить
eval "$(rbenv init -)"
в конец ~ / .bash_profile (или ~ / .zshrc MacOS);Открой новый терминал и беги
gem install ***
будет работать!источник
❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Как отметил Боббдельсол, rehash работал на меня:
источник
Протестировано на MacOS Mojave С УСПЕХОМ:
Удалите все ваши старые версии ruby (допустим, у вас есть 2.00 и 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Установите новую версию ruby:
$ brew install ruby
Установите псевдоним по умолчанию для вашей версии:
$ rvm alias create default ruby
Перезагрузите систему, потому что это самый безопасный способ, которым ваш компьютер загружает новую версию ruby, недавно установленную.
После того, как вы сделали вышеописанную процедуру, вы можете успешно выполнить любую
gem
команду.источник
cd /Library/Ruby/Gems/2.0.0
открытый .
щелкните правой кнопкой мыши, чтобы получить информацию
нажмите замок
введите пароль
заставить все читать и писать.
источник
дать пользователю $ whoami для создания чего-нибудь в этой папке
источник
Вы можете использовать: gem install cocoapods --pre --user
источник
Установка gem или обновление RubyGems завершается с ошибкой прав доступа, затем введите эту команду
источник
Я использовал это и работал.
$ sudo chown myuser /var/lib/gems
источник
sudo
.Причина ошибки в том, что вы не вошли в систему как пользователь root на терминале.
Если у вас уже есть root, включите на вашем Mac в терминале
Если у вас нет пользователя root, вам нужно включить его, выполнив следующие действия
Более того же на http://support.apple.com/kb/ht1528
По крайней мере, это работает для меня после того, как я застрял на пару часов.
источник