Сделайте файлы в `/ 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

Расскажет 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.


Важная часть - -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и предоставление доступа для вашей группы может сработать, НИКОГДА не следует делать это при изменении другой несвязанной папки. Изменение нужных вам папок намного безопаснее.


это действительно хорошо для меня! <3 спасибо
DariusV

Это следует признать правильным ответом! Спасибо за вашу помощь!
Yini

2

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

brew prune


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.