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

gaggina
fonte
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
jrwren
fonte
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
Durul Dalkanat
fonte
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
Ana Isabel
fonte
37

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

sudo chown -R $(whoami) /usr/local
Husky
fonte
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.

Pró
fonte
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

Mahi
fonte
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
karlingen
fonte
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
Máx.
fonte
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?

Jonathan James
fonte
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
Alexander Salas Bastidas
fonte
5

Mesmo erro no MacOS 10.13

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

Miguel
fonte
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
waldencoder
fonte
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.

JayRizzo
fonte
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.

Sven
fonte
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/

adicionar ponto e vírgula
fonte
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.

adamkski
fonte
2

Primeiro você precisa criar o diretório:

sudo mkdir /usr/local/include

Segundo:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
fonte
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.

Tarun
fonte
1

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

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

Yusuf
fonte