Когда я выполняю команду osx El Capitan:
sudo gem update --system
Я получил ошибку:
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
Когда я выполняю команду osx El Capitan:
sudo gem update --system
Я получил ошибку:
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
закончил установку рубина через доморощенный. Сначала установите homebrew:
затем выполните
brew install 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
.
Эта функция имеет слегка неправильное имя: "rootless". 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 reboot
P.S. Некоторые пользователи говорят, что это не работает, и что вы должны сначала загрузиться в восстановление, как они это делают:
https://www.macbartender.com/system-item-setup/
Я не рекомендую вам это делать. Лучшее решение - просто установить ruby
(и почти все остальное) через Homebrew, так как у вас все еще есть доступ на запись к /usr/local
, пока Apple не решит, что это слишком небезопасно...
Для тех, у кого эта проблема, в основном это обновление безопасности, выпущенное Apple в новой ОС. Это системная защита целостности, которая в основном является "бескорневой" системой безопасности. Выполните следующие действия, чтобы отключить:
http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/
Обратите внимание Это нужно делать, только если вы понимаете, что делаете и почему!
Я также столкнулся с этой проблемой при обновлении cocopods, моей операционной системой является macOS Sierra, рубиновая версия 2.0.0. Следующим способом решения моей проблемы.
Через домашнюю страницу обновите свою рубиновую версию.
brew upgrade ruby
Если вам не удалось обновить ruby, эта ссылка может вам помочь.
Если у вас есть несколько установок rubygems (скажем, из homebrew, rbenv, rvm), чтобы настроить обновление на рубигемы, установленные Apple по умолчанию, вам может понадобиться использовать абсолютный путь /usr/bin/gem
для обеспечения обновления этих конкретных рубигемов:/p >
# 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.
Надеюсь, что эта помощь поможет всем, у кого есть такая же проблема.