Как исправить доморощенные разрешения?



Я удалил и установил 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 на чем-либо, и я был бы очень признателен за любые предложения.

595   17  

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, поскольку это невозможно chown on /usr/local:

sudo chown -R $(whoami) $(brew --prefix)/*

Ссылка:https://github.com/Homebrew/brew/issues/3228

в качестве первого варианта для тех, кто приземляется здесь, как я сделал, следуйте все, что это предлагает вам сделать:

brew doctor

Это самый безопасный путь, и, среди прочего, он предложил мне:

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

который решил эту проблему разрешений.

OP сделал именно это, но, по-видимому, не получил вышеупомянутого предложения; вы можете, и всегда лучше начать там.

у меня была эта проблема .. Рабочее решение заключается в смене владельца /usr/local текущему пользователю вместо root by:

  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 doctor
brew upgrade
brew 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 каких-либо каталогов.

попробуйте также выполнить эту команду

sudo chmod +t / tmp

Comments

    Ничего не найдено.