Como devo instalar o homebrew no subdiretório / usr / local manualmente?

0

As instruções manuais de instalação em docs.brew.sh são muito breves e insatisfatórias, resultando em alguns erros se eu tentar em um subdiretório de /usr/local sem usar sudo . Direcções em esta questão juntamente com o seu resposta aceita é um pouco melhor, mas também não funciona sem usar sudo .

Eu entendo que posso precisar usar o sudo para instalar o Homebrew, mas espero não precisar continuar usando o sudo para instalar novos pacotes, atualizar, etc. (os scripts de instalação padrão do Homebrew parecem usar sudo mas somente quando absolutamente necessário, enquanto o resultado padrão é que não há necessidade de usar sudo para instalar novos pacotes, atualizar, etc.)

Como devo instalar manualmente o Homebrew em um subdiretório /usr/local ?

Motivação para informações de instalação manual /usr/local subdiretório:

  • A instalação manual me dá o melhor controle sobre o processo de instalação e gerenciamento do Homebrew.
  • A instalação no subdiretório do meu diretório home não é ideal, já que o Homebrew gerencia uma combinação de pacotes construídos localmente e pacotes de todo o sistema.

Motivação para evitar a necessidade de o usuário usar sudo após a instalação:

  • consistência com a instalação padrão
  • mais fácil de administrar os pacotes Homebrew existentes
  • menor risco de segurança se o próprio Homebrew ou os pacotes Homebrew não obrigarem o usuário a executar algumas coisas como root
por brodybits 02.07.2018 / 23:21

1 resposta

0

NOTA: Esta resposta assume que o usuário do macOS está configurado como administrador.

IMPORTANTE: não use sudo a menos que seja absolutamente necessário, conforme descrito abaixo. O resultado final deve ser uma instalação Homebrew que não precise do uso de sudo ever novamente.

Primeiro, crie um diretório temporário em /usr/local usando sudo (digite a senha, se solicitado):

sudo mkdir /usr/local/brewtmp1

Verifique os resultados de ls -l /usr/local :

total 0
drwxr-xr-x   2 root       wheel   64 Jul  2 16:16 brewtmp1

Corrija a propriedade do usuário e do grupo do diretório temporário:

sudo chown $USER:admin brewtmp1

Verifique novamente os resultados de ls -l /usr/local :

total 0
drwxr-xr-x   2 brodybits  admin   64 Jul  2 16:16 brewtmp1

Em seguida, dentro do diretório temporário, baixe e extraia o conteúdo da ramificação master do Homebrew / brew no GitHub sem usando sudo :

cd /usr/local/brewtmp1
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz

Verifique os resultados de ls -l em /usr/local/brewtmp1 :

total 0
drwxr-xr-x  16 brodybits  admin  512 Jul  2 14:46 Homebrew-brew-cbc3184

Verifique os resultados de ls -l Homebrew-brew-* :

total 48
-rw-r--r--   1 brodybits  admin    98 Jul  2 14:46 CHANGELOG.md
-rw-r--r--   1 brodybits  admin  3161 Jul  2 14:46 CODE_OF_CONDUCT.md
-rw-r--r--   1 brodybits  admin   720 Jul  2 14:46 CONTRIBUTING.md
-rw-r--r--   1 brodybits  admin  1334 Jul  2 14:46 LICENSE.txt
drwxr-xr-x   7 brodybits  admin   224 Jul  2 14:46 Library
-rw-r--r--   1 brodybits  admin  7374 Jul  2 14:46 README.md
drwxr-xr-x   3 brodybits  admin    96 Jul  2 14:46 bin
drwxr-xr-x   5 brodybits  admin   160 Jul  2 14:46 completions
drwxr-xr-x  48 brodybits  admin  1536 Jul  2 14:46 docs
drwxr-xr-x   5 brodybits  admin   160 Jul  2 14:46 manpages

Isso deve mostrar o conteúdo do Homebrew com o usuário e grupo corretos.

