Koexistenz von Homebrew und Macports erzwingen?

Koexistenz von Homebrew und Macports erzwingen?

Ich habe ein MacOSX-System, das ich seit einigen Jahren verwende, und in dieser Zeit habe ich ziemlich viele Pakete über Macports installiert.

Ich möchte jetzt Homebrew ausprobieren, aber aus dem, was ich hier und anderswo gelesen habe, ist klar, dass die Standardinstallationen von Homebrew und Macports nicht problemlos koexistieren können.

Für mich ist es keine praktikable Option, Macports zu deinstallieren, da ein Großteil meiner täglichen Arbeit mit MacOSX die Verwendung verschiedener von Macports installierter Dienstprogramme erfordert. Darüber hinaus sind viele meiner eigenen, selbst entwickelten Dienstprogramme jetzt von Macports abhängig. Und schließlich sind viele ausführbare Dateien und gemeinsam genutzte Bibliotheken, die ich routinemäßig verwende, jetzt unter /usr/local installiert, und mein System würde schnell unbrauchbar werden, wenn ich diesen Verzeichnisbaum löschen würde.

Meine Frage ist also: Hat jemand eine alternative Möglichkeit gefunden, Homebrew zu installieren, die mit Macports koexistieren kann? Insbesondere: Hat jemand herausgefunden, wie man Homebrew dazu bringt, einen Verzeichnisbaum wie /usr/local/homebrew anstelle von /usr/local zu verwenden?

Vielen Dank im Voraus für alle Vorschläge oder Hinweise zu Dokumenten.

Antwort1

Sie können Homebrew anweisen, sein eigenes Verzeichnis zu verwenden und dieses dann dem Pfad hinzuzufügen. Obwohl es nicht für denselben Zweck ist, weist ihn dieser Auszug aus der Installationsanleitung darauf hin:

Mehrere Installationen

Erstellen Sie eine Homebrew-Installation, wo auch immer Sie das Tarball entpacken. Die Pakete werden dort installiert, wo der Brew-Befehl aufgerufen wird. Sie können dies nach Belieben verwenden, z. B. ein Systemsatz von Bibliotheken in /usr/local und optimierte Formeln für die Entwicklung in ~/homebrew.

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

Antwort2

Meine Methode, die Koexistenz zu erzwingen, besteht darin, MacPorts standardmäßig nicht sichtbar zu machen, aber beim Aufrufen von MacPorts-Programmen sichtbar zu machen. Das heißt, ich umschließe MacPorts-Programme mit einem Skript wie:

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 $* 

Wenn Sie dieses Skript als benennen macports.sh, können Sie die Umschließung durch durchführen macports.sh macports_bin, beispielsweise macports.sh portwird umschlossen ausgeführt port.

Der Einfachheit halber können Sie macports.sh somethingeinige Skripte mit demselben Namen wie die Befehle selbst einfügen und sie in Ihrem HOME-Verzeichnis ablegen, z. B. , ~/bin, ~/.local/binusw.

Ich habe geschriebenein Blog-Beitragvor einem Monat. Sie können es lesen, wenn Sie einen Blick auf die Details werfen möchten.

verwandte Informationen