Сделайте файлы в `/ usr / local` доступными для записи для homebrew

35

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

Он продолжает говорить мне рекурсивно chown /usr/local, и я попробовал это. Операция запрещена, поэтому я sudo'd. Казалось, что это работает, но с жуткой тишиной, которую я слышу, считается вежливым в Unix. К сожалению, любые последующие попытки brew updateвстречаются с одинаковой какофонией ошибок.

Я перезапускаю команду с помощью команды -vи, похоже, что операция не разрешена для чего-либо внутри.

Как бы то ни было, ответ «учиться UNIX», я просто пытаюсь выполнить некоторые требования к работе здесь для учебника по Ruby, так что это несколько шагов выше, где я сейчас нахожусь.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Tigt
источник
Расскажет brew doctorвам что-нибудь полезное? Опубликовать вывод здесь.
Ян С.
@IanC. Это длинный список всего, что связано с пивоварением. Существует ли утилита stackexchange pastebin? Там очень много этого.
Tigt
Ну, это странно. Сейчас этого гораздо меньше, чем было.
Tigt
Просто к вашему сведению: я просто побежал brew updateи обнаружил, что «Homebrew больше не нужно владеть / usr / local». Больше информации в этом вопросе . Очевидно, что для достижения этой
цели

Ответы:

25

Это должно быть решено путем изменения разрешений в этом каталоге следующим образом:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Если вы не знаете свою группу, просто введите id -g.

jherran
источник
Важная часть - -Rсделать его рекурсивным. И вам, вероятно, придется chownиспользовать sudo. Для группы пользователей я обычно использую staffна OS X.
nwinkler
Интересно. Почему использование группы так сильно отличается от просто пользователя?
Tigt
4
Почему ваш пользователь должен принадлежать / usr / local? Я думаю, что это угроза безопасности, так как есть много других программ, которые используют / usr / local и могут быть незаметно приняты. Нужно ли вареву что-то столь радикальное?
dfrankow
1
Я считаю, что это опасно, так как выбирается группа «staff», что означает, что каждый пользователь ОС может затем изменить содержимое / usr /. Вы должны, вероятно, переключиться на «админ».
Прогулка
1
@dfrankow Да, это грубая ошибка доморощенного. Они даже не думали, что произойдет, если на одной машине будет два пользователя.
Пой
22

Вы должны использовать sudo для запуска команды с повышенными привилегиями, например так:

sudo chown -R `whoami` /usr/local
Ян С.
источник
Я сделал. «Операция запрещена, поэтому я sudo'd».
Tigt
1
Для пользователей рыбных раковин это будетsudo chown -R (whoami) /usr/local
kibin
9

Я столкнулся с этой проблемой вчера с MacOS 10.13.4, и я пытался sudo chgrp -R admin /usr/localили sudo chown -R <your-username>:<your-group-name> /usr/localкоторые получают Operation not permittedошибку, даже если с помощьюsudo

Поэтому я попытался просто chgrpдля Homebrewсвязанной папки admin(Мой пользователь находится в adminгруппе, зависит от пользователя, с которым вы работаете, возможно, вам придется перейти в другую группу) и предоставить adminгруппе доступ на запись в эти папки с помощью этих команд

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

После выполнения этих команд я могу установить новый пакет без каких-либо проблем. Если вы снова столкнулись с проблемой разрешений, попробуйте запустить первые две команды, заменив имя папки той, с которой вы столкнулись с проблемой разрешений.

Надеюсь, что это поможет другим пользователям с MacOS 10.13.

Примечание. Даже если смена владельца /usr/localили изменение группы /usr/localи предоставление доступа для вашей группы может сработать, НИКОГДА не следует делать это при изменении другой несвязанной папки. Изменение нужных вам папок намного безопаснее.

Kong
источник
это действительно хорошо для меня! <3 спасибо
DariusV
Это следует признать правильным ответом! Спасибо за вашу помощь!
Yini
2

Чтобы решить проблемы с разрешениями на каталоги, мы можем выполнить следующую команду:

brew prune
Катто
источник
1

Это сработало для меня.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Махфуз
источник
0

Ответ Резы на этот вопрос у меня сработал:

sudo chown -R $(whoami) /usr/local/*

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

spacetyper
источник