Как исправить доморощенные разрешения?
Я удалил и установил Homebrew 3 раза сейчас, потому что он, кажется, никогда не позволит мне установить что-либо, поскольку он отказывает мне в разрешениях в конце большинства установок.
в качестве примера я опубликую этот сценарий загрузки libjpeg, с которым я сейчас сталкиваюсь.
Я пытаюсь установить libjpeg и получите:
$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg
'brew link jpeg' приводит к
Error: Permission denied - /usr/local/opt/jpeg
вот что читает мой варево доктор
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:
jpeg
Это разрешение проблема заключалась в том, что невозможно использовать brew на чем-либо, и я был бы очень признателен за любые предложения.
17 ответов:
я смог решить эту проблему с помощью
chownна папку:sudo chown -R "$USER":admin /usr/localТакже вам (скорее всего) придется сделать то же самое на
/Library/Caches/Homebrew:sudo chown -R "$USER":admin /Library/Caches/Homebrewвидимо, я использовал
sudoраньше таким образом, что изменил мое разрешение папки на/usr/local, с этого момента все установки с brew оказались успешными.этот ответ приходит учтивость github's homebrew issue tracker
новая команда для пользователей на macOS High Sierra, поскольку это невозможно
chownon/usr/local:
sudo chown -R $(whoami) $(brew --prefix)/*
в качестве первого варианта для тех, кто приземляется здесь, как я сделал, следуйте все, что это предлагает вам сделать:
brew doctorЭто самый безопасный путь, и, среди прочего, он предложил мне:
sudo chown -R $(whoami) /usr/localкоторый решил эту проблему разрешений.
OP сделал именно это, но, по-видимому, не получил вышеупомянутого предложения; вы можете, и всегда лучше начать там.
у меня была эта проблема .. Рабочее решение заключается в смене владельца
/usr/localтекущему пользователю вместоrootby:sudo chown -R $(whoami):admin /usr/localно на самом деле это не правильный способ. В основном, если ваша машина является сервером или многопользовательской.
мое предложение изменить право собственности, как указано выше и делать все, что вы хотите реализовать с самогоном .. (обновление, установка ... и т. д. ) затем сбросить собственности обратно в корень, как:
sudo chown -R root:admin /usr/localВот бы решить эту проблему и держите владение установленным в правильном наборе.
Если вы находитесь на высокой Сьерра, /usr / local больше не может быть chown'D. Вы можете использовать:
sudo chown-R $(whoami) $(brew -- prefix)/*
команда сверху-проголосовали ответ не работает для меня.
Он получил выход:
chown: / usr / {my_username}dmin: незаконное имя пользователя
эта команда отлично работает (group for /usr / local was
если вы хотите немного более целенаправленный подход, чем одеяло
chown -Rвы можете найти этойfix-homebrewскрипт будет полезен для вас:#!/bin/sh [ -e `which brew` ] || { echo Homebrew doesn\'t appear to be installed. exit -1 } BREW_ROOT="`dirname $(dirname $(which brew))`" BREW_GROUP=admin BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md" echo "This script will recursively update the group on the following paths" echo "to the '${BREW_GROUP}' group and make them group writable:" echo "" for dir in $BREW_DIRS ; do { [ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir " } ; done echo "" echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate." echo "" read -p 'Press any key to continue or CTRL-C to abort.' echo "You may be asked below for your login password." echo "" # Non-recursively update the root brew path. echo Updating "$BREW_ROOT" . . . sudo chgrp "$BREW_GROUP" "$BREW_ROOT" sudo chmod g+w "$BREW_ROOT" # Recursively update the other paths. for dir in $BREW_DIRS ; do { [ -e "$BREW_ROOT/$dir" ] && ( echo Recursively updating "$BREW_ROOT/$dir" . . . sudo chmod -R g+w "$BREW_ROOT/$dir" sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir" ) } ; done # Non-distructively move any git crud out of the way echo Stashing changes in "$BREW_ROOT" . . . cd $BREW_ROOT git add . git stash git clean -d -f Library echo Finished.вместо
chmodдля вашего пользователя, он даетadminгруппа (к которой вы предположительно принадлежите) запись доступа к определенным каталогам в/usr/localчто доморощенного использования. Он также говорит вам, что именно он намерен сделать, прежде чем делать это.
Я не хотел возиться с разрешениями на папки, поэтому я сделал следующее:
brew doctorbrew upgradebrew cleanupзатем я смог продолжить установку моей другой формулы заваривания успешно.
это решило проблему передо мной.
sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew sudo chown -R "$USER":admin /usr/local
все эти предложения могут работать. В последней версии brew doctor были сделаны лучшие предложения.
во-первых-исправить беспорядок вы, вероятно, уже сделали из
/usr/local, выполнив в командной строке:
sudo chown -R root:wheel /usr/localзатем возьмите на себя ответственность за пути, которые должны быть специально для этого пользователя:
sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/localeвся эта информация доступна, если вы запустите
sudo brew updateи потом прочтите все предупреждения и ошибки вы встречать...
Я решил свою проблему с помощью этих команд:
sudo mkdir /usr/local/Cellar sudo mkdir /usr/local/opt sudo chown -R $(whoami) /usr/local/Cellar sudo chown -R $(whoami) /usr/local/opt
на github есть сценарий убийцы, который исправляет завивки в каталогах/usr / local и brew, чтобы быть доступным любому, кто является членом группы "admin".
https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925
Это лучшее решение, чем выбранный ответ, так как если вы chown /usr/local/___ каталоги $USER, то вы нарушаете любые другие пользователи администратора homebrew на этой машине.
вот кишки скрипта на время я разместил это:
chgrp -R admin /usr/local chmod -R g+w /usr/local chgrp -R admin /Library/Caches/Homebrew chmod -R g+w /Library/Caches/Homebrew chgrp -R admin /opt/homebrew-cask chmod -R g+w /opt/homebrew-cask
Если у вас нет последней версии Homebrew: я "исправил" это в прошлом, заставив Homebrew работать как root, что можно было сделать только путем изменения владельца исполняемых файлов Homebrew на root. В какой-то момент они удалили эту функцию.
и я знаю, что они дадут много предупреждений о том, что он не должен работать как root, но давайте, иначе он не работает должным образом.
Я пробовал все на этой странице, Я в конечном итоге с помощью этого решения:
brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;моя ситуация была похожа на OP, однако моя проблема была специально вызвана запуском sudo с brew cask, а затем неверным паролем. После этого я застрял с разрешениями, предотвращающими установку.
У меня есть OSX High Sierra, и у меня не было
/user/local/Frameworksпапка, так что это исправлено для меняsudo mkdir -p /usr/local/Frameworks sudo chown -R $(whoami) /usr/local/Frameworks
для устранения ошибок на самогон разрешения на папку
brew pruneЭто позволит решить проблемы, и мы не должны chown каких-либо каталогов.
Comments