Homebrew:シンボリックリンクできませんでした、/ usr / local / binは書き込み可能ではありません[クローズ]


361

インストール中にtigHomeBrew依存関係をインストール中に次の問題が表示されます。

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc

3
これはかなりsuperuser.comまたはaskdifferent.com、stackowerflow.comに属していない
Ondraジシュカ

回答:


582

アレックスの答えに従って、私はこの問題を解決することができました。これは、インストールされるパッケージに固有の問題ではなく、homebrewフォルダのアクセス許可の問題であるようです。

sudo chown -R `whoami`:admin /usr/local/bin

一部のパッケージでは、これを/usr/local/shareまたは に行う必要がある場合もあります/usr/local/opt

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt

25
すべての/ usr / local / binを現在の用途に変更しないと、システムや他のユーザーに問題が発生しませんか?
Don Giulio

10
sudo chown -R whoami は、実際のユーザー名で:admin /usr/local/bin置き換える必要がなければ、回答のコマンドと同等ではありませんyourusenameか?
Jason Swett、2015

5
私もusr/local/opt再帰的にチャウンドする必要がありました。それはその後働きました。
2015年

5
どこでもMy Mac(10.9.5)の権限に/usr/local/bin(や友人)に戻すように見えるdrwxr-xr-x+し、root wheel日ごと。必要なたびにパーマを再設定する必要がありますbrew install。OSが保護するためにパーマをリセットしていると思いますか?どうすれば停止できますか?(私は試しましたchflags uchg …が、それはbrewのインストールを妨げます。)
Quinn Comendant 2015

1
アカウントを「ホイール」グループに追加しました。これにより、「sudo chmod -R g + w / usr / local」を実行できます。これにより、グループ「wheel」のメンバーがフォルダに書き込むことができます。これらの機密フォルダの所有者をrootよりも安全性の低いアカウントに変更するよりも安全だと思われます。
マイケルクレブス

220

特定のコマンドを実行するのではなく、brew doctorすべての警告を実行して真剣に受け止めることをお勧めします。あなたが行き詰まっている他の問題があるかもしれませんが、この質問では捉えられないかもしれません。

また、brewは時間とともに更新されるため、特定のコマンドが有効な場合とそうでない場合があります。brew doctorただし、最新のトラブルシューティングを行うことができます。


9
あなたの答えがあまり人気がないとは信じられません。上記の推測よりも確かに賢明です。
ロバートオブフェアファックス

34
brew doctor問題を修正することはありません。それはあなたにそれを伝えるだけです。そして医師の助言を受けたとき、brewはそれはできないと言います。それは解決策ではありません
キース・タイラー

8
多分誰かがそれを改善しました。今醸造医師は、私が最も人気のある回答と同様のコマンドを実行することを提案し、そうした後、醸造シンボリックリンクが機能します。私はMacを使っているので、それがどのくらい続くかを見ていきます。:-)
ジョシュアリチャードソン

2
これは非常に役に立ちました。上記の提案を見逃した他のいくつかの特別なディレクトリを修正しました。
SwimBikeRun 2017年

6
醸造医師は正確な問題を提供し、手動による解決策も提供しました!
netrox 2018

74

他の回答は正しい限り正確ですが、なぜこの問題が発生しているのか、その根本原因に対処する方法については回答していません。

原因

この問題には2つの原因が考えられます。

  1. 自作インストールは、現在使用しているユーザー以外のユーザーによって実行されました。Homebrewは、それを最初にインストールしたユーザーのみがこれを使用することを望んでいると予想しています。
  2. brewを使用せずに/ usr / localに書き込むソフトウェアをインストールしました。これbrew doctorを実行すると、これが原因を示唆しています。

解決

マルチユーザー自作

複数のユーザーアカウントがあり、brewを使用できるようにしたい場合は、いくつかの手順を実行する必要があります。そうしないと、ユーザーを切り替えるたびに、Homebrewファイル構造の所有権を常に変更する必要があります。それは素晴らしいアイデアではありません。

詳細な手順はオンラインで見つけることができますが、簡単な答えはこれです:

  1. brewという名前のグループを作成します

    1. システム環境設定を開く
    2. アカウントをクリック
    3. 「+」をクリックします(必要に応じて、最初にロックを解除します)
    4. 下に新しいアカウントを選択し、グループを
    5. 醸造所に入る
    6. [ グループを作成]をクリックします
  2. 醸造を選択してくださいグループをを使用するユーザーアカウントをそれに追加します。
  3. / usr / localフォルダグループの所有権を変更します。 sudo chgrp -R brew /usr/local
  4. / usr / localにグループとして書き込みを追加する権限を変更します。 sudo chmod -R g+w /usr/local
  5. 自作のキャッシュディレクトリグループを変更します。 sudo chgrp -R brew /Library/Caches/Homebrew
  6. 自作のキャッシュディレクトリの権限を変更します。 sudo chmod -R g+w /Library/Caches/Homebrew

