Как установить гем или обновить RubyGems, если он не работает с ошибкой прав доступа

559

Я пытаюсь установить 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.

У кого-нибудь есть идеи как это решить?

Gaurav
источник
5
Вот мое решение: stackoverflow.com/questions/34071868/…
LanceP
2
моя ошибка произошла из-за того, что я делаю: обновление самоцветов cocoapods правильно: обновление самоцветов cocoapods
Abhishek Thapliyal
60
sudo chown -R $USER /Library/Ruby/Gems/
Васкорт
2
просто использование этой команды сработало для меня: sudo gem install mygem
Jayprakash Duby
1
я использовал оболочку zsh, и это была проблема пути в ~ / .zshrc. я использовал эту строку в конце файла, и она работала для меня: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Ответы:

317

У вас нет прав на запись в каталог /Library/Ruby/Gems/1.8.

означает, что у вас нет разрешения писать там.

Это версия Ruby, установленная Apple, для собственного использования. Несмотря на то, что можно вносить незначительные изменения в это, если вы знаете, что делаете , потому что вы не уверены в проблеме с разрешениями, я бы сказал, что не стоит продолжать идти по этому пути.

Вместо этого я настоятельно рекомендую вам изучить использование rbenv или RVM для управления отдельным Ruby, установленным в изолированную программную среду в вашем домашнем каталоге, который вы можете изменить / fold / spindle / change, не беспокоясь о том, чтобы испортить систему Ruby.

Между этими двумя я использую rbenv, хотя в прошлом я часто использовал RVM. rbenv использует более простой подход к управлению установкой Ruby. RVM обладает множеством функций и является очень мощным, но в результате более навязчивым. В любом случае, ПРОЧИТАЙТЕ для них документацию по установке пару раз, прежде чем начинать установку, в зависимости от того, что вы выберете.

жестяной человек
источник
176
Вам не нужно использовать отдельную библиотеку Ruby. Просто поставьте «sudo» перед собой, как предлагал Майкл выше.
serraosays
37
Смена владельца установки Apple на Ruby не очень хорошая идея, потому что Система устанавливает / обновляет, а Дисковая утилита может автоматически возвращать / восстанавливать владельца и права доступа к каталогу. Это расстроит пользователя и может расстроить операционную систему и код, который ожидает наличия прав на запись / владения этими каталогами. Apple устанавливает приложения, которые используют свой Ruby и могут ожидать определенной версии или поведения, чтобы они могли сломаться. Зачем беспокоиться, когда проще и безопаснее использовать RVM или rbenv и не беспокоиться об этом.
Жестянщик
203
Для таких, как я, которые на самом деле не занимаются разработкой ruby ​​и не хотят полчаса бездельничать, пытаясь понять, что же это за хрустальные штуки. brew install rubyрешит ваши проблемы с зависимостями чистым способом, который не уничтожит установку Apple. Если вы уже sudoобновили первоначальную установку и беспокоитесь о том, что вы сделали, вы сможете отменить это следующим образом:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
Louis
21
« 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. Вздох ....
Жестянщик
55
Решено: на El Captain brew install rubyпросто закройте Терминал и снова откройте его.
Фмессина
421

Попробуйте добавить --user-installвместо использования sudo:

gem install mygem --user-install
nathanwhy
источник
4
Я не знаю, почему твой ответ не был опубликован раньше. --user-installВариант, по- видимому уже некоторое время. Я просто хотел бы, чтобы вы написали это ранее. =)
Майкл - Где Клэй Ширки
7
Это должно пойти на вершину! Установка с помощью sudo или su - плохая идея, поскольку вы применяете систему разрешений для модулей, и, возможно, глобально установленные пакеты могут конфликтовать с установленными в противном случае пакетами или зависимостями других проектов. Использование rbenv требует установки другого программного обеспечения и добавляет уровень сложности.
Юбер Гжесковяк
7
Это работает, но предупреждает: «ВНИМАНИЕ: у вас нет /Users/<username>/.gem/ruby/2.0.0/bin в вашем PATH, исполняемые файлы gem не будут запускаться». Следующая ссылка содержит полезные инструкции о том, как обновить ваш путь (без использования vi) hathaway.cc/post/69201163472/…
Давид
4
Это просто и логично. Добавьте путь ruby, если у вас его нет в bashrc. 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
Inder Kumar
1
Может ли это испортить систему Apple (установленную ruby)?
Даниэль Спрингер,
93

Вы действительно должны использовать менеджер версий 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 (обычно не очень хорошо)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 переключает меня на более новую, предварительно установленную версию (см. ссылки ниже).

