O médico da Brew diz: “Aviso: / usr / local / include não é gravável.”


352

Brew doctor diz:

Aviso: / usr / local / include não é gravável. Isso pode acontecer se você "sudo make install" software que não é gerenciado pelo Homebrew.

Se um conjunto tentar gravar um arquivo de cabeçalho nesse diretório, a instalação falhará durante a etapa do link.

Você provavelmente deve chown/ usr / local / include

Eu tentei comandos diferentes para resolver isso, mas ainda estou preso aqui.

Estou executando o homebrew no 10.8.2


11
Eu recebi um erro semelhante para "/ usr / local / lib" no Homebrew 0.9.4 que também foi resolvido com a solução abaixo.
JeremiahLee

Respostas:


680

Tome posse dele e tudo nele.

Mac OS High Sierra ou mais recente: (digite Kirk nos comentários abaixo)

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

Versões anteriores do macos:

$ sudo chown -R $USER:admin /usr/local/include

Então faça outro

$ brew doctor

13
operação não permitida?
Topwik

68
Alguma vantagem em vez de $ sudo chown -R `whoami` /usr/local/?
Labu

2
@WillemLabu menos um fork do processo? whoami é um ID de usuário eficaz e, como a página de manual diz, é obsoleto :) bash é o shell padrão no OSX e em algum lugar o USER está sendo configurado.
Jrwren

7
Gostaria de saber se alterar a propriedade de / usr / local para um usuário uma solução limpa. Não seria melhor adicionar $ USER ao grupo 'wheel'? Ou altere o grupo de / usr / local para o grupo de administradores?
precisa

13
De acordo com Homebrew no Mac OS, o chown de High Sierra /usr/localnão funciona mais. Em vez disso usesudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett

115

O que funcionou para mim também foi

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
Esta é a correção só sã, não realmente sãos para se apropriar de / usr / local em um sistema operacional multiusuário
Alexander Torstling

3
Precisa conseguir alguns votos para esse cara! ;) Isso funcionou muito bem.
jrista

11
Esta é a melhor solução IMHO
jacurtis

5
Bem, não em High Sierra. "Não foi possível alterar o modo de arquivo em / usr / local: operação não permitida"
user980018 3/17/17

11
@ user980018 Acabei de encontrar a mesma coisa - eis a solução alternativa que usei
Casey Davidson

38

O que funcionou para mim foi

$ sudo chown -R yourname:admin /usr/local/bin

37

O único que trabalhou para mim no El Capitan foi:

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

5
chown: / usr / local: Operação não permitida
AlxVallejo

11
@AlxVallejo fazê-lo em / usr / / bin local, funcionou para mim
marcotama

23

Se você estiver em High Sierra e tiver esse problema, siga as etapas abaixo ( Nota: / usr / local não pode ser exibido em High Sierra ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Em seguida, tente vincular ao link de fermentação. Eu estava enfrentando um problema semelhante e nenhuma das soluções acima funcionava para High Sierra. Espero que isso ajude alguém.


21

Para High Sierra:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Em seguida, tente seus comandos de preparação.

Edição 3285


2
Não sei por que isso foi prejudicado, se você já instalou e atualizou o brew para High Sierra, a reinstalação do Homebrew corrige o problema. Esta é a abordagem mais fácil
sam9046

Ironicamente, é porque o script faz exatamente o que as outras respostas estão sugerindo.
Lightness Races em órbita

Isso funcionou para mim, mas primeiro desinstalei o anterior usando: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

Você pode também .bash_profileusar o comando para corrigir esse problema no seu computador e executá-lo sempre que o encontrar:

No final do arquivo ~/.bash_profile, adicione:

alias fix_brew='sudo chown -R $USER /usr/local/'

E agora dentro do seu terminal você pode executar:

$ fix_brew

12

Isso funcionou para mim no macOS 10.12

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

Tive o problema de atualizar o homebrew com o seguinte erro:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local

8

Para alguns, será:

sudo chown -R JonJames:admin /usr/local/lib

onde "lib" é usado em oposição a "bin" ou "include" ou "qualquer outra coisa"

O Homebrew Warning "deve" explicar o que especificamente não é gravável e fornecer uma sintaxe de comando a seguir, no entanto, você precisará usar o ":" em oposição ao que o Aviso menciona que na verdade não é a sintaxe correta?


A sintaxe no Aviso é um pouco confuso eu acredito, eu enviei um email ao contribuinte principal para Homebrew para perguntar se eles mudaria nada sobre isso, aguardando a resposta, talvez palavreado do Aviso mudará em futuras atualizações de preparar ..
Jonathan James

obrigado! Isso funcionou após uma quantidade razoável de pesquisas.
precisa

7

Trabalhe para mim

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

$ cd /usr/local/Library && git stash && git clean -d -f

5

Mesmo erro no MacOS 10.13

/usr/local/includee /usr/local/ /usr/libnão foram criados. Criei manualmente e brew linkfinalmente trabalhei.


3

Você precisa criar / usr / local / include e / usr / local / lib se eles não existirem:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include

3

O que funcionou para mim, embora eu tenha mais de um usuário no meu computador.

Usando o terminal:

  • Corrida brew doctor
    • Ver vários /usr/local/...erros não é gravável
  • Desativando a proteção de integridade do sistema do Mac: https://apple.stackexchange.com/a/208481/55628
  • Execute o seguinte
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Executando o Macbook Pro OSX High Sierra (versão 10.13.3.)

EDIT 1:

FYI - Esteja ciente de que isso causa um problema com a execução do MySQL no seu MAC.

Para poder iniciar meu servidor local, tive que executar:

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

Depois de executar isso, você pode iniciar o servidor MySQL local.


11
Excelente! Obrigado!
22418 shmuli

3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Isso criará todos os diretórios necessários e dará a propriedade correta.

Depois de executar estes comandos, verifique com: brew doctor

Isso funciona para o Mojave.


2

Você precisa ter o controle de inteiro /usr/localpara fazer isso, precisa fazer uma recursiva chownsob/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/


2

Eu só quero repetir o comentário modesto do sam9046 como uma solução alternativa e potencialmente muito mais fácil que funcionou no meu caso: desinstalar e instalar o homebrew novamente do zero. Nenhum comando sudo é necessário.

Você também pode procurar / modificar o script de desinstalação desse link acima, se precisar garantir que ele não afete os pacotes instalados anteriormente. No meu caso, essa era apenas a minha máquina doméstica, então comecei de novo.



2

Primeiro você precisa criar o diretório:

sudo mkdir /usr/local/include

Segundo:

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

1

Isso aconteceu na minha organização depois que todos os nossos usuários foram vinculados ao diretório ativo (alterando efetivamente o UID de 50x para ######).

Agora é simplesmente um caso de alterar a propriedade de todos os arquivos pertencentes a x para y.

Onde 501 é meu antigo ID de usuário numérico, que ainda está associado a todos os arquivos de homebrew.

O ID do usuário antigo pode ser encontrado usando ll /usr/local/Cellar

Agora atualize a propriedade sudo find /usr/local -user 501 -exec chown -h $USER {} \;

Dessa forma, evitamos alterar a propriedade dos arquivos que não são controlados pelo homebrew ou pertencem a algum outro usuário do sistema.


1

Vá para o diretório / bin e digite:

chown -R $ (whoami): admin / usr / local / bin

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.