シングルユーザー自作

Homebrewで複数のユーザーを使用しない場合brew doctorは、の提案に基づいて、他の回答によって提供されるソリューションでおそらく十分です。

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

sudo chown -R $(whoami) /Library/Caches/Homebrew

検証

これらの手順の後、新しいグループメンバーシップを適用するためにログアウトして再度ログインした(マルチユーザールートを使用した場合)と想定brew doctorして、brewグループのすべてのユーザーによる成功を報告する必要があります。シングルユーザーの自作の問題を修正した場合、グループメンバーシップは変更されていないため、ログアウトして再度ログインする必要はありません。


2
ありがとう!UNIXユーザーグループの詳細を読む必要があります。私はそれが推論を十分に消化するためにどのように機能するかについて完全に無知です。しかし、それは非常に賢明に聞こえます、ポインターに感謝します!
Jikku Jose

1
unixグループは、あなたが想定しているよりも単純です-すべてのファイルには、そのファイルを所有する「ユーザー」と「グループ」、および「その他」に利用可能な読み取り、書き込み、および実行の権限があります。ファイルまたはフォルダーを所有するグループを設定し、そのフォルダーの「グループ」に書き込み権限を追加すると、そのグループのすべてのユーザーがフォルダーに書き込みできます。本当にそれ以上のものはありません。Windowsのアクセス許可ほど複雑ではありません。
Stonecrusher 2016年

1
したがって、ファイルセットのアクセス許可システムをグループにまとめて、複数のユーザーを簡単に追加して、それらすべてのアクセス許可を一度に適用できるようにする簡単な方法は何でしょうか。
Jikku Jose 2016

2
これで醸造リンクの問題が修正されました。ありがとうございます。
キー

それでも、/usr/local/binグループ書き込み可能などの機密性の高いディレクトリを持つことは少し危険だと私は思います。マルチユーザー環境で。これは本当に「公式」の醸造方法ですか?
corwin.amber

67

探している人にとって/usr/local/sbinは書き込み可能なエラーではありません:

更新:それは/usr/local/someOtherFolderName例えば可能性があります/usr/local/include。あなたはそのフォルダを次のように作成するだけです:

  • sudo mkdir someOtherFolderName

まずsbinフォルダを作成します。これにはsudo特権が必要です。

  • cd /usr/local

  • sudo mkdir sbin

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

  • brew link yourPackageName


6
これは私にとってはうまくいった
ロビン

:私も〜/ .bash_profileのにディレクトリを追加するために必要なPATH=$PATH:/usr/local/sbin
ジュリアン

何時間もの検索の後、これが私にとってうまくいった唯一のものです。ハイシエラにいます。
ItJoeTurner

34

特定のセットアップで次のコマンドが機能することがわかりました

brew doctor

そして、それは私のエラーがどこにあるのかを私に示し、次に、上記のコメントとは少し異なるこのコマンドです。

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

2
明白な提案をありがとう。私は忘れがちですbrew doctor
アントニー

1
これはここで問題を解決しました
khaosdoctor

brew doctorいいね。
AechoLiu 2017年

魅力のように働きました、ありがとう
hexley

15

同じ問題が見つかりました。3つのステップで解決できます:-

ステップ1

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

ステップ2

brew doctor

ステップ3

brew prune

それでもリンクの問題が発生する場合はmysql、と言ってください。

brew link mysql

これは機能します。


1
rabbitmqで私のために働いた
Omar

「ステップ1」の目的は何ですか?
Conrad C

1
医者が親指を立てる!醸造プルーンはしませんでしたが、他の不足しているパッケージをインストールし、mongodbで動作しました。
Chenlu、

「brew prune」の呼び出しは無効になっています。代わりに「抽出クリーンアップ」を使用してください。
hanumanDev

12

Mac OS High Sierraの実行中にこの問題が発生した(この投稿が行われてから4年後に付与された)場合-ここで説明する手順で問題が解決しました。基本的に、brewのアンインストールと再インストールの概要を説明します。

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-have-permission-to-write-to-usr-local-e8bd1c6a22d4