Это показывает, что я использую более новую версию Ruby (которая, скорее всего, не вызовет Gem :: FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

Обычно вам не нужно вводить команду gem с помощью sudo. Если вы чувствуете необходимость сделать это, возможно, что-то неправильно настроено.

Для получения подробной информации о rbenv смотрите следующее:

L3x
источник
7
Вам не нужно возиться с пропуском самостоятельно, если вы используете rbenv, если вы следуете инструкциям по установке Homebrew , все, что вам нужно сделать, это добавить eval "$(rbenv init -)"в конфигурацию вашей оболочки и rbenvпозаботиться о том, чтобы настроить ее PATHдля себя.
Спасибо. Я забыл 'rbenv global', поэтому я все еще использовал системный ruby, и установка gem не удалась.
Грэм Перкс
75

Почему бы тебе не сделать:

sudo gem update --system
Bobz
источник
39
Установка гемов как root не очень хорошая идея. stackoverflow.com/questions/2119064/…
spuder
Были проблемы с brew upgrade Error: Permission denied.... Это исправило это. Спасибо!
Остап Андрусов
12
Никогда не используйте SUDO, если вы должны это сделать, вы сделали что-то не так в вашей настройке. Пожалуйста, используйте rbenv или rvm.
Крис Хау
14
Почему каждый отвечает на проблемы с разрешениями, чтобы всегда бросать sudo перед командой? Как это лучшая практика?
Стивен
hyh: qzc.xcodeproj ylgwhyh $ gem install cocoapods ОШИБКА: во время выполнения gem ... (Gem :: FilePermissionError) У вас нет прав на запись в каталог /Library/Ruby/Gems/2.0.0.
ylgwhyh
40

Это решит проблему с MacOs Mojave и MacOs Catalina простым способом:

brew install ruby

Затем установите GEM_HOME в свой каталог пользователя. На терминале:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

ИЛИ если на Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Fmessina
источник
2
как ты это узнал? Работал!
kuzdu
2
Ты мужчина! высокие пять, это действительно работает как шарм. большое спасибо.
Мистер Динкельман
1
Это не сработало для меня, пока я не побежал xcode-select --install. Это необходимо для компиляции расширений.
Марк Перрен-Пеллетье
Я запустил это, и я хочу иметь возможность сбросить изменения, сделанные этим, вы знаете, как отменить это? @Fmessina
КаренАнн
это должно сработать: отредактируйте ваш файл ~/.bashrcили ~/.zshrcфайл, удалите 3 добавленные строки, а затем снова запустите source ~/.bashrcкоманду
Fmessina
34

Для меня проблема была связана с использованием rbenvи забыванием установить правильную версию глобально.

Поэтому я должен был установить его с rbenv global xxx

В моем случае я установил, 2.0.0-p247поэтому я должен был выполнить команду:

rbenv global 2.0.0-p247
rbenv rehash

Тогда все работало нормально.

Хендрик
источник
3
Для тех из вас, кто уже использовал rbenv и начал получать сообщение об ошибке разрешения при установке гемов после обновления OSX до более новой версии: вам следует начать с установки, например, версии rbenv, rbenv global 2.1.1а затем выполнить с rbenv rehash. Теперь перезапустите вашу gem installкоманду.
njappboy
1
^ Это + перезапустить терминал.
XåpplI'-I0llwlg'I -
1
будущие исследователи: перезапись rbenv устарела github.com/rbenv/rbenv-gem-rehash
TCannadySF
У меня сработало отлично! Это было то, чего rbenv rehashмне не хватало.
jamesmarkcook
Стоит отметить, что это системный ruby, которому не хватало бы разрешений, и rbenv использовал бы системный ruby, если бы не был установлен глобальный ruby. Это должно быть проверено с rbenv versions.
Деннис
23

Вы должны исправить свои пути.

Чтобы определить, будет ли работать это исправление, выполните следующее:

which gem

Это должно вывести каталог, к которому у вас нет прав доступа:

/usr/bin/gem

Чтобы исправить это, выполните следующие действия:

  1. Определите путь, который необходимо скопировать в свой профиль:

    rbenv init -

    Первая строка вывода - это строка, которую нужно скопировать в свой профиль:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Скопируйте путь к своему профилю и сохраните его.

  3. Перезагрузите свой профиль ( source ~/.zshenvдля меня).

  4. Беги rbenv rehash.

Теперь при запуске which gemвы должны получить локальный путь, к которому у вас есть разрешения:

/Users/justin/.rbenv/shims/gem
Джастин Левек
источник
Это была проблема в моей ситуации. Вы должны иметь возможность включить eval "$(rbenv init -)"в свой состав ~/.bash_profileвсе необходимые изменения.
Ньи
лучший ответ. Мой профиль был назван .bash_profile, и вы можете открыть файл следующим образом: touch ~ / .bash_profile; откройте ~ / .bash_profile и добавьте строку, которую вы упомянули в пункте 1.
CarmenA
17
sudo gem update --system
sudo gem install (gemfile)
Элиот Арнц
источник
В macOS Mojave, sudoне имеет разрешения. хаха
DawnSong
17

Это сработало для меня. Кроме того, если вы установили гемы как root ранее, это решит эту проблему, вернув вам право собственности (лучше с точки зрения безопасности).

sudo chown -R `whoami` /Library/Ruby/Gems
thebiggestlebowski
источник
1
Большой НЕТ! Никогда не меняйте права доступа к /Libraryпапке, система может сломаться в будущих обновлениях. (извините за поздний ответ)
Raptor
@Raptor Я изменяю права доступа к подпапке, а не "/ Library". В моем случае я по ошибке установил гемы как root, поэтому я хотел отменить это. Нет никаких отрицательных последствий, о которых я могу думать теоретически, и не было никаких, которые я наблюдал. Мне любопытно - почему вы думаете, что это плохая идея?
thebiggestlebowski
Путь для системы. Дальнейшие обновления macOS могут сломаться.
Raptor
Драгоценный камень установлен по умолчанию в этом месте. Это было непригодно, потому что он был по ошибке установлен как root (sudo) вместо моего обычного пользователя. Результат того, что я сделал, был таким же, как если бы я сначала установил как $ USER. Я не вижу вреда. Большинство других ответов здесь предлагают тот же результат / решение, но разные способы его достижения. Я до сих пор не вижу проблемы. Вы говорите, что гемы не должны быть установлены в / Library?
thebiggestlebowski
15

Есть два маршрута: используйте либо rbenv, либо RVM. Ниже приведены рецепты для обоих. Перед этим вы, вероятно, захотите отключить установку локальных документов для драгоценных камней.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Затем:

install rbenv

install ruby-build

запустить:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

Это устанавливает актуальную версию системы драгоценных камней в ваших локальных каталогах. Это означает, что вы не вмешиваетесь в конфигурацию системы. Если вы задаете этот вопрос, вам не следует возиться с безопасностью системы, и вы потратите больше времени на понимание проблем, с которыми вы можете столкнуться, чем на простой способ избежать проблемы, с которой вы начали. Познакомьтесь с InfoSec позже, когда узнаете больше об операционной системе и программировании.

В качестве альтернативы используйте вместо этого «RVM»: Для установки rvm выполните:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

Это приводит к тому же результату: вы получаете локальную систему Ruby and Gem, которая не мешает системным версиям. Нет необходимости в Homebrew, или в перегрузке системных библиотек и т. Д.

JezC
источник
13

Я нашел это с практическими рекомендациями для sudoменьшего драгоценного камня :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. добавить экспорт в .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. И, наконец, добавьте это к себе ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system

gopek
источник
Я использовал brew install rebenv ruby-build, то есть systemпосле моего каталога? Есть идеи, что вызвало это и как от этого избавиться system?
7537247
13

Попробуйте ответ Натана, прежде чем использовать мой оригинальный ответ ниже. Его рекомендация --user-installдолжна выполнить ту же самую цель, не прибегая к гадости с вашей .bash_profileили версией рубина.


Если вас не интересует конкретная версия ruby, вы можете пропустить дополнительные параметры менеджера среды ruby и просто добавить эти строки в ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Путь украден из оригинального вывода gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

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

Майкл - Где Клэй Ширки
источник
3
+1: это отлично сработало для меня. Не каждый является системным администратором машины, которую они используют, и, следовательно, не у всех есть доступ к «sudo», «chown» или подобным инструментам. Аналогичным образом, люди должны знать о «gem install --user-install», который устанавливает гем в каталог в домашнем каталоге пользователя, а не в тот, который используется всеми пользователями.
Какой-то парень
12

Мне нужно было сделать rbenv rehashтак, чтобы это указывало на мою местную библиотеку Gem.

Похоже, что ваш менеджер драгоценных камней указывает на системную библиотеку, поэтому вместо того, чтобы возиться с разрешениями, сделайте эквивалент «перефразировки» для вашего менеджера, чтобы все указывалось локально.

bobbdelsol
источник
3
будущие исследователи: перезапись rbenv устарела github.com/rbenv/rbenv-gem-rehash
TCannadySF
12

Старше и мудрее

Не делай то, что я здесь говорю, просто знай, что будь осторожен в любое время sudo. Вы, вероятно, хотите использовать что-то вроде rbenvизоляции любой работы, которую вы делаете.


прочь

узнать о chown

Я не знаю, нравится ли вам командная строка, но это сделает работу над любым проектом с любым инструментом, устанавливающим пакеты в вашу систему, быстрым.

chown насколько я могу судить, означает смену владельца.

Причина, по которой я искал этот ответ, заключается в том, что gem installя сегодня бросил эту ошибку:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

Это прекрасная возможность использовать chown . Вы видите, что Ruby предоставил нам каталог, к которому ему нужен доступ, и кажется, что это каталог, который он будет использовать довольно часто.

В этом случае есть только три вещи, которые нужно знать, чтобы решить проблему, но chownона намного мощнее и предоставляет вам гораздо больше гибкости, чем я продемонстрирую сейчас. Пожалуйста, обратитесь к источнику в нижней части для получения дополнительной информации.

Две вещи

  1. имя пользователя
  2. каталог

Если вы находитесь в оболочке, найти имя пользователя легко. Просто посмотрите на подсказку. Моя выглядит так:

breadly@breadly-desktop:~\Desktop

Текущий пользователь - это просто имя перед @. Мы знаем каталог из сообщений об ошибках, но у вас есть два варианта. Вы можете либо ограничить свое разрешение текущей версией ../gems/1.9.1, либо дать себе разрешение на запись для драгоценных камней всех версий, используя../gems .

Команда для фактического изменения владельца будет выглядеть следующим образом.

chown -R $(whoami) /absolute/path/to/directory

Это -Rизвестно как флаг, и -Rфлаг обычно говорит команде делать что-то рекурсивно, или, другими словами, выполнять команду для каждой вещи, которая содержится в каталоге, и всех вещей, содержащихся в каталогах, содержащихся внутри, и так далее до больше ничего нет

Breedly
источник
Кроме того, если вы хотите узнать, к какой группе принадлежит ваш пользователь, вы можете обратиться к этому. stackoverflow.com/questions/350141/…
Breedly
3
Тем не менее, вы можете быть осторожны при смене владельца, если он должен быть установлен в каталог / usr / local / bin.
Breedly
16
Изменение владения чем-либо в путях / usr, / Library или / var, среди прочего, является плохой идеей. Система может остановиться из-за недоступности файлов и драйверов, а последующие обновления могут прерваться, если установщик обнаружит, что пути больше не принадлежат root: wheel. Устранение ущерба может быть очень трудным и обычно лучше всего сделать, переустановив ОС. Наивные / неопытные пользователи недостаточно разбираются в ОС, чтобы понять, какие файлы / каталоги могут быть безопасными, и их следует предостерегать, чтобы не попробовать это дома.
Жестянщик
Лол, это неловкий ответ. :) Наверное, старше и мудрее.
Breedly
11

Я отформатировал свой Mac, и многие предложенные решения не сработали для меня. Для меня сработали эти команды в правильном порядке:

  1. Установите Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Установите Ruby:

    brew install ruby
  3. Установить компас:

    sudo gem install compass
Херби Штини
источник
Вы никогда не должны использовать sudoдля установки чего-либо с Gem. Использование sudoустанавливает его в Ruby, принадлежащий системе, а не в тот, который у вас есть. Использование изолированного Ruby намного проще в управлении и использовании при программировании, поскольку вы можете создавать несколько разнородных экземпляров и пробовать разные вещи, а затем уничтожать их, когда закончите.
Оловянный Человек
6

Работа для меня:

sudo gem uninstall cocoapods

sudo gem install cocoapods
evya
источник
Удивительно сработало для меня aswel! Спасибо. Сэкономленные усилия по установке rbenv или RVM
NaXir
5
Пониженное голосование, потому что, как было отмечено в других комментариях, установка гемов от имени root является опасной практикой. Установщик может сделать что угодно буквально с вашей системой.
Какой-то парень
@SomeGuy: «Установщик может делать буквально все, что угодно» ... более вероятно, что пользователь сам может выполнить команду и манипулировать системой. Я не могу вспомнить, когда установщик испортил мою систему, но я точно помню, как это делал я. sudoэто команда, которую новички любят, потому что она позволяет так легко делать неправильные вещи, и требуются годы, чтобы научиться быть соответствующим параноиком при ее использовании.
Оловянный Человек
1
Лучший ответ !!!! После запуска этих 2 команд, пожалуйста, перезапустите Терминал и все! Большое спасибо!!!
НОЧИ ОБОРОНИТЕ
4

Проверьте, верна ли ваша версия Ruby. Если нет, измените это.

Это работает для меня:

$ rbenv global 1.9.3-p547
$ gem update --system
Zen
источник
Это лучшее решение: update> chown. Спасибо! , Я также должен был бежатьbrew install ruby
Хосе
4

Установите rbenv с помощью brew install rbenv ;

Затем положить eval "$(rbenv init -)" в конец ~ / .bash_profile (или ~ / .zshrc MacOS);

Открой новый терминал и беги gem install ***будет работать!

Zhao
источник
У меня не сработало ❯ 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.
Макс Коплан
2

Как отметил Боббдельсол, rehash работал на меня:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
Арунабх Дас
источник
ооочень близко все же «ОШИБКА: во время выполнения gem ... (Gem :: FilePermissionError) У вас нет прав записи в каталог /Library/Ruby/Gems/2.0.0».
JGallardo
1

Протестировано на MacOS Mojave С УСПЕХОМ:

  1. Удалите все ваши старые версии ruby ​​(допустим, у вас есть 2.00 и 2.3.0):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. Установите новую версию ruby:

    $ brew install ruby

  3. Установите псевдоним по умолчанию для вашей версии:

    $ rvm alias create default ruby

  4. Перезагрузите систему, потому что это самый безопасный способ, которым ваш компьютер загружает новую версию ruby, недавно установленную.

После того, как вы сделали вышеописанную процедуру, вы можете успешно выполнить любую gemкоманду.

Марсело Гумьеро
источник
-2

cd /Library/Ruby/Gems/2.0.0

открытый .

щелкните правой кнопкой мыши, чтобы получить информацию

нажмите замок

введите пароль

заставить все читать и писать.

myklgee
источник
1
Пожалуйста, найдите время, чтобы отформатировать ваш ответ для удобства чтения. Усилия, которые вы вкладываете в исследования и объяснения, окупаются.
Жестянщик
-2

дать пользователю $ whoami для создания чего-нибудь в этой папке

sudo chown -R user /Library/Ruby/Gems/2.0.0
Рама Астадипати
источник
Нет. Эта папка принадлежит системе по уважительной причине, система использует ее для своих собственных целей. Можно запустить скрипт, который на него указывает, но создайте и используйте Ruby в песочнице, если вы хотите возиться с ним.
Оловянный Человек
-3

Вы можете использовать: gem install cocoapods --pre --user

Alex_Burla
источник
-4

Установка gem или обновление RubyGems завершается с ошибкой прав доступа, затем введите эту команду

sudo gem install cocoapods
Хардип Калола
источник
1
Это было рассмотрено в других ответах. Пожалуйста, прочитайте другие ответы, прежде чем создавать один, чтобы убедиться, что ваш предлагает что-то новое.
Жестянщик
-6

Я использовал это и работал.

$ sudo chown myuser /var/lib/gems

Фелипе Франциско
источник
Смотрите комментарии в других ответах об использовании sudo.
Оловянный Человек
-18

Причина ошибки в том, что вы не вошли в систему как пользователь root на терминале.

Если у вас уже есть root, включите на вашем Mac в терминале

$ su

Если у вас нет пользователя root, вам нужно включить его, выполнив следующие действия

  1. В меню Apple выберите «Системные настройки».
  2. В меню «Вид» выберите «Пользователи и группы».
  3. Нажмите на замок и войдите в систему под учетной записью администратора.
  4. Нажмите Параметры входа….
  5. Нажмите кнопку «Изменить…» или «Присоединиться…» в правом нижнем углу.
  6. Нажмите кнопку «Открыть каталог».
  7. Нажмите на замок в окне утилиты каталогов.
  8. Введите имя учетной записи администратора и пароль, затем нажмите OK.
  9. Выберите Enable Root User в меню Edit.
  10. Введите пароль пользователя root, который вы хотите использовать, в поля «Пароль» и «Проверка», затем нажмите «ОК».

Более того же на http://support.apple.com/kb/ht1528

По крайней мере, это работает для меня после того, как я застрял на пару часов.

Мухаммед Ариф
источник
Почему голосование за? Ребята, пожалуйста, напишите причину этого?
Мохаммед Ариф
8
Установка гемов от имени root - плохая идея. stackoverflow.com/questions/2119064/…
spuder