Renomeie Homebrew-brew-??????? para homebrew (sem usar sudo ) (deve ser permitido usar outro nome, com adaptações para outras etapas abaixo):

mv Homebrew-brew-??????? homebrew

e verifique novamente os resultados de ls -l :

total 0
drwxr-xr-x  16 brodybits  admin  512 Jul  2 14:46 homebrew

Mova o novo diretório homebrew para o lugar certo usando sudo :

sudo mv /usr/local/brewtmp1/homebrew /usr/local

Verifique novamente os resultados de ls -l /usr/local :

total 0
drwxr-xr-x   2 brodybits  admin   64 Jul  2 16:20 brewtmp1
drwxr-xr-x  16 brodybits  admin  512 Jul  2 14:46 homebrew

Adicione a seguinte linha ao arquivo de perfil ( .profile ou .bash_profile conforme apropriado) (conforme indicado por esta resposta para outra pergunta ):

export PATH=/usr/local/homebrew/bin:$PATH

Reinicie o shell, inicie um novo shell ou crie o arquivo de perfil. Verifique se which brew mostra /usr/local/homebrew/bin/brew . Verifique se brew --version funciona (embora sem homebrew-core instalado), por exemplo:

Homebrew >=1.4.0 (shallow or no git repository)
Homebrew/homebrew-core N/A

Recomenda-se fazer brew doctor neste ponto, que incluirá homebrew-core e verificará a instalação correta. Isso pode gerar um aviso sobre o prefixo Homebrew não padrão, mas isso deve ser um problema para a maioria dos pacotes. Então brew --version deve mostrar homebrew-core incluído:

Homebrew >=1.4.0 (shallow or no git repository)
Homebrew/homebrew-core (git revision 2f937; last commit 2018-07-02)

Tente instalar uma fórmula simples, como autoconf :

brew install autoconf

autoconf --version agora deve mostrar que está instalado.

Para desativar a análise (graças a este artigo , deve ser feito depois de instalar um pacote):

brew analytics off

ls -l /usr/local/homebrew agora deve ter esta aparência:

total 48
-rw-r--r--   1 brodybits  admin    98 Jul  2 16:43 CHANGELOG.md
-rw-r--r--   1 brodybits  admin  3161 Jul  2 16:43 CODE_OF_CONDUCT.md
-rw-r--r--   1 brodybits  admin   720 Jul  2 16:43 CONTRIBUTING.md
drwxr-xr-x   3 brodybits  admin    96 Jul  2 16:43 Cellar
-rw-r--r--   1 brodybits  admin  1334 Jul  2 16:43 LICENSE.txt
drwxr-xr-x   8 brodybits  admin   256 Jul  2 16:43 Library
-rw-r--r--   1 brodybits  admin  7374 Jul  2 16:43 README.md
drwxr-xr-x  10 brodybits  admin   320 Jul  2 16:43 bin
drwxr-xr-x   5 brodybits  admin   160 Jul  2 16:43 completions
drwxr-xr-x  48 brodybits  admin  1536 Jul  2 16:43 docs
drwxr-xr-x   3 brodybits  admin    96 Jul  2 16:43 etc
drwxr-xr-x   5 brodybits  admin   160 Jul  2 16:43 manpages
drwxr-xr-x   4 brodybits  admin   128 Jul  2 16:43 opt
drwxr-xr-x   8 brodybits  admin   256 Jul  2 16:43 share
drwxr-xr-x   3 brodybits  admin    96 Jul  2 16:42 var

Agora é recomendado adicionar alguns diretórios possivelmente ausentes e consertar algumas permissões de diretório para combinar com os resultados do script de instalação do Homebrew (eu gostaria que brew doctor verificasse e oferecesse para cuidar desta parte):

cd /usr/local/homebrew
mkdir -p include Caskroom Cellar lib opt share var
chmod g+w include Caskroom Cellar lib opt share var

E, finalmente, limpeza /usr/local/brewtmp1 (usando sudo ):

sudo rm -rf /usr/local/brewtmp1

Leitura adicional e outros recursos:

por 02.07.2018 / 23:21