8 ответов:
в конечном итоге установка ruby через homebrew. Сначала установите homebrew:
выполнить
brew install rubyпосле этого он работал безупречно. Это имеет какое-то отношение к собственной установке ruby.
Если у вас возникли проблемы с установкой конкретного драгоценного камня после установки ruby через Homebrew (как указано выше), попробуйте следующее:
sudo gem install -n /usr/local/bin GEM_NAME_HEREнашел это благодаря пользователю endoplasmic в этой теме вопроса:https://github.com/sass/sass/issues/1768
начиная с El Capitan, Apple предотвращает изменение пользовательских приложений
/usr/binпо соображениям безопасности. Поэтому просто установите / обновите rubygems в рекомендованной папке,/usr/local/bin:sudo gem update -n /usr/local/bin --system
это "проблема" (Apple называет это функцией) 10.11. В принципе, вы не можете изменить
/usr/binв 10.11 (даже не как root (sudo su -), есть ряд других папок, которые также не может быть изменен).если вы запустите
ls -l /usr/binвы заметите, что разрешения555илиr-xr-xr-x(нет доступа на запись). Вы не можете изменить эти разрешения с помощьюchmod.эта функция имеет немного неправильное название: "без корней". Apple говорит, что это безопасность мера:
https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really
вы можете вернуть функцию, используя эту суть:
https://gist.github.com/djtech42/7233c602fda912d96fdf
#!/bin/bash #Beta 4 to Final Public Release (Must be run in Recovery Mode) csrutil disable #Beta 1-3 sudo nvram boot-args="rootless=0";sudo rebootP.S. Некоторые пользователи говорят, что это не работает, и что вы должны сначала загрузиться в recovery, как и они здесь:
https://www.macbartender.com/system-item-setup/
Я не рекомендую вам делать это. Лучшее решение, это просто установить
ruby(и почти все остальное) через доморощенного, так как у вас все еще есть доступ к записи/usr/local, пока Apple не решит, что это слишком опасно ...
для тех, у кого все еще есть эта проблема, в основном это было обновление безопасности, которое Apple выпустила в новой OSx. Это защита целостности системы, которая в основном является" безродной " системой безопасности. Выполните следующие действия, чтобы отключить:
http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/
Обратите Внимание это должно быть сделано только если вы понимаете, что вы делаете и зачем!
Я также столкнулся с этой проблемой при обновлении cocopods, моя операционная система-macOS Sierra, версия ruby-2.0.0.Следующий способ решить мою проблему.
через homebrew обновите свою версию ruby.
brew upgrade rubyЕсли вы не можете обновить ruby, эта ссылка может помочь вам.
Если у вас установлено несколько rubygems (скажем, из homebrew, rbenv, rvm), чтобы настроить обновление на установленные по умолчанию Apple rubygems, вам может потребоваться использовать абсолютный путь
/usr/bin/gemчтобы убедиться, что этот конкретный rubygems обновляется:# Note the absolute path to /usr/bin/gem: sudo /usr/bin/gem update -n /usr/local/bin --system
у меня есть эта проблема, когда я пытаюсь удалить и переустановить cocoapods. После поиска я обнаружил, что решение временно отключает защиту целостности системы, а затем повторно включает защиту целостности системы при выполнении работ.
вот шаги.
1) перезагрузите компьютер MAC и удерживайте Command+R, пока не появится экран режима восстановления загрузки.
2) в этом режиме восстановления, посмотрите на верхний файл меню "утилита" и выберите терминал, чтобы открыть Терминал
3) введите эту команду ниже
csrutil disable / rebootваш Mac перезагрузится сейчас, как только он перезагрузится до нормального экрана, вы можете проверить, чтобы убедиться, что вы отключили защиту целостности системы, снова откройте терминал и введите следующий код
csrutil statusтеперь вы можете выполнить задачу, которую вы хотите выполнить.
4) повторно включить защиту целостности системы После завершения работы настоятельно рекомендуется повторно включить систему Защита Целостности
5) перезагрузите компьютер Mac в режим восстановления снова. (Удерживайте нажатой клавишу Command+R)
6) откройте терминал, когда вы находитесь в режим восстановления
7) введите следующий код
csrutil enable /rebootопять же, чтобы убедиться, что вы снова включили защиту целостности системы, после перезагрузки используйте терминал для проверки с помощью
csrutil status.надеюсь, что это поможет всем, у кого есть такая же проблема.
Comments