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/42127/14994
iolsmit

@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

디렉토리가 실제로 쓰기 가능한지 테스트 해 보자 .

$ 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?대신하여 정확한 결과를 제공 - 그것은 디렉토리가 쓰기 말한다 :

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

에 수정되어야합니다 /usr/local/Library/Homebrew/cmd/doctor.rb. 수정을 기다리는 동안 자체 설치에서 수정할 수 있습니다.

두 함수 사이의 차이 (루비 문서에 따른되고 여기여기 )

쓰기 가능? (file_name) → true 또는 false : 이름 지정된 파일이이 프로세스의 유효 사용자 ID에 의해 쓰기 가능한 경우 true를 리턴합니다.

writable_real? (file_name) → true 또는 false : 이름 지정된 파일이이 프로세스의 실제 사용자 ID로 쓰기 가능한 경우 true를 리턴합니다.


mgd의 조사 및 설명을위한 추천서입니다. 약 1 년 전에 github.com 에서 비슷한 문제가 제기 된 것으로 보이지만 적어도 (적절하게?) 해결되지 않았습니다 writable_real?. :-)
pvandenberk


0

나는 당신이 이것 만 필요하다고 생각합니다.

brew update

그런 다음 brew doctor다시 시도 하십시오.

사용하지 않는 종속성 (제 경우 Java)에 대해서는 여전히 오류가 발생할 수 있습니다. Xcode의 전체 설치 대신 Xcode 용 명령 줄 도구를 설치 한 경우 잘못된 경로가 있다는 오류 메시지가 표시되지만 메시지에서 바로 올바른 경로가 없다는 메시지가 표시됩니다. Xcode 용 명령 행 도구를 사용하면됩니다.

다른 사람의 이익을 위해 :이 작업을 수행하려면 관리자로 로그인해야합니다.


0

나는 iolsmit과 Phil M의 제안을 조합하여 따랐다. 나는이 디렉토리를 내 사용자 이름으로 찾은 다음 brew update다시 실행 했다 brew doctor. 이것은 모든 오류 메시지를 없애고 이제 brew 설치가 잘 작동하는 것 같습니다. 둘 다 감사합니다!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.