Erro "brew: command not found" no Distrobox: Como Resolver

Compartilhar

A problemática

Se você usa Distrobox para gerenciar seus ambientes de desenvolvimento (como um contêiner Ubuntu) e tem o Homebrew instalado no seu sistema principal, pode acabar se deparando com o seguinte erro ao tentar usar o brew dentro do contêiner:

bash: brew: command not found

Mesmo que o Homebrew esteja funcionando perfeitamente no seu PC (o host), o sistema dentro do contêiner simplesmente não consegue enxergá-lo.


Por que isso acontece?

O Distrobox facilita muito a vida porque compartilha automaticamente a sua pasta pessoal (/home/seu_usuario) do seu PC direto para o contêiner.

O problema é que o Homebrew no Linux, por padrão, é instalado em um diretório global:

/home/linuxbrew/.linuxbrew

Como essa pasta fica fora do seu diretório de usuário, o contêiner do Distrobox é criado isolado e "cego" para a existência desse diretório.
Resultado: os pacotes e o gerenciador não ficam acessíveis nativamente.


Solução rápida (via atalho)

Se você precisa apenas rodar um brew install esporádico e deixar o sistema principal lidar com isso, pode criar um link simbólico que diz ao contêiner para executar o comando no host. Dentro do contêiner, rode:

sudo ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/brew

Isso cria um túnel direto para o seu PC.


Solução definitiva (recomendada)

Se o seu objetivo é que o Distrobox e o seu PC compartilhem o Homebrew nativamente, permitindo que você instale e rode ferramentas como nvm, python ou dependências de compilação diretamente no contêiner, a melhor saída é montar a pasta durante a criação.

1. Crie o contêiner mapeando a pasta do Brew

No terminal do seu sistema principal, crie um novo distrobox adicionando a flag --volume:

distrobox create --name ubuntu-dev --image ubuntu:latest --volume /home/linuxbrew:/home/linuxbrew

2. Entre no contêiner

distrobox enter ubuntu-dev

3. Carregue o Brew automaticamente

Para não precisar exportar as variáveis toda vez que abrir o terminal do contêiner, adicione-as ao seu arquivo de configuração (se usar zsh, troque .bashrc por .zshrc) :

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
source ~/.bashrc

O que isso faz?

Essa configuração diz:

  • Pegue a pasta /home/linuxbrew do meu PC.
  • Mapeie ela exatamente no mesmo caminho dentro do contêiner.
    Assim, todo o ecossistema do seu Brew fica acessível nativamente e integrado ao seu ambiente de desenvolvimento.

Testando a solução

Após salvar o arquivo e rodar o source:

  1. Abra o terminal do seu contêiner Distrobox
  2. Teste o comando:
brew --version

Se aparecer a versão do Homebrew instalada no seu sistema principal, está tudo certo. Agora seu PC e seu contêiner compartilham o mesmo gerenciador!


Dica extra

Como as pastas estão mapeadas em sincronia, qualquer coisa instalada via Brew dentro do Distrobox também estará imediatamente disponível no seu sistema principal (e vice-versa). Isso poupa espaço em disco e evita dor de cabeça com configurações duplicadas de ferramentas de desenvolvimento.


Conclusão

O "sumiço" do Homebrew dentro do Distrobox acontece apenas por um isolamento de diretórios raiz.
A solução ideal é simples: dizer ao Distrobox para espelhar a pasta /home/linuxbrew usando a flag --volume.

Depois de configurado, seu ambiente ficará contínuo e você não terá mais problemas de "command not found".


Fique ligado

Em breve vamos trazer mais conteúdos sobre:

  • Distrobox na prática
  • configuração de ambientes de desenvolvimento isolados
  • otimização de terminal
  • ferramentas úteis para desenvolvedores

Se tiver dúvidas ou quiser sugerir novos tutoriais, participe da comunidade!

Veja mais