自作の権限を修正するには?


601

ほとんどのインストールの最後に権限を拒否するため、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を何でも使用することができなくなりました。提案をいただければ幸いです。

回答:


955

chownフォルダを使用して問題を解決することができました:

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

また、あなたは(おそらく)同じことをする必要があります/Library/Caches/Homebrew

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

どうやら私はsudo以前にでフォルダのアクセス許可を変更する方法で使用してい/usr/localました。これ以降、brewを使用したすべてのインストールが成功することが証明されています。

この回答は、gitHubの自作の問題追跡ツールの好意によるものです。


14
これをありがとう。またsudo chown -R $USER:admin /Library/Caches/Homebrew、権限の問題を取り除くために実行する必要がありました。
alexpls 2014年

64
/ usr / localの所有権を特定のユーザーに変更することは、解決策ではありません。シングルユーザーシステムの場合、それはひどいハックであり、回避策です。しかし、その場合は、chown -R / $ USER:$ USER
fijiaaron

17
@fijiaaronでは、より良い解決策は何でしょうか?
2015年

47
/ usr / localの変更:完全に異常なソリューション。これが実際にはパーティーラインではないことを切に願っています。
John Clements、2015

15
このソリューションがマルチユーザーシステム(@ fijiaaron、@ JohnClements、@ hmijail、@ Alex)を台無しにすると文句を言う人には、これがまさにグループの権限が逆になった理由です。macOSでは、adminグループはすべての管理者ユーザー(sudoとりわけ、すべてのmacOSユーザーアカウントユーザーです)であるためchown -R …:adminchmod -R g+w /usr/local(@ AndreaDeGaetanoによって提案されているように)と一緒に実行すると、ここでは何も問題が発生せず、問題は発生しません他のユーザーも/usr/local/ を使用していbrewます。
Slipp D. Thompson 2017

479

chownオンにできないため、macOS High Sierraのユーザー向けの新しいコマンド/usr/local

bash/zsh

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

fish

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

参照:High Sierraでは/ usr / localを変更できません


はい、@ Jeffpowrs macOS 10.13.2で同じ問題が発生しています
andrewwong97

