Homebrewのインストール後にOS X Lionの権限エラーを解決する方法


9

Snow LeopardからLionにアップグレードしたばかりで、Homebrewをインストールしようとしています。しかし、インストール後、インストールbrew doctor手順に従って実行すると、/ usr / localディレクトリが書き込み可能でないことを示す一連のエラーが表示されます。例えば:

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share

たくさんのディレクトリでこれらを取得します。

You should probably `chown` /usr/local/include

You should probably `chown` /usr/local/share

You should probably `chown` /usr/local/share/man

私はこれらのディレクトリへの書き込み権限を持つUnixグループの一部であると思われるため、このエラーが発生する理由を理解できません。

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

何が欠けていますか?


提案どおり、これらのディレクトリを自分のユーザー名に「変更」しないのはなぜですか。いずれにしても、それらは「ルート」に属すべきではありません。複数のユーザーの場合は、グループの権限を変更することもできます。apple.stackexchange.com
q

@iolsmit:まったく同じ問題があります。ただし、このマシンに複数の管理者ユーザーがいる場合、なぜ/usr/local所属する必要があるのかわかりません。また、不満のある場所に手紙を書くことも可能です。他のアイデアは?brew doctor
mgd

回答:


7

編集:この問題はHomebrewで修正されました:

それでも問題が解決しない場合は、Homebrewを次のように更新してください。

brew update

問題が何であるかを知りたい場合は、以下の元の回答をそのまま使用します。


現時点では、許可の問題は無視してください

私はまったく同じ問題を経験しbrew doctorています。私の意見では、問題はあなたと私のインストールではなくです。

の所有権を変更するのではなく、問題を無視する必要があると思います/usr/local。または、brew doctor修正がリリースされるまでローカルスクリプトを修正することもできます。下記参照。

/usr/local特定のユーザーが所有することは正しいとは思いません。このマシンに複数の管理ユーザーがいます。あなたは/usr/local所有root:admin者とグループとして所有されたままにしておく必要があります。

私の調査

あなたのように、私はグループの/usr/localメンバーでもある私のユーザーが完全に書き込み可能なものを持っていますadmin

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

dirが本当に書き込み可能であることをテストしましょう:

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

brew doctorコードをさらに調査した結果、ルビ関数の使用がPathname.writable?問題の原因であるという結論に至りました。このインタラクティブなRubyセッションについて考えてみましょう。

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

関数Pathname.writable?/usr/local、私たちがそれを知っていても書き込み可能ではないと言います。

Pathname.writable_real?代わりにを使用すると、正しい結果が得られます– dirは書き込み可能であると表示されます。

>> Pathname('/usr/local').writable_real?
=> true

これはで修正する必要があります/usr/local/Library/Homebrew/cmd/doctor.rb。修正を待つ間、独自のインストールで修正できます。

2つの関数の違いは次のとおりです(Rubyのドキュメントのここここによると)。

writable?(file_name)→trueまたはfalse:名前付きファイルがこのプロセスの実効ユーザーIDによって書き込み可能である場合、trueを返します。

writable_real?(file_name)→trueまたはfalse:名前付きファイルがこのプロセスの実際のユーザーIDによって書き込み可能である場合、trueを返します。


mgdの調査と明確化に賛成です... 1年ほど前にgithub.comで同様の問題が発生したようですが、少なくとも(適切に?)解決されなかったwritable_real?ようです。:-)
pvandenberk 2012


0

私はあなたがこれを必要としているだけだと信じています:

brew update

その後、brew doctor再試行してください。

まだ使用していない依存関係(私の場合はJava)に関するエラーが表示される可能性がありますが、問題ありません。Xcodeのフルインストールの代わりにXcodeのコマンドラインツールをインストールしている場合は、無効なパスがあることを示すエラーメッセージも表示されますが、メッセージの右側には、有効なパスがないことも示されますXcodeのコマンドラインツールを使用するだけなので、問題ありません。

他の人のために:これを実行するには、管理者としてログインする必要があることに注意してください。


0

私はiolsmitとPhil Mの提案を組み合わせてbrew updateフォローしましたbrew doctor。これらのディレクトリを自分のユーザー名に変更してから、再度実行し、続いてを実行しました。これですべてのエラーメッセージが削除され、Brewのインストールが正常に機能するようになりました。あなたがた両方に感謝します!


0

@mgdの調査と明確化に賛成です...

1年ほど前にgithub.comで同様の問題が発生したようですが、少なくとも(適切に?)解決されなかったwritable_real?ようです。:-)

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