Tornar arquivos em `/ usr / local` graváveis ​​para homebrew

35

Eu tenho tentado fazer com que o homebrew funcione bem, mas parece que tudo dentro /usr/localnão é gravável e tudo cai.

Ele continua me dizendo para recursivamente chown /usr/local, e eu tentei isso. Operação negada, então eu fiz isso. Pareceu funcionar, mas com um silêncio sinistro que eu ouço é considerado educado no Unix. Infelizmente, qualquer tentativa subsequente de brew updateencontrar a mesma cacofonia de erros.

Reencaminhamos o comando -ve parece que a operação não é permitida para nada dentro.

Por mais que a resposta seja provavelmente "aprenda UNIX", estou apenas tentando cumprir alguns requisitos de trabalho aqui para obter um tutorial sobre Ruby, portanto, há algumas etapas acima de onde estou atualmente.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Tigt
fonte
Diz brew doctoralguma coisa útil? Poste a saída aqui.
Ian C.
@IanC. É uma longa lista de tudo o que está relacionado com a fermentação, não sendo gravável. Existe um utilitário de pasta de pilha de troca? Há muito disso.
Tigt
Bem, isso é estranho. Há muito menos agora do que havia.
Tigt
Apenas para sua informação: Acabei de correr brew updatee descobri que "o Homebrew não precisa mais ter propriedade de / usr / local". Mais informações nesta pergunta . Obviamente, para chegar a esse ponto, você ainda precisa de actualizar temporariamente as permissões em / usr / local :)
acobster

Respostas:

26

Isso deve ser resolvido alterando as permissões nesse diretório da seguinte maneira:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Se você não conhece seu grupo, basta digitar id -g.

jherran
fonte
A parte importante é -Rtorná-lo recursivo. E você provavelmente tem que fazer o chownuso sudo. Para o grupo de usuários, eu costumo usar staffno OS X.
nwinkler
Interessante. Por que o grupo é tão diferente do usuário?
Tigt
4
Por que é certo / usr / local pertencer ao seu usuário? Eu acho que isso é um risco à segurança, pois existem muitos outros programas que usam / usr / local e podem ser assumidos silenciosamente. A fermentação realmente precisa de algo tão drástico?
dfrankow
1
Eu acredito que isso é perigoso, pois seleciona o grupo 'staff', o que significa que todos os usuários no sistema operacional podem alterar o conteúdo de / usr /. Você provavelmente deve mudar para 'admin'.
Indolering
1
@dfrankow sim, este é um erro de homebrew. Eles nem pensaram no que acontece se houver dois usuários na mesma máquina.
poige 6/01
22

Você precisa usar o sudo para executar o comando com privilégios elevados, assim:

sudo chown -R `whoami` /usr/local
Ian C.
fonte
Eu fiz. "Operação negada, então eu fiz isso."
Tigt
1
Para usuários de casca de peixe, serásudo chown -R (whoami) /usr/local
kibin
10

Ontem, eu estava enfrentando esse problema com o macOS 10.13.4 e tentei sudo chgrp -R admin /usr/localou sudo chown -R <your-username>:<your-group-name> /usr/localcom Operation not permittederro mesmo usando osudo

Então, tentei apenas chgrpa Homebrewpasta relacionada a admin(Meu usuário está no admingrupo, depende do usuário que você está executando, você pode mudar para um grupo diferente) e conceder adminacesso de gravação ao grupo a essas pastas usando esses comandos

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Depois de executar esses comandos, sou capaz de instalar um novo pacote sem nenhum problema. Se você encontrar algum problema de permissão novamente, tente executar os dois primeiros comandos, substituindo o nome da pasta pelo nome do problema de permissão.

Espero que isso ajude os outros usuários com o macOS 10.13.

Nota: Embora alterar o proprietário /usr/localou alterar o grupo /usr/locale conceder o acesso ao seu grupo possa funcionar, NUNCA deve fazer isso ao modificar a outra pasta não relacionada. Modificar as pastas necessárias é muito mais seguro.

Kong
fonte
isso realmente vai bem para mim! <3 thanks
DariusV
Isso deve ser votado como a resposta correta! Obrigado pela ajuda!
Yini 10/09
2

Para resolver os problemas de permissão nos diretórios, podemos executar o seguinte comando:

brew prune
Catto
fonte
1

Funcionou para mim.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
fonte
0

A resposta de Reza nesta pergunta funcionou para mim:

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

Você não pode alterar a permissão para / usr / local em si, mas pode alterar a permissão correta para pastas abaixo

spacetyper
fonte