4
:私は次のように使用する魚シェルを使用していた sudo chown -R (whoami) (brew --prefix)/*
Tarellel

2
関連して。私がやろうとしていたことsudo mkdir /usr/local/Frameworksについては、この回答にあるように、chownコマンドを実行する必要がありました。
ダンバートン

1
ありがとう。これはその日を救った。
アーシュトシュラティ

2
GOD BLESS YOU、BRO!
Mendigo dos Bytes

285

私のようにここに上陸した人への最初の選択肢として、これがあなたに行うことを示唆していることをすべて実行してください:

brew doctor

これは最も安全な方法であり、とりわけ、次のことを提案しました。

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

これにより、権限の問題が解決しました。

OPはそれを行いましたが、明らかに上記の提案を受け取りませんでした。あなたはそうかもしれませんし、そこから始めて、それが役に立たない場合にのみ重要な解決策を探すのが常に良いでしょう。


4
これにより、2017
Babushkin

3
これにより権限の問題が解決し、ノードのバージョンを簡単にアップグレードできたことも確認できます
2018

2
醸造医師はすべての問題を見つけることはできません。私が抱えていた問題は/ usr / local / Frameworksが存在せず、それを作成して所有権を設定することで解決しました。醸造自体は問題としてそれに気づかなかった。
ジョーW

2
私は取得chown: /usr/local: Operation not permitted2019年7月5日のように動作しません
tavalendo

1
いつでもさまざまな問題が修正(または修正に役立つ)するため、医師とのヒントは、おそらくここで最高のヒントの1つです!
ecth

82

OSX High Sierraを使用している場合、「d」を使用/usr/localできなくなりますchown。以下を使用できます。

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


ありがとう。助かりました!
Matthias

3
$(brew --prefix)が/ usr / localを与えただけで、High Sierraは権限を変更できないと主張しましたが、brewは私のインスタンスで「/ usr / local / Frameworks」への権限を望んでいたので、代わりに "$(brew --prefix)/ Frameworks"を使用することができ、その後 "brew link python @ 2"で問題なく動作しました。
alpheus

複数のユーザーがいるすべてのMacユーザーは、これを使用してください!
Erik Nguyen

OSX High Sierraに感謝します。MACOSXの以前のバージョンのように、/ user / localをもう使用できません。これは私のために働いた!
Jose Mhlanga

29

/usr/local/Frameworksフォルダがなかったので、これで修正されました

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

1行目は、homebrew(brew)が使用する新しいFrameworksフォルダーを作成します。2行目は、そのフォルダーに現在のユーザー権限を与えます。これで十分です。

使用されるコマンドは次のとおりです。

mkdir-ディレクトリを作成[ -p存在する場合はエラーなし、必要に応じて親ディレクトリを作成]

chown-ファイルの所有者とグループを変更します[ -Rはファイルとディレクトリを再帰的に操作します]

whoami-有効なユーザーIDを出力する

OSX High Sierraを持っています


27

私はこの問題を持っていた。..ワーキング溶液は、変更の所有権にある/usr/local 現在のユーザに代わりにrootすることにより:

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

しかし、実際にはこれは適切な方法ではありません。主にマシンがサーバーまたはマルチユーザーの場合。

私の提案は、上記のように所有権を変更し、Brewで実装したいことをすべて実行して(更新、インストール...など)、所有権をrootにリセットします。

  sudo chown -R root:admin /usr/local

それは問題を解決し、所有権を適切なセットに維持します。


4
うーん..そして、chownに対して「操作は許可されていません」になったときは?
Ewoks 2017

@EwoksはMacOでそれですか?
Maher Abuthraa

1
はい、
シエラハイ


15

トップ投票の回答からのコマンドは私にはうまくいきません。

それは出力を得ました:

chown:/ usr / {my_username} dmin:不正なユーザー名

このコマンドは正常に動作します(/ usr / localのグループはadminすでに存在していました):

sudo chown -R $USER /usr/local

5
引用符を追加sudo chown -R "$USER":admin /usr/local
orkoden

2
@skywinderあなたの答えは私のために働いた。$ USERで引用符を使用する必要はありませんでした。
アンナS

sudo chown -R "$ USER":admin / usr / local $ USERを自分の名前に置き換えます。
lft93ryt

これは次の結果になりましたError: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.
thesummersign

3
chown: /usr/local: Operation not permitted
Krishnadas PC 2018

13

フォルダーのアクセス許可をいじくり回したくなかったので、次のようにしました。

brew doctor
brew upgrade
brew cleanup

その後、他の醸造式を正常にインストールし続けることができました。


1
これは私の問題にはうまくいきました。私はすでに自分自身の許可をSUDOしていました。\
Komsomol

12

ブランケットより少しターゲットを絞ったアプローチが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ユーザーにa を実行する代わりに、admin(自分が所属していると思われる)グループに/usr/local、自作が使用する特定のディレクトリへの書き込みアクセス権を付与します。それはまたそれを行う前にそれが何をするつもりであるかを正確に伝えます。


1
一部のパスは少し変更されているように見えるので、chgrpとchmodでさらにいくつかのディレクトリを作成する必要があるかもしれませんが、私はユーザーアプローチよりもchownのすべてよりもこれを好みます!
アシャーリー2017年

8

私の場合、/ usr / local / Frameworksは存在していなかったので、次のようにしました。

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

そして、すべてが期待どおりに機能しました。


1
これは私の問題を修正し、醸造医師によって問題として検出されませんでした。
ジョーW

7

これで問題は解決しました。

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

2
これでこの問題は解決しましたが、リンクが成功した後でこの手順を元に戻します。セキュリティ上の理由からです。
ora-600

7

これらのコマンドで問題を解決しました:

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

1
ありがとう!Mac OS 10.13.4私の場合、Python を作成sudo mkdir /usr/local/Frameworkssudo chown -R $(whoami) /usr/local/Frameworksてリンクできるようにする必要があったのは、それだけです。
A1m、2018年


5

これらの提案はすべて機能する可能性があります。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すべて、実行してから発生するすべての警告とエラーを読んだ場合に利用できます...


/ usr / localのすべての所有権をroot:wheelに設定することは危険であり、不要です。関連するパスは/ usr / local / Cellarです
ben26941

1
あなたがすでに先に進み、開発ユーザーのためにそれらの所有権を取得していない限り、またはsudoでインストールを行ったためにbrewがすでにそれらを破壊している場合を除いて、これらの権限に触れる必要はありません。その場合、brew自身がこの修正を推奨しています。これは、sudoを混乱させることよりもはるかに危険が少ないと思います。
Max Dercum

1
では、醸造の推奨へのリンクを提供していただけますか?
ben26941 16

1
ベストアンサー。別のMacからの移行を行った後、うまくいきました。
BuffMcBigHuge 2017

4

私にとって、それは後に働いた

brew doctor

権限変更コマンドにより別のエラーが発生しました

chown: /usr/local: Operation not permitted


3

/ usr / localおよびbrewディレクトリのパーマを修正して、「admin」グループのメンバーである誰もがアクセスできるようにする、githubにキラースクリプトがあります。

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

2

MacOS Mojaveではchown、/ usr / localフォルダーへのアクセス権も持っていませんでした(sudo chown -R "$USER":admin /usr/local)。

sudo chown -R "$USER":admin /usr/local/*しかし、私のために働いた、のすべてのアクセス許可を変更ローカルフォルダー。

うまくいけば、これは同じ問題を持つ他の人を助けるでしょう。


1

実際にはとても簡単です。次のコマンドを実行してください: 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


1

私の場合、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

0

最新のHomebrewがない場合:Homebrewをrootとして実行するように強制することでこれを「修正」しました。これは、Homebrew実行可能ファイルの所有権をrootに変更することによってのみ実行できました。ある時点で、彼らはこの機能を削除しました。

そして、私は彼らがルートとして実行されるべきではないという多くの警告を出すことを知っていますが、それ以外の場合は正しく動作しません。


0

私はこのページのすべてを試しましたが、私はこの解決策を使いました:

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

私の状況はOPに似ていましたが、私の問題は具体的にはbrew caskでsudoを実行してから、パスワードを誤って取得したことが原因でした。この後、私はインストールを妨げる権限に行き詰まりました。


0

フォルダー実行時のBrew権限のエラーを解決するには

brew prune

これで問題が解決します。ディレクトリを変更する必要はありません。


1
これはもう機能しません。今すぐ実行する必要がありますbrew cleanup --prune-prefix
Sliq

0

私はカタリナにいて、このエラーが発生しました:

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied
touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/.git/FETCH_HEAD: Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied

Homebrewディレクトリを変更するだけで済みました

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

0

これら2つのコマンドを使用して問題を保存しました

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

sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/lib/python3.7/site-packages /usr/local/share/aclocal /usr/local/share/locale /usr/local/share/man/man7 /usr/local/share/man/man8 /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew/locks

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.