Подтвердить что ты не робот

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

Ответ 1

закончил установку рубина через доморощенный. Сначала установите homebrew:

http://brew.sh

затем выполните

brew install ruby

после этого он работал безупречно. Это имеет какое-то отношение к встроенной рубиновой установке.

Ответ 2

Если у вас возникли проблемы с установкой конкретного драгоценного камня после установки ruby ​​через Homebrew (как указано выше), попробуйте следующее:

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

Нашел это благодаря пользователю endoplasmic по этой теме: https://github.com/sass/sass/issues/1768

Ответ 3

Начиная с El Capitan, Apple запрещает пользовательским приложениям изменять /usr/bin по соображениям безопасности. Поэтому просто установите/обновите rubygems в рекомендуемой папке, /usr/local/bin:

sudo gem update -n /usr/local/bin --system

Ответ 4

Это "проблема" (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 не решит, что это слишком небезопасно...

Ответ 5


Для тех, у кого эта проблема, в основном это обновление безопасности, выпущенное Apple в новой ОС. Это системная защита целостности, которая в основном является "бескорневой" системой безопасности. Выполните следующие действия, чтобы отключить:

http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/

Обратите внимание Это нужно делать, только если вы понимаете, что делаете и почему!

Ответ 6

Я также столкнулся с этой проблемой при обновлении cocopods, моей операционной системой является macOS Sierra, рубиновая версия 2.0.0. Следующим способом решения моей проблемы.

  • Через домашнюю страницу обновите свою рубиновую версию.

    brew upgrade ruby

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

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

Ответ 7

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

Ответ 8

У меня есть эта проблема, когда я пытаюсь удалить и переустановить 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.

Надеюсь, что эта помощь поможет всем, у кого есть такая же проблема.