Вопрос:

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

macos homebrew libjpeg

311968 просмотра

24 ответа

11927 Репутация автора

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

Автор: Saturnino Источник Размещён: 08.05.2013 03:11

Ответы (24)


902 плюса

11927 Репутация автора

Решение

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

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

Также вам (скорее всего) придется сделать то же самое на /Library/Caches/Homebrew:

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

Очевидно, я использовал sudoранее таким образом, чтобы изменить разрешение моей папки /usr/local, с этого момента все установки с brew оказались успешными.

Этот ответ любезно предоставлен трекером доморощенных проблем gitHub.

Автор: Saturnino Размещён: 08.05.2013 09:26

14 плюса

16808 Репутация автора

Команда из ответов с наибольшим количеством голосов не работает для меня.

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

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

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

sudo chown -R $USER /usr/local
Автор: skywinder Размещён: 22.11.2014 07:49

248 плюса

12068 Репутация автора

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

brew doctor

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

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

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

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

Автор: Nycen Размещён: 09.12.2015 09:32

12 плюса

336 Репутация автора

Если вам нужен более целенаправленный подход, чем общий 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которые использует homebrew. Это также говорит вам точно, что он собирается сделать, прежде чем делать это.

Автор: darco Размещён: 11.10.2016 12:54

5 плюса

64 Репутация автора

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

Автор: Max Dercum Размещён: 16.10.2016 03:54

27 плюса

11926 Репутация автора

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

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

Но на самом деле это не правильный путь. Главным образом, если ваша машина является серверной или многопользовательской.

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

  sudo chown -R root:admin /usr/local

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

Автор: Maher Abuthraa Размещён: 21.12.2016 10:19

0 плюса

2678 Репутация автора

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

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

Автор: sudo Размещён: 30.12.2016 05:59

-5 плюса

1 Репутация автора

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

sudo chmod + t / tmp

Автор: bashar Размещён: 18.01.2017 09:05

3 плюса

396 Репутация автора

На github есть скрипт-убийца, который исправляет perms в / usr / local и каталогах brew, чтобы быть доступным любому, кто является членом группы 'admin'.

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

Это лучшее решение, чем выбранный ответ, поскольку, если вы укажете каталоги / 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
Автор: TheProletariat Размещён: 09.06.2017 08:30

7 плюса

461 Репутация автора

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

sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local
Автор: Fardin Размещён: 23.07.2017 11:06

324 плюса

3341 Репутация автора

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

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

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

Автор: andrewwong97 Размещён: 20.10.2017 07:40

65 плюса

879 Репутация автора

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

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

Автор: Richard Размещён: 12.11.2017 08:06

6 плюса

186 Репутация автора

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

sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt
Автор: hardc0der Размещён: 09.01.2018 07:38

0 плюса

1095 Репутация автора

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

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

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

Автор: Alpha G33k Размещён: 29.01.2018 09:30

11 плюса

1563 Репутация автора

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

brew doctor
brew upgrade
brew cleanup

После этого я смог продолжить успешно устанавливать мою другую формулу варева.

Автор: Anthony To Размещён: 18.04.2018 06:28

22 плюса

1499 Репутация автора

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

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

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

У меня OSX High Sierra

Автор: Karl Johan Vallner Размещён: 11.09.2018 11:41

0 плюса

4830 Репутация автора

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

brew prune

Это решит проблемы, и нам не придется собирать какие-либо каталоги.

Автор: Catto Размещён: 02.10.2018 06:27

1 плюс

984 Репутация автора

На самом деле это действительно просто, выполните эту команду: 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
Автор: Arsalan Mehmood Размещён: 24.10.2018 06:58

1 плюс

727 Репутация автора

cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
Автор: Girish Gupta Размещён: 30.10.2018 10:56

4 плюса

330 Репутация автора

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

sudo chown -R $(whoami):admin $(brew --prefix)/*
Автор: Juan José Ramírez Размещён: 26.11.2018 07:18

8 плюса

316 Репутация автора

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

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

И тогда все заработало как положено.

Автор: Helen Vasconcelos Размещён: 03.12.2018 12:31

3 плюса

2380 Репутация автора

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

brew doctor

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

chown: /usr/local: Operation not permitted

Автор: Krishnadas PC Размещён: 31.12.2018 05:35

1 плюс

2076 Репутация автора

В моем случае возникли проблемы с удалением и переустановкой 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
Автор: devinbost Размещён: 15.03.2019 06:13

0 плюса

780 Репутация автора

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

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

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

Автор: poepje Размещён: 21.08.2019 02:13
Вопросы из категории :
32x32