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

Я удалил и установил 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 ссылка jpeg' приводит к

Error: Permission denied - /usr/local/opt/jpeg

Вот что читает мой brew

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

Ответ 1

Мне удалось решить проблему, используя chown в папке:

sudo chown -R "$USER":admin /usr/local

Также вы, вероятно, должны сделать то же самое на /Library/Caches/Homebrew:

sudo chown -R "$USER":admin /Library/Caches/Homebrew

По-видимому, я использовал sudo до того, как изменил разрешение моей папки на /usr/local, отсюда вперёд все установки с brew оказались успешными.

Этот ответ предоставляется любезно gitHub homebrew issue tracker

Ответ 2

Новая команда для пользователей в macOS High Sierra, поскольку невозможно chown на /usr/local:

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

ссылка: Невозможно chown/usr/local в High Sierra

Ответ 3

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

brew doctor

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

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

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

ОП сделал именно это, но, очевидно, не получил вышеуказанное предложение; Вы могли бы, и всегда лучше начать с этого, и только тогда искать нетривиальные решения, если это не помогло.

Ответ 4

Если вы находитесь в OSX High Sierra, /usr/local больше не может быть chown 'd. Ты можешь использовать:

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

Ответ 5

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

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

Но на самом деле это не правильно. В основном, если ваш компьютер является сервером или несколькими пользователями.

Мое предложение состоит в том, чтобы изменить право собственности, как указано выше, и делать то, что вы хотите реализовать с помощью Brew.. (обновить, установить... и т.д.), А затем вернуть право собственности на root:

  sudo chown -R root:admin /usr/local

Это решило бы проблему и сохранит право собственности в правильном наборе.

Ответ 6

У меня не было папки /user/local/Frameworks, так что это исправило для меня

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks

В первой строке создается новая папка Frameworks для домашнего приготовления (brew). Вторая строка дает этой папке ваши текущие права пользователя, которых достаточно.

У меня OSX High Sierra

Ответ 7

Команда из опроса не работает для меня.

Он получил выход:

chown:/usr/{my_username} dmin: незаконное имя пользователя

Эта команда работает нормально (группа для /usr/local уже была admin):

sudo chown -R $USER /usr/local

Ответ 8

Если вы хотите немного более целенаправленный подход, чем одеяло chown -R, вы можете найти этот fix-homebrew script полезный:

#!/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, которые использует домородок. Он также сообщает вам точно, что он намеревается сделать, прежде чем делать это.

Ответ 9

Я не хотел гадать с разрешениями на папку, но я сделал следующее:

brew doctor
brew upgrade
brew cleanup

Затем я смог продолжить установку моей другой формулы для варки.

Ответ 10

В моем случае /usr/local/Frameworks даже не существовало, поэтому я сделал:

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

И тогда все сработало, как ожидалось.

Ответ 11

Это решило проблему для меня.

sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local

Ответ 12

Я решил проблему с этими командами:

sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt

Ответ 13

Все эти предложения могут работать. В последней версии врача brew были сделаны лучшие предложения.

Во-первых - исправьте беспорядок, который вы, вероятно, уже сделали из /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, а затем прочитайте все предупреждения и ошибки, с которыми вы столкнетесь...

Ответ 14

Для многопользовательского Mac это сработало для меня:

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

Ответ 15

Для меня это сработало после

brew doctor

Команды изменения разрешения привели к другой ошибке

chown: /usr/local: Operation not permitted

Ответ 16

В github есть killer script, который фиксирует perms в каталогах /usr/local и brew, чтобы быть доступным всем, кто является членом группы admin.

https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925

Это лучшее решение, чем выбранный ответ, так как если вы катали каталоги /usr/local/ ___ в $USER, тогда вы нарушаете других пользователей admin доморощенного на этой машине.

Вот в чем смелость script в то время, когда я разместил это:

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

Ответ 17

На самом деле это действительно просто, выполните эту команду: brew doctor

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

Это была проблема:

Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7

И это было решение:

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7

Ответ 18

cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks

Ответ 19

В моем случае возникли проблемы с удалением и переустановкой SaltStack.

После запуска:

ls -lah /usr/local/Cellar/salt/

Я заметил, что владельцем группы был "персонал". (Кстати, я использую macOS Mojave версии 10.14.3.) Группа персонала может быть связана с моей конфигурацией рабочего места, но я на самом деле не знаю. Несмотря на это, я сохранил группу, чтобы не допустить дальнейшего разрушения.

Я тогда побежал:

sudo chown -R "$USER":staff /usr/local/Cellar/salt/

После этого я смог успешно удалить его с помощью этой команды (не как root):

brew uninstall --force salt

Ответ 20

Если у вас нет самого последнего Homebrew: я "исправил" это в прошлом, заставляя Homebrew работать как root, что можно было сделать только путем изменения права собственности на исполняемые файлы Homebrew на root. В какой-то момент они удалили эту функцию.

И я знаю, что они дадут много предупреждений о том, что он не должен запускаться как root, но c'mon, это не работает должным образом.

Ответ 21

Я пробовал все на этой странице, я решил использовать это решение:

brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;

Моя ситуация была похожа на OP, однако моя проблема была вызвана, в частности, запуском sudo с бочонкой, а затем неверным. После этого я застрял с разрешениями, запрещающими установку.

Ответ 22

Чтобы разрешить ошибки для разрешений Brew при запуске папки

brew prune

Это позволит решить проблемы, и нам не нужно катавать любые каталоги.

Ответ 23

В MacOS Mojave у меня также не было разрешения на chown папку /usr/local (sudo chown -R "$USER":admin /usr/local).

Однако sudo chown -R "$USER":admin /usr/local/* сработал для меня, изменив разрешения для всего, что находится в локальной папке.

Надеюсь, это поможет другим с той же проблемой.

Ответ 24

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

sudo chmod + t/tmp