Операция не разрешена - /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
644   8  

8 ответов:

в конечном итоге установка ruby через homebrew. Сначала установите homebrew:

http://brew.sh

выполнить

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 reboot

P.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.Следующий способ решить мою проблему.

  1. через homebrew обновите свою версию ruby.

    brew upgrade ruby

  2. Если вы не можете обновить ruby, эта ссылка может помочь вам.

    https://github.com/Homebrew/legacy-homebrew/issues/49895

Если у вас установлено несколько 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

    Ничего не найдено.