Я пытался исправить мою установку Homebrew для нескольких пользователей и нашел руководство по fight.de(http://blog.strug.de/2012/06/my-homebrew-multi-user-setup/), цель которого - решить именно эту проблему.
Я создал группу пользователей brew
, добавив оба моих пользователя в эту группу и выполнив это, чтобы настроить разрешения:
sudo chgrp -R brew /usr/local
sudo chmod -R g+w /usr/local
sudo chgrp -R brew /Library/Caches/Homebrew
sudo chmod -R g+w /Library/Caches/Homebrew
sudo chgrp -R brew /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
Предположим, что я сделал это во время входа в учетную запись пользователя A. Через несколько дней я зарегистрировался в учетной записи пользователя B и попытаюсь установить Dropbox через Cask. Это работает как прелесть, поскольку мы исправили разрешения раньше, поэтому группе brew также разрешено писать в этих папках.
Теперь еще несколько дней спустя я вернулся в аккаунт A и хочу избавиться от Dropbox. Я запускаю следующую команду, но застревает с ошибкой разрешения:
$ brew cask install dropbox --force
==> Downloading https://www.dropbox.com/download?plat=mac&full=1
Already downloaded: /Library/Caches/Homebrew/dropbox-latest
==> Symlinking App 'Dropbox.app' to '/Users/friedmann/Applications/Dropbox.app'
Error: Permission denied - /opt/homebrew-cask/Caskroom/dropbox/.metadata/latest/20150217070443.598
Most likely, this means you have an outdated version of homebrew-cask. Please run:
brew update && brew upgrade brew-cask && brew cleanup && brew cask cleanup
If this doesn’t fix the problem, please report this bug:
https://github.com/caskroom/homebrew-cask/issues
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir'
[...]
Чтобы исправить это для пользователя B, я должен снова запустить chgrp
и chmod
(как указано выше). Однако это обходное решение не очень ценится, так как я не хочу "случайно" запускать все команды всякий раз, когда я переключаюсь между моими учетными записями пользователей.
Есть ли что-то, чего я не вижу, или что я ошибался в соответствии с руководством?
Я не уверен, как автор руководства решил это.