Forçando Homebrew e Macports a coexistir?

10

Eu tenho um sistema MacOSX que utilizo há vários anos e, durante esse período, instalei alguns pacotes via Macports.

Agora, quero experimentar o Homebrew, mas é claro pelo que li aqui e em outros lugares que as instalações padrão do Homebrew e Macports não podem coexistir facilmente.

Não é uma opção viável desinstalar o Macports, pois 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 próprios utilitários domésticos agora são interdependentes com os Macports. E, finalmente, muitos executáveis ​​e bibliotecas compartilhadas que eu uso rotineiramente agora estão instalados em / usr / local, e meu sistema rapidamente se tornaria inutilizável se eu limpasse a árvore de diretórios.

Então, minha pergunta é a seguinte: alguém criou uma maneira alternativa de instalar o Homebrew que pode coexistir com o 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 sugestões para documentos.

HippoMan
fonte
Se você só quer tentar, por que não configurar uma máquina virtual OS X? Não é contra o TOS da Apple para OS X 10.7 e você pode experimentar o que quiser lá. Mesmo que tipo de obras para uso tanto em paralelo, eu não ficaria surpreso se as coisas começaram a quebrar ...
Daniel Beck
Muito obrigado, mas prefiro que ambos os gerenciadores de pacotes sejam executados no mesmo ambiente OSX, se houver alguma maneira de fazer isso. Isso ocorre porque, se eu gostar do Homebrew, desejarei instalar gradualmente pacotes através desse sistema e desinstalar gradualmente os antigos pacotes baseados em Macports. Infelizmente, não é uma alternativa viável para eu decidir sobre o Homebrew, acabar com todo o meu código legado de Macports de uma só vez e depois lutar para substituí-lo em outra queda através do Homebrew.
precisa saber é o seguinte

Respostas:

2

Você pode dizer ao Homebrew para usar seu próprio diretório e adicioná-lo ao caminho. Embora não tenha a mesma finalidade, este trecho do guia de instalação informa:

Instalações múltiplas

Crie uma instalação Homebrew onde quer que você extraia o tarball. Qualquer comando de fermentação 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 aprimoradas para desenvolvimento em ~ / homebrew

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

Karolos
fonte
Obrigado Karolos. Não sou encorajado pela seguinte declaração na mesma página da wiki: "No entanto, faça um favor a si mesmo e instale-o em / usr / local ... Escolha outro prefixo por sua conta e risco! " Mas tentarei relatar isso. mais tarde.
precisa saber é o seguinte
Tentei instalar o homebrew em / usr / local / homebrew. No entanto, vários pacotes que tento instalar estão falhando. Quando executo / usr / local / homebrew / bin / brew doctor , obtenho referências a literalmente dezenas de dylibs inesperados, bibliotecas estáticas, arquivos .pc e arquivos .la, além de avisos sobre certos pacotes que exigem uma instalação / usr / local. Como meu sistema não funcionará se eu acabar com minhas instalações de software legado (que é a origem da maioria desses arquivos "inesperados"), parece que não há como eu usar o homebrew no meu sistema. Ah, bem ... (suspiro) ...
HippoMan
@ HippoMan: Desculpe por não dar certo. Uma pergunta é: / usr / local / homebrew está configurado corretamente em seus caminhos? PATH e (DY) LD_LIBRARY_PATH
Karolos
@ HippoMan: Quais pacotes estão falhando? Eu apenas tentei instalar alguns deles e não vi nenhum problema (depois de editar o / etc / caminhos para adicionar / usr / local / homebrew / bin).
Karolos
Sim, eu tenho PATH e LD_LIBRARY_PATH configurados corretamente para apontar para bin e lib sob a árvore / usr / local / homebrew. Um dos pacotes que falhou é o gawk, que é um pré-requisito para o avidemux. Mas vou reiniciar do zero e tentar mais uma vez, caso tenha cometido algum tipo de erro.
precisa saber é o seguinte
1

Minha maneira de forçá-los a coexistir é tornar o MacPorts não visível por padrão, mas visível ao chamar 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 macports.sh macports_bin, como macports.sh portserá executado port.

Para maior comodidade, você pode colocar macports.sh somethingem alguns scripts com o mesmo nome que a si mesmos comandos e colocá-los em seu diretório home, como ~/bin, ~/.local/bin, etc.

Eu escrevi um post sobre isso há um mês. Você pode lê-lo se precisar dar uma olhada nos detalhes.

xuhdev
fonte