Homebrewエラーへのインストール


112

rvmとruby 1.9.2をインストールしようとしています

すでに自作とgitをインストールしましたが、アクセス許可エラーが発生し続けたため、完全な更新を取得できませんでした。Snow Leopardを再インストールし、権限を修復しました。

今これが起こります...

$ brew install wget

エラー:/ usr / local / Cellarに書き込めません


stackoverflow.com/questions/4804169/…承認された回答としてマークする必要があります-この質問に回答していないことを知らないビジターは先に進む
dmo

回答:


274

sudo chown -R $USER /usr/local

/usr/local/その場所でその行を使用することの所有権を自分に与える必要があります。公式ドキュメントの上部にあるrubyワンライナーを使用してHomebrewをインストールした後、私はこれを自分で行う必要がありました。私にとっては魅力のように働きました。sudoHomebrewを使用する必要があるのは、このときだけです。

ルビーのワンライナーがこれを行うかどうかはわかりません。もしそうなら、それから私のシステムの他の何かがそれ/usr/local以降に制御しました。

編集:私はこれを完全に見逃しましたが、@ samvermette見逃しませんでした(私の回答への返信を参照してください):上記のコマンドを実行し、homebrewを介して何か特別なユーザー権限が必要なものがインストールされている場合はmysql、それらの権限を必ず返してください(上記のコマンドは、内部のすべてに再帰的な所有権を与え/usr/localます($USER)。mysqlの場合、それは…

sudo chown -RL mysql:mysql /usr/local/mysql/data


16
注意:このコマンドは、mysqlユーザーから/ usr / local / mysql / dataの所有権を削除します。私の場合、mysqlの起動を妨げていました。修正している:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette

24
私が使用してMySQLの問題を避けsudo chown -R $USER /usr/local/Cellar/usr/local/、既に私のための適切な権限を持っていた
パーカーを

1
悲しいかな、ユーザーが来てユーザーが行く…おそらくいつかイブラヒムが戻ってきてそれをマークするでしょう。多分。(おそらくそうではありません。)
Ben Kreeger 2012

4
この答えは嫌いです。自作についてのみの質問であるにもかかわらず、システムを使用するユーザーは1人だけであり、そのユーザーはすべて/ usr / localを所有する必要があると想定しています。brewはマルチユーザーシステムでは動作しませんか?それがうまくいくとしても、それはずさんな答えです。さらに、ユーザーがこの状況にどのように遭遇したかについては説明していません。ヒント-正規の指示に従ってHomeBrewをインストールしてから、TimeMachineバックアップから(別のマシンに)復元しました。ファイルの所有権を変更したのは、復元だったのではないかと思います。
Jason R. Coombs

1
@ JasonR.Coombsに同意します。人々は、実用的でセキュリティの影響を理解せずにこのずさんなソリューションを使用するべきではありません。/ usr / local内のすべてのソフトウェアが、ユーザーの下で実行されているものによって上書きされ、セキュリティホールが開かれる可能性があります。最初のchownコマンドを盲目的に実行することで(MySQLに加えて)何か他のものを台無しにすることは完全に可能です。
ロブ・

41

Mavericksへのアップグレード後にこの問題が発生しました。このページは、エラーメッセージをグーグル検索する際の上位の検索結果でした。私は検索を続けたところ、スタックオーバーフロー.comでこの回答が見つかりました。簡潔に言えば、それは:

sudo chmod a+w /usr/local/Cellar

これで問題が解決しました。エラーメッセージで参照されている特定のパスの権限のみが変更されるため、他のインストールで悪影響が出る可能性は低いようです。

私がそうしたように、このページを最初に見つけた人のために、私はこの答えをここに置いています。ただし、クレジットはjdiに移動する必要があります。


2
誰もが/ usr / local / Cellarに書き込めるようになったので、これは無意味だと考えられていますか
デビッドウェルチ

この回答は、他のフォルダ(など/usr/local/bin)へのアクセスを必要とするパッケージでは失敗します。
Jason R. Coombs

11

管理者ユーザーのみに書き込みを許可でき/usr/local/ますか?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

管理者グループに属する各ユーザーは、新しい依存関係をインストールできるようになります。


複数管理者のマシンにはより良いソリューションのように見えます(私の/ usr / local / libディレクトリもaspellが機能するためにg + xが必要でしたが)。
James Snook

1
「ブリューリンク」ステップが正常に完了しなかったというエラーを回避するには、このスレッドの内容、つまりsudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDDDDDがbinshareLibrary / LinkedKegsopt
superk

1
回答にはThnx、「sudo」を使用する必要があったため、これらのコマンドが機能しない場合は、プレフィックスにsudoを付けてください
MQoder



1

現在のユーザーが/ usr / localを所有するグループのメンバーであることを確認することをお勧めします。デフォルトでは、そのグループはだと思いますwheel。自分をそのグループのメンバーにするには:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

洗練されていないハンマーのようなものですが、意図した効果があります/usr/local。昇格したメンバーによる使用(読み取り/書き込み)のみを目的としたアイテムへのアクセスを可能にします。このアプローチはグループメンバーシップを利用し、システム上の複数の(許可された)ユーザーが自作を使用できるため、上記のもう1つの利点があります。


0

どのようにしてHomebrewをインストールしましたか?彼らの公式のインストール手順には、rubyスクリプトの実行が含まれています。それはあなたのための許可の問題を処理する必要があります。

スクリプトを実行したくない場合は、/ usr / localディレクトリに必要な権限の変更を説明する「開発者向け/ usr / localへのインストール」と呼ばれるページのセクションがあります。


スクリプトを使用してインストールしましたが、更新に問題がありました。ユーザーデータを新しいラップトップに移行しました。github b / cからいくつかの回避策を実行する必要がありましたが、スクリプトは最初は機能しませんでした。
イブラヒム

-3

編集:コメントで述べたように、自作でsudoを使用することは悪い考えなので、次の答えは使用しないでください!


sudoでコマンドを実行すると、このエラーを防ぐこともできます。

$ sudo brew install wget

ただしsudo、多くの間違いをする可能性があるため、使用には注意してください。


このアプローチは、rootとして(sudoを介して)呼び出しを許可しない最新バージョンの自作で失敗します。
Jason R. Coombs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.