Forçando a coexistência de Homebrew e Macports?

Forçando a coexistência de Homebrew e Macports?

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

Fonte:https://github.com/mxcl/homebrew/wiki/installation

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 portserá executado portembrulhado.

Por conveniência, você pode colocar macports.sh somethingalguns 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.

informação relacionada