これらのステップを実行した後brew link 、魅力のように働きました!


私はこれが私のために働いたことを発見しました(最初のダンプコマンドなしで):github.com/Homebrew/brew/issues/3285#issuecomment-334976806
vr_driver

ありがとうございました!ハリーの一番の答えを試してみましたが、運がありませんでした-これを試してみましたが、それは魅力のように機能しました!
Joe、

私のために働いた、ありがとう!

9

私にとっての解決策は、実行することbrew updateでした。

だから、これを最初にしてください。

これは自作に精通している人にとっては普通のことかもしれませんが、私はその人の一人ではありません。

編集:brew doctorこの同じ質問に対する@kinnthの回答で提案されているように実行して更新する必要があることを発見しました。

一般的なトラブルシューティングワークフローは次のようになります。1。実行brew update 2.それが実行に役立たない場合、brew doctorその指示に従います。3。それがスタックオーバーフローのチェックに役立たない場合


1
これは私にとってすべてを修正し、他の何よりも先に行う価値があります。
Rob Evans

すべての醸造医師は、私がセラーの樽を
好き

@AlxVallejoこれは、OPとほぼ同じエラーを受け取ったときに発生した問題を解決するために行ったものです。Brew Doctorから受け取ったメッセージは、別の問題のように聞こえます。「1. brew updateを実行する2.それがbrew doctorを実行してその指示に従うのに役立たない場合3.それがスタックオーバーフローのチェックに役立たない場合」のワークフローはおそらく適用されます。
FragmentalStew

6

やっている間醸造リンクノードを、次の問題も発生しました:

エラー:include / nodeをシンボリックリンクできませんでした/ usr / local / includeは書き込み可能ではありません。

/usr/local/Cellar/node/9.3.0をリンクしています...エラー:許可が拒否されました@ dir_s_mkdir-/ usr / local / lib

上記を解決するには、/ usr / local /に移動し、「include」および「lib」フォルダの可用性を確認します。これらのフォルダが使用できない場合は、手動で作成してください。

そしてbrew install nodeをもう一度実行してください


5

これは、現在のユーザーがそのパスへの書き込みを許可されていないためです。したがって、r / w(読み取り/書き込み)権限を変更するには、1。ターミナルまたは2.グラフィカルな「情報を見る」ウィンドウを使用できます。

1.ターミナルの使用

端末からのchmod / chown(モードの変更/所有者の変更)コマンドの使用方法

2.グラフィカルな「情報を見る」を使用する

パーミッションを変更したいフォルダー/ファイルを右クリックし、Get Infoを開くと、以下のようなウィンドウが表示され、下部にr / wパーミッションを簡単に変更できます。 ここに画像の説明を入力してください

可能であれば、一時的な作業の後で、権限を「読み取り専用」に戻すことを忘れないでください。


brew doctorを使用してください-修正が必要な(システム)フォルダーを正しく識別します。
johndpope

3

Sophos Anti-Virusユーザーに関連する次の項目を見つけました。

https://stackoverflow.com/a/32981184

https://community.sophos.com/products/free-antivirus-tools-for-desktops/f/17/t/10029

つまり、ソフォスは特定の/ usr / localディレクトリの権限を変更しています。ソフォスはこれにパッチを適用し、修正はバージョン9.4.1に含まれています。


残念ながら、私はまだこれを入手しており、ソフォスをインストールしていますが、FWIW:|
rogerdpack 2016

2

私の問題は

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

chown助けにはなりませんでしたが、実行中のbrew doctorアドバイスに従いましたが、この警告は私を助けました:

Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/share/man/man3/* 

後にbrew pruneすべての仕事を罰金!


すごい。私のために働く。
Bagusflyer


0

Finderでフォルダに移動し、右クリックして[情報を見る]を選択すると、フォルダの[共有と権限]セクションに移動して、[読み取りと書き込み]を「全員」に許可できます

これは私がこのエラーでシンボリックリンクを通過させるために行うことです。また、brewは、何も変更していないかのように、フォルダのアクセス許可をリセットするようです


0

にすでにディレクトリがある場合 /usr/localインストールするパッケージのこのディレクトリを削除してみてください。

私の場合、以前にbrewを使用せずにインストールしようとしていたパッケージをインストールし、その後アンインストールしました。/usr/local/<my_package>/その前のインストールから残っているディレクトリがありました。このフォルダ(sudo rm -rf /usr/local/<my_package>/)を削除したところ、リンクの抽出ステップは成功しました。

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