Homebrew : 심볼릭 링크를 사용할 수 없습니다. / usr / local / bin은 쓰기 가능하지 않습니다.


361

설치하는 동안 tig, HomeBrew종속성을 설치하는 동안 다음과 같은 문제를 표시 :

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
이것은 stackowerflow.com에 속하지 않고 superuser.com 또는 askdifferent.com에 속합니다
Ondra Žižka

답변:


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

5
나는 또한 usr/local/opt재귀 적으로 질식해야했다 . 그 후에 일했습니다.
출발

5
내 맥 (10.9.5)에의 권한 /usr/local/bin(친구가)으로 되돌릴 것 drwxr-xr-x+root wheel매일. 원할 때마다 파마를 다시 구성해야합니다 brew install. OS가 나를 보호하기 위해 perm을 재설정한다고 가정합니까? 어떻게 막을 수 있습니까? (내가 시도 chflags uchg …했지만 양조가 설치되지 않습니다.)
Quinn Comendant

1
내 계정을 "바퀴"그룹에 추가했습니다. 이를 통해 "sudo chmod -R g + w / usr / local"을 허용합니다. "wheel"그룹의 구성원이 폴더에 쓸 수 있습니다. 이 민감한 폴더의 소유자를 루트보다 덜 안전한 계정으로 변경하는 것보다 안전한 것 같습니다.
Michael Krebs

220

특정 명령을 실행하는 대신 brew doctor모든 경고를 실행 하고 신중하게 수행하는 것이 좋습니다 . 이 질문에 포함되지 않은 다른 문제가있을 수 있습니다.

또한, 추출이 시간이 지남에 따라 업데이트 될 때 특정 명령이 유효하거나 유효하지 않을 수 있습니다. brew doctor그러나 최신 문제 해결을 보장합니다.


9
나는 당신의 대답이 덜 인기가 있다고 믿을 수 없습니다. 위에서 언급 한 추측보다 더 신중합니다.
페어팩스의 로버트

34
brew doctor문제를 해결하지 않고 문제에 대해서만 알려주며 의사의 조언을 받으면 치료할 수 없다고 말합니다. 솔루션이 아닙니다
Keith Tyler

8
누군가가 그것을 개선했을 수도 있습니다. 이제 brew doctor는 가장 인기있는 답변과 비슷한 cmd를 실행하고 그렇게하면 brew symlink가 작동한다고 제안합니다. 나는 맥에 있고, 그래서 우리는 그것이 얼마나 오래 지속되는지 볼 것이다. :-)
Joshua Richardson

2
이것은 매우 유용한 감사였습니다. 위의 제안을 놓치도록 다른 특수 디렉토리를 수정했습니다.
SwimBikeRun

6
양조 의사가 정확한 문제를 제공하고 수동 솔루션도 제공했습니다!
netrox

74

다른 답변은 가능한 한 정확하지만 이 문제가 발생하는 이유 와 그 근본 원인을 해결하는 방법에 대해서는 답변하지 않습니다 .

원인

이 문제에는 두 가지 가능한 원인이 있습니다.

  1. homebrew 설치는 현재 사용중인 사용자 이외의 사용자로 수행되었습니다. 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. homebrew 캐시 디렉토리 그룹을 변경하십시오. sudo chgrp -R brew /Library/Caches/Homebrew
  6. homebrew 캐시 디렉토리 권한을 변경하십시오. 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모든 사용자가 성공한 것으로보고해야 합니다 (다중 사용자 경로로 이동 한 경우). 단일 사용자 홈 브루에 대해 방금 수정 한 경우 그룹 멤버십이 변경되지 않았으므로 로그 아웃했다가 다시 로그인 할 필요가 없습니다.


2
감사! 유닉스 사용자 그룹에 대해 더 읽어야 할 것 같습니다. 나는 추론을 충분히 소화시키는 방법에 대해 전혀 단서가 없다. 그러나 포인터에 감사드립니다.
Jikku Jose

1
유닉스 그룹은 당신이 생각하는 것보다 단순하다-모든 파일은 그 파일을 소유 한 'user'와 'group', 그리고 'others'에 대해 이용 가능한 읽기, 쓰기 및 실행 권한을 가진다. 파일 또는 폴더를 소유 한 그룹을 설정하고 해당 폴더의 '그룹'에 쓰기 권한을 추가하면 해당 그룹의 모든 사용자가 폴더에 쓸 수 있습니다. 그것보다 더 이상은 없습니다. Windows의 권한만큼 복잡하지는 않습니다.
stonecrusher

1
따라서 파일 집합의 권한 시스템을 그룹으로 묶는 쉬운 방법으로 여러 사용자가 한 번에 모든 권한을 쉽게 적용 할 수 있도록 추가 할 수 있습니까?
Jikku Jose

