Установка в Homebrew ошибок


112

Попытка установить rvm и ruby ​​1.9.2

Я уже установил homebrew и git, но не смог получить полные обновления, потому что продолжал получать ошибки разрешений. Переустановил Snow Leopard и восстановил разрешения.

Вот такое бывает ...

$ brew install wget

Ошибка: не удается записать в / usr / local / Cellar


stackoverflow.com/questions/4804169/... должен быть отмечен как общепринятом ответ - я боюсь , что посетители , которые не видят , что этот вопрос не ответили они будут двигаться дальше
DMO

Ответы:


274

sudo chown -R $USER /usr/local

Вы должны будете дать себе право /usr/local/использовать эту линию прямо здесь. Мне пришлось сделать это самому после использования однострочника ruby ​​в верхней части официальных документов для установки Homebrew. Сработало для меня как шарм. Это должен быть единственный раз, когда вам когда-либо понадобится sudoHomebrew.

Я не уверен, что это делает рубиновый однострочный. Если это так, то с тех пор что-то еще в моей системе взяло под свой контроль /usr/local.

Изменить : я полностью пропустил это, но @samvermette этого не сделал (см. Ответы на мой ответ): если вы запустите эту команду выше и установили что-то через homebrew, для чего требуются специальные разрешения пользователя, например mysql, обязательно верните эти разрешения (как вышеприведенная команда дает вам рекурсивное владение всем внутри /usr/local( $USER). В случае mysql это ...

sudo chown -RL mysql:mysql /usr/local/mysql/data


16
Обратите внимание : эта команда удаляет право собственности на / usr / local / mysql / data у mysqlпользователя. В моем случае это помешало запуску mysql. Исправьте это с помощью:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette

24
Я избежал проблемы с mysql, используя, sudo chown -R $USER /usr/local/Cellarпоскольку /usr/local/у меня уже были правильные разрешения
Паркер

1
Увы, пользователи приходят и уходят ... возможно, когда-нибудь Ибрагим вернется и отметит это. Может быть. (Вероятно, нет.)
Бен Кригер

4
Мне не нравится этот ответ. Предполагается, что только один пользователь когда-либо использует систему и этот пользователь должен владеть всем / usr / local, несмотря на то, что вопрос касается только homebrew. Не работает ли brew с многопользовательскими системами? Это неряшливый ответ, даже если он действительно работает. Кроме того, он не объясняет, как пользователь мог столкнуться с этой ситуацией. Подсказка - я установил HomeBrew, используя канонические инструкции, а затем восстановил его из резервной копии TimeMachine (на другую машину). Я подозреваю, что именно это восстановление изменило право собственности на файл.
Джейсон Р. Кумбс

1
Я согласен с @ JasonR.Coombs; люди не должны использовать это неаккуратное решение, не понимая его практических последствий и безопасности. Любое программное обеспечение в / usr / local теперь может быть перезаписано чем-либо, запущенным под вашим пользователем, что открывает брешь в безопасности. Вполне возможно, что вы испортите что-то еще (помимо MySQL), запустив вслепую первую команду chown, после чего будет слишком поздно идентифицировать и исправлять все, что вы, возможно, только что напортачили.
ограбить

41

У меня возникла эта проблема после обновления до Mavericks, и эта страница была лучшим результатом поиска при поиске сообщения об ошибке в Google. Я продолжил поиск и нашел этот ответ на stack overflow.com . Короче говоря, это:

sudo chmod a+w /usr/local/Cellar

Это устранило проблему для меня, и, поскольку это изменяет разрешения только для определенного пути, указанного в сообщении об ошибке, казалось маловероятным, что будут иметь место отрицательные побочные эффекты с другими установками.

Я помещаю этот ответ здесь для всех, кто может найти эту страницу первым, как я. Однако следует отдать должное jdi .


2
Считается ли это безопасным, поскольку теперь каждый может писать в / usr / local / Cellar?
Дэвид Уэлч

Этот ответ не подходит для пакетов, которым требуется доступ к другим папкам (например, /usr/local/bin).
Джейсон Р. Кумбс

11

Вы можете разрешить запись только администраторам /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

С этого момента каждый пользователь, входящий в группу администраторов, сможет устанавливать новые зависимости.


Похоже, лучшее решение для машин с несколькими администраторами (хотя мой каталог / usr / local / lib также нуждался в g + x для работы aspell).
Джеймс Снук

1
Чтобы избежать появления ошибки «Шаг« пивоваренная ссылка »не завершился успешно», вы также можете применить то, что в этом потоке , а именно sudo chgrp -R admin /usr/local/DDDD+, sudo chmod -R g+w /usr/local/DDDDгде DDDD - bin , share , Library / LinkedKegs , opt
superk

1
Спасибо за ответ, мне пришлось использовать "sudo", поэтому, если эта команда не работает, попробуйте
добавить



1

Я предлагаю убедиться, что текущий пользователь является членом группы, которой принадлежит / usr / local. Я считаю, что по умолчанию это группа wheel. Чтобы стать членом этой группы:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Хотя это что-то вроде неэлегантного молотка, он имеет ожидаемый эффект - разрешает доступ к элементам /usr/local, которые предназначены только для использования (чтение / запись) членами с повышенными правами. Этот подход имеет преимущества по сравнению с другими, описанными выше, поскольку он использует членство в группах, позволяя нескольким (авторизованным) пользователям в системе использовать homebrew.


0

Как вы установили Homebrew? Их официальные инструкции по установке включают запуск сценария ruby. Это должно решить проблемы с разрешениями за вас.

Если вы не хотите запускать сценарий, на этой странице есть раздел под названием «Установка в / usr / local для разработчиков», в котором объясняется изменение разрешений, необходимых для каталога / usr / local.


Я использовал скрипт, и он установился, но у него все еще были проблемы с обновлением. Я перенес пользовательские данные на новый ноутбук. Пришлось сделать несколько обходных путей из github b / c, скрипт сначала не работал.
Ибрагим

-3

РЕДАКТИРОВАТЬ : Как упоминалось в комментариях, использовать sudo с homebrew - плохая идея, поэтому не используйте следующий ответ!


Вы также можете предотвратить эту ошибку, если выполните команду с помощью sudo:

$ sudo brew install wget

Но будьте осторожны при использовании, sudoпотому что вы можете наделать много ошибок.


Этот подход не работает с поздними версиями homebrew, которые запрещают вызов от имени пользователя root (через sudo).
Джейсон Р. Кумбс,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.