Costringendo Homebrew e Macports a coesistere?


10

Ho un sistema MacOSX che uso da diversi anni e, durante questo periodo, ho installato alcuni pacchetti tramite Macport.

Ora voglio provare Homebrew, ma è chiaro da quello che ho letto qui e altrove che le installazioni predefinite di Homebrew e Macports non possono coesistere facilmente.

Non è una soluzione valida per me per disinstallare Macports, dal momento che gran parte del mio lavoro quotidiano su MacOSX riguarda l'uso di varie utility installate su Macports. Inoltre, molte delle mie utility locali sono ora interdipendenti con Macports. Infine, molti file eseguibili e librerie condivise che uso abitualmente sono ora installati in / usr / local, e il mio sistema diventerebbe rapidamente inutilizzabile se eliminassi l'albero delle directory.

Quindi la mia domanda è questa: qualcuno ha inventato un modo alternativo per installare Homebrew che possa coesistere con Macports? In particolare, qualcuno ha capito come fare in modo che Homebrew utilizzi un albero di directory come / usr / local / homebrew invece di / usr / local?

Grazie in anticipo per eventuali suggerimenti o suggerimenti per i documenti.


Se vuoi solo provare, perché non installare una macchina virtuale OS X? Non è contro TOS di Apple per OS X 10.7 e puoi sperimentare con quello che vuoi. Anche se funziona in parallelo, non sarei sorpreso se le cose iniziassero a rompersi ...
Daniel Beck

Molte grazie, ma preferisco che entrambi i gestori di pacchetti siano in esecuzione nello stesso ambiente OSX, se esiste un modo per farlo. Questo perché se mi piace Homebrew, voglio poi installare gradualmente i pacchetti tramite quel sistema e disinstallare gradualmente i vecchi pacchetti basati su Macports. Sfortunatamente, non è una valida alternativa per me decidere su Homebrew, spazzare via tutto il mio codice Macports legalmente in un colpo solo, e poi faticare a rimpiazzarlo in un altro colpo su Homebrew.
HippoMan

Risposte:


2

Puoi dire a Homebrew di usare la sua directory, e poi aggiungerla al percorso. Anche se non per lo stesso scopo, questo estratto dalla guida all'installazione dice:

Più installazioni

Crea un'installazione Homebrew ovunque si estrae il tarball.   Qualsiasi comando di brew è chiamato dove saranno i pacchetti   installato. Puoi utilizzarlo come ritieni opportuno, ad es. un set di sistemi di librerie   in / usr / local e formule ottimizzate per lo sviluppo in ~ / homebrew

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


Grazie Karolos. Non sono incoraggiato dalla seguente dichiarazione sulla stessa pagina wiki: "Comunque fai un favore e installalo su / usr / local ... Scegli un altro prefisso a tuo rischio e pericolo! "Ma darò una prova e riferirò più tardi.
HippoMan

Ho provato ad installare homebrew in / usr / local / homebrew. Tuttavia, un numero di pacchetti che cerco di installare stanno fallendo. Quando corro / usr / local / homebrew / bin / brew doctor , Ottengo riferimenti a letteralmente dozzine di dylibs inaspettati, librerie statiche, file .pc e .la file, oltre ad avvertimenti su alcuni pacchetti che richiedono l'installazione di / usr / local. Dal momento che il mio sistema non funzionerà affatto se avrò spazzato via le mie installazioni software legacy (da cui proviene la maggior parte di quei file "inaspettati"), sembra che non ci sia modo per me di usare homebrew sul mio sistema. Oh bene ... (sospiro) ...
HippoMan

@HippoMan: Mi dispiace che non funzioni. Una domanda però: è / usr / local / homebrew impostato correttamente nei tuoi percorsi? cioè PATH e (DY) LD_LIBRARY_PATH
Karolos

@HippoMan: quali pacchetti stanno fallendo? Ho appena provato a installarne un paio e non ho riscontrato alcun problema (dopo aver modificato / etc / paths per aggiungere / usr / local / homebrew / bin).
Karolos

Sì, ho impostato PATH e LD_LIBRARY_PATH correttamente per puntare a bin e lib sotto l'albero / usr / local / homebrew. Uno dei pacchetti che ha fallito è gawk, che è un prerequisito per avidemux. Ma ricomincio da capo e provo ancora una volta, nel caso avessi fatto una sorta di errore.
HippoMan

1

Il mio modo di forzarli a coesistere è quello di rendere MacPorts non visibile per impostazione predefinita, ma visibile quando si richiama qualsiasi programma MacPorts. Ovvero, avvolgi i programmi MacPorts con alcuni script come:

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 si nomina questo script come macports.sh, puoi fare il wrapping da macports.sh macports_bin, ad esempio macports.sh port correrà port avvolto.

Per comodità, puoi metterlo macports.sh something in alcuni script con lo stesso nome dei comandi stessi e metterli nella directory HOME, ad esempio ~/bin, ~/.local/bin, eccetera.

ho scritto un post sul blog circa questo un mese fa. Puoi leggerlo se hai bisogno di dare un'occhiata ai dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.