![Forçando a coexistência de Homebrew e Macports?](https://rvso.com/image/1303084/For%C3%A7ando%20a%20coexist%C3%AAncia%20de%20Homebrew%20e%20Macports%3F.png)
Tenho um sistema MacOSX que uso há vários anos e, durante esse tempo, instalei alguns pacotes via Macports.
Agora quero experimentar o Homebrew, mas está claro pelo que li aqui e em outros lugares que as instalações padrão do Homebrew e do Macports não podem coexistir facilmente.
Não é uma opção viável desinstalar Macports, já que grande parte do meu trabalho diário no MacOSX envolve o uso de vários utilitários instalados no Macports. Além disso, muitos dos meus utilitários caseiros agora são interdependentes dos Macports. E, finalmente, muitos executáveis e bibliotecas compartilhadas que uso rotineiramente agora estão instalados em /usr/local, e meu sistema rapidamente se tornaria inutilizável se eu limpasse essa árvore de diretórios.
Então, minha pergunta é a seguinte: alguém descobriu uma maneira alternativa de instalar o Homebrew que possa coexistir com Macports? Especificamente, alguém descobriu como fazer o Homebrew utilizar uma árvore de diretórios como/usr/local/homebrew em vez de/usr/local?
Agradecemos antecipadamente por quaisquer sugestões ou indicações para documentos.
Responder1
Você pode dizer ao Homebrew para usar seu próprio diretório e adicioná-lo ao caminho. Embora não tenha o mesmo propósito, este trecho do guia de instalação informa:
Várias instalações
Crie uma instalação do Homebrew onde quer que você extraia o tarball. Qualquer que seja o comando brew chamado, é onde os pacotes serão instalados. Você pode usar isso como achar melhor, por exemplo, um conjunto de bibliotecas do sistema em /usr/local e fórmulas ajustadas para desenvolvimento em ~/homebrew
Responder2
Minha maneira de forçá-los a coexistir é tornar os MacPorts não visíveis por padrão, mas visíveis ao invocar qualquer programa MacPorts. Ou seja, envolva os programas MacPorts com algum script como:
if [ "$#" -le 0 ]; then
echo "Usage: $0 command [arg1, arg2, ...]" >&2
exit 1
fi
if [[ -z $MACPORTS_PREFIX ]]; then
MACPORTS_PREFIX='/opt/local'
fi
export PATH="$MACPORTS_PREFIX/bin:$MACPORTS_PREFIX/sbin:$PATH"
export DYLD_LIBRARY_PATH="$MACPORTS_PREFIX/lib:$DYLD_LIBRARY_PATH"
export CPATH="$MACPORTS_PREFIX/include:$CPATH"
command=$1
shift
exec $command $*
Se você nomear esse script como macports.sh
, poderá fazer o empacotamento por macports.sh macports_bin
, como macports.sh port
será executado port
embrulhado.
Por conveniência, você pode colocar macports.sh something
alguns scripts com o mesmo nome dos próprios comandos e colocá-los em seu diretório HOME, como ~/bin
, ~/.local/bin
, etc.
eu escreviuma postagem no blogsobre isso há um mês. Você pode lê-lo se precisar dar uma olhada nos detalhes.