2
이로 인해 브루 링크 문제가 해결되었습니다. 감사합니다.
키이스 타일러

여전히 /usr/local/bin그룹 쓰기 가능, esp 와 같은 민감한 디렉토리를 갖는 것이 약간 위험합니다 . 다중 사용자 환경에서. 이것이 실제로 "공식적인"양조 방법입니까?
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
Julien

몇 시간 동안 검색 한 후에 이것이 나를 위해 일한 유일한 것입니다. 저는 High Sierra에 있습니다.
ItsJoeTurner

34

내 특정 설정에서 다음 명령이 작동한다는 것을 알았습니다.

brew doctor

그리고 그것은 내 오류가 어디에 있는지, 그리고 위의 주석과 약간 다른 명령을 보여줍니다.

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

2
명백한 제안에 감사드립니다. 나는 잊는 경향이있다brew doctor
Antony

1
이것은 문제를 해결했다
khaosdoctor

brew doctor좋습니다.
AechoLiu

고마워요, 고마워요
hexley

15

나는 같은 문제를 발견했으며 세 단계로 해결할 수 있습니다.

1 단계

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

2 단계

brew doctor

3 단계

brew prune

그래도 여전히 연결 문제를 얻는 경우에, 말할 수 있습니다 mysql, 단지 쓰기

brew link mysql

작동합니다.


1
rabbitmq
Omar

'1 단계'의 목적은 무엇입니까?
콘래드 C

1
의사 엄지 손가락을 양조하십시오! 자두를 만들지 않았지만 다른 누락 된 패키지를 설치했으며 mongodb에서 작동했습니다.
Chenlu

'brew prune'호출이 비활성화되었습니다. 대신 'brew cleanup'을 사용하십시오.
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

나를 위해 일했습니다, 감사합니다!
zen

9

나를 위해 솔루션을 실행하는 것이 었습니다 brew update .

따라서 먼저이 작업을 수행하십시오.

이것은 홈브류에 익숙한 사람들에게는 일반적인 관행 일 수 있지만 저는 그 사람들 중 하나가 아닙니다.

편집 : 나는 실행하여 업데이트해야한다는 것을 발견했다. brew doctor 이 같은 질문에 대한 @kinnth의 대답에서 제안한대로 .

일반적인 문제 해결 워크 플로는 다음과 같습니다. 1. 실행 brew update 2. 실행 해도 도움 brew doctor이되지 않는 경우 지침을 따르십시오 3. 스택 오버플로 확인에 도움이되지 않는 경우


1
이것은 나를 위해 모든 것을 고쳤으며 다른 무엇보다 먼저 할 가치가 있습니다.
Rob Evans

모든 양조 의사는 내가 지하실에 술통을 좋아하지 않는다고 지적합니다. 그래서 OP의 문제를 해결하는 데 아무런 도움이되지 않습니다.
AlxVallejo

@AlxVallejo 이것은 OP와 거의 동일한 오류가 발생했을 때 발생하는 문제를 해결하기 위해 수행 한 작업입니다. Brew Doctor로부터받은 메시지는 다른 문제처럼 들립니다. "1. 추출 업데이트 실행 2. 워크 플로 실행에 도움이되지 않으면 지침을 따르십시오. 3. 스택 오버플로 확인에 도움이되지 않으면"여전히 적용됩니다.
FragmentalStew

6

브루 링크 링크를 수행하는 동안 또한 다음과 같은 문제가 있습니다.

오류 : include / node / usr / local / include를 symlink 할 수 없습니다. 쓰기 가능하지 않습니다.

/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. 터미널 사용

Google 은 터미널에서 chmod / chown (변경 모드 / 변경 소유자) 명령을 사용하는 방법

2. 그래픽 '정보 입수'사용

권한을 변경하려는 폴더 / 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 정보 입수 를 열면 아래와 같이 하단에 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

요컨대, Sophos는 특정 / usr / local 디렉토리의 권한을 변경하고 있습니다. Sophos가이를 패치했으며 수정 사항은 버전 9.4.1에 포함되어 있습니다.


불행히도 나는 여전히 이것을 얻었고 Sophos를 설치했습니다. FWIW : |
rogerdpack

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

1

익숙하지 않은 사람들을 위해 :

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

0

파인더의 폴더로 이동 한 후 마우스 오른쪽 버튼을 클릭하고 "정보 입수"를 선택하면 폴더의 "공유 및 권한"섹션으로 이동하여 "읽기 및 쓰기"를 "모두"에게 허용 할 수 있습니다.

이것이 symlinks 가이 오류로 전달되도록하는 것입니다. 또한 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.