Como o Homebrew não precisa mais da propriedade de / usr / local?

28

Hoje eu corri brew updatee depois de migrar o repositório, ele relatou que não precisava mais da propriedade de /usr/local:

$ brew update
Updated Homebrew from 5371359 to 13f08a2.
...
==> Migrating HOMEBREW_REPOSITORY (please wait)...
==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
  sudo chown root:wheel /usr/local

Essa mudança parece um pouco duvidosa. Como o brew realiza esse novo comportamento, aparentemente ignorando os controles de segurança?

Jason R. Coombs
fonte
Quais controles de segurança estão ignorando? O /usr/localnão está incluído no SIP. Consulte Sobre a proteção da integridade do sistema no seu Mac em "Caminhos e aplicativos que aplicativos e instaladores de terceiros podem gravar para incluir:" /usr/localestá listado.
user3439894
3
Dito isto, como não sou usuário do Homebrew, como eu compilo diretamente do código-fonte os utilitários que eu quero que não estão incluídos no OS X, no entanto, imagino que o Homebrew foi reescrito conforme necessário / necessário para agir normalmente como outros aplicativos. feito no passado. O Homebrew da IMO deveria ter sido escrito desde o início, para não precisar usurpar a propriedade raiz, para começar!
user3439894
Quero dizer, se /usr/locale seus filhos pertencem root:adminou root:wheelnão são graváveis ​​em grupo, então não tenho acesso para gravar nesses diretórios (e nem o homebrew, provavelmente), mas se for esse o caso, como o Homebrew pode gerenciar a instalação e remover aplicativos desses locais?
Jason R. Coombs
3
Só estou percebendo que a mensagem apenas faz referência /usr/locale não seus descendentes. E, observando o que uma nova instalação de homebrew faz, ela define todos os subdiretórios de propriedade de $ USER e grupo gravável.
Jason R. Coombs

Respostas:

19

De acordo com este script ruby: update-report.rb , eles acabaram de mover as coisas para / usr / local / Homebrew, que ainda é de sua propriedade.

albb
fonte
2
O / usr / local não precisa ser gravável por $ USER para que a criação do / usr / local / Homebrew ocorra? E quanto a outros diretórios, como / usr / local / Cellar ou / usr / local / opt? O homebrew ainda não precisa de acesso (não sudo) para gravar nesses diretórios? Como isso pode ser feito se os diretórios pertencem à raiz e não podem ser gravados em grupo?
Jason R. Coombs
1
Na primeira instalação, eles ainda usam o sudo para criar o repositório do homebrew, consulte install . O script na minha resposta para atualização, nesse ponto você ainda possui / usr / local que exibiu na versão antiga.
albb
6

Agora, criamos todos os diretórios raiz /usr/localnecessários e verificamos a propriedade deles, em vez de exigi-los por /usr/localsi só.

Mike McQuaid
fonte