Невозможно установить камни на OS X "El Capitan"

Я не могу установить и запустить fakes3 gem на бета-версии El Capitan 5.

Я пробовал:

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3

Затем я попытался сделать это способом cocoapods. Он работал на cocoapods, но не на подделки.

mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Ответ 1

Отказ от ответственности: @theTinMan и другие разработчики Ruby часто указывают на то, чтобы не использовать sudo при установке драгоценных камней и указывать на такие вещи, как RVM. Это абсолютно верно при разработке Ruby. Идем дальше и используем это.

Однако многие из нас просто хотят, чтобы некоторые бинарные файлы были распределены как драгоценный камень (например, fakes3, cocoapods, xcpretty...). Я определенно не хочу беспокоиться об управлении отдельным рубином. Вот ваши быстрые варианты:

Вариант 1: продолжайте использовать sudo

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

Проблема заключается в том, что эти двоичные файлы установлены в /usr/bin, что является off-limits с El Capitan. Однако вы можете установить их в /usr/local/bin. То, что Homebrew установит его, поэтому возможно уже существует.

sudo gem install fakes3 -n/usr/local/bin

Gems будет установлен в /usr/local/bin, и каждый пользователь вашей системы сможет их использовать, если он находится в PATH.

Вариант 2: установите в свой домашний каталог (без sudo)

Ниже будут установлены драгоценные камни в ~/.gem и поместите двоичные файлы в ~/bin (которые вы должны добавить в свой PATH).

gem install fakes3 --user-install -n~/bin

Сделайте это по умолчанию

В любом случае вы можете добавить эти параметры в свой ~/.gemrc, чтобы не помнить их:

gem: -n/usr/local/bin

то есть. echo "gem: -n/usr/local/bin" >> ~/.gemrc

или

gem: --user-install -n~/bin

то есть. echo "gem: --user-install -n~/bin" >> ~/.gemrc

(Совет. Вы также можете ввести --no-document, чтобы пропустить создание документации разработчика Ruby.)

Ответ 2

В моем случае мне пришлось переустановить Ruby с помощью Brew. Это, похоже, решило проблему, поскольку я могу снова установить драгоценные камни.

brew install ruby

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

Ответ 3

Это из-за новой функции безопасности OS X "El Capitan". Попробуйте добавить --user-install вместо использования sudo:

$ gem install *** --user-install

Например, если вы хотите установить fake3, просто используйте:

$ gem install fake3 --user-install

Ответ 4

sudo gem install -n /usr/local/bin cocoapods

Попробуйте это. Это будет определенно работать.

Ответ 5

Вам нужно обновить Xcode до новейшего (v7.0.1), и все будет работать нормально.

Если после установки новейшего Xcode и все еще не работает, попробуйте установить gem таким образом:

sudo gem install -n /usr/local/bin GEM_NAME_HERE

Например:

sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy

Ответ 6

Похоже, при обновлении до OS X El Capitain каталог /usr/local изменяется несколькими способами:

  • Пользовательские разрешения reset (это также проблема для людей, использующих Homebrew).
  • бинарные и символические ссылки могут быть удалены или изменены

[Edit] Также есть предварительная вещь: обновить Xcode...

Решение для # 1:

$ sudo chown -R $(whoami):admin /usr/local

Это приведет к исправлению разрешений в каталоге /usr/local, который затем поможет командам gem install и brew install|link|... работать правильно.

Решение для # 2:

Проблемы на основе Ruby

Убедитесь, что вы установили разрешения каталога /usr/local (см. # 1 выше)

Сначала попробуйте переустановить свой камень, используя:

sudo gem install <gemname>

Обратите внимание, что он установит последнюю версию указанного драгоценного камня.

Если вы не хотите сталкиваться с проблемами обратной совместимости, я предлагаю вам сначала определить, какую версию этого жемчужина вы хотите получить, а затем переустановить с помощью -v version. См. Пример ниже, чтобы убедиться, что система не получит новую версию capistrano.

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0

Brew

Обновить brew и обновить формулы

$ brew update
$ brew upgrade

Вам также может потребоваться повторно связать некоторые из них вручную

$ brew link <formula>

Ответ 7

Как уже было сказано, проблема связана с функцией безопасности Mac OSX с "El Capitan".

Используя стандартную систему Ruby, процесс установки происходит в каталоге /Library/Ruby/Gems/2.0.0, который недоступен для пользователя и дает ошибку.

Вы можете взглянуть на параметры среды Ruby с помощью команды

$ gem env

Существует УСТАНОВКА И СПРАВОЧНИК УСТАНОВКИ ПОЛЬЗОВАТЕЛЯ. Чтобы использовать каталог установки пользователя вместо установочного каталога по умолчанию, вы можете использовать параметр --user-install вместо этого, используя sudo, который никогда не рекомендуется.

$ gem install myGemName --user-install

В процессе не должно быть никаких прав. Затем камни устанавливаются в каталоге пользователя: ~/.gem/Ruby/2.0.0/bin

Но чтобы установить установленные драгоценные камни, этот каталог должен быть доступен на вашем пути. Согласно Rubys faq, вы можете добавить следующую строку в ~/.bash_profile или ~/.bashrc

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

Затем закройте и перезагрузите терминал или перезагрузите .bash_profile или .bashrc (. ~/.bash_profile)

Ответ 8

Это решение, которое я использовал:

Примечание: это исправление для компаса, поскольку я написал его по другому вопросу SO, но я использовал тот же процесс для восстановления функциональности для всех терминальных процессов, очевидно, что устанавливаемые вами камни разные, но процесс тот же.

У меня была такая же проблема. Это связано с тем, что Apple внедряет System Integrity Protection (SIP). Вы должны сначала отключить это...

Перезагрузка в режиме восстановления:

Перезагрузите и удерживайте Command + R, пока не увидите логотип Apple.

После загрузки выберите Утилиты > Терминал из верхней панели.

type: csrutil disable

затем введите: reboot

После перезагрузки

Откройте терминал и введите команды:

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

Отдельные драгоценные камни, которые не удались, должны быть исправлены, поэтому для каждого выполните следующие действия:

На моей машине это была первая зависимость, не работающая, поэтому я перечислил ее:

sudo gem pristine ffi --version 1.9.3

Перейдите к списку драгоценных камней, которые необходимо отремонтировать. Во всем, что вы смотрите на 10 минут, чтобы исправить это, но у вас будут команды терминала для работы компаса.

Снимок экрана

Ответ 9

Переустановка RVM работала для меня, но мне пришлось переустановить все мои драгоценные камни позже:

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

Ответ 10

Если камень, который вы пытаетесь установить, требует библиотеки xml, а затем попробуйте следующее:

sudo gem install -n /usr/local/bin  <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

В частности, я столкнулся с проблемой при установке nokogiri gem v 1.6.8 на OS X El Capitan

и это, наконец, помогло мне:

sudo gem install -n /usr/local/bin  nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

Чтобы установить libxml2 и libxslt, вы можете сделать:

brew install libxml2 libxslt
brew install libiconv

а затем убедитесь, что у вас установлены инструменты командной строки xcode:

xcode-select --install 

должна вернуть эту ошибку:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

Ответ 11

Мне не нравится устанавливать вещи с sudo. как только вы начинаете с sudo, вы не можете остановиться.

попробуйте предоставить разрешения для каталога Gems.

sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0

Ответ 12

sudo chown -R $(whoami):admin /usr/local

Это даст разрешения (Homebrew устанавливает там рубин)

Ответ 13

Я столкнулся с той же проблемой после установки El Capitan, я попытался установить sass и compass в проект symfony, следующая команда вернула следующую ошибку:

$sudo gem install compass

ОШИБКА: Ошибка установки компаса:   ОШИБКА: Не удалось создать собственное расширение gem.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 

проверка ffi.h.../System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in `try_do ': не удалось выполнить компилятор для создания исполняемого файла. (RuntimeError)

Итак, я тогда попытался установить sass с: $ sudo gem install sass

Появилось одно и то же сообщение об ошибке, после некоторых поисковых запросов мне удалось установить sass, используя следующую команду:

$sudo gem install -n/usr/local/bin sass

Выше работала для меня с установкой sass, но не работала для установки компаса. Я читал, что кто-то где-то открыл экземпляр xcode, затем снова закрыл его, а затем успешно выполнил ту же команду, после которой работал для них. Я попытался открыть xcode, но мне было предложено сообщение о том, что установленная версия xcode несовместима с El Capitan. Поэтому я затем обновил xcode из магазина приложений, перезапустил следующую команду, которая на этот раз успешно работала:

$sudo gem install -n/usr/local/bin compass

Тогда мне удалось запустить $compass init

Теперь у меня есть все мои драгоценные камни, и я могу приступить к созданию прекрасных вещей:)

Ответ 14

Мне пришлось rm -rf ./vendor снова запустить bundle install.