Ist es sicher, sowohl Homebrew als auch Macports auf demselben Computer zu installieren?

73

Ich habe MacPorts auf meinem iMac mit einer angemessenen Anzahl von Ports installiert.

Ich bin jedoch daran interessiert, Homebrew auszuprobieren, da ich viele gute Dinge darüber gehört habe, und weil mir aufgefallen ist, dass es aktuellere Versionen mehrerer der von mir verwendeten Tools enthält.

Können die beiden gleichzeitig auf demselben Computer installiert sein oder muss ich MacPorts erst vollständig deinstallieren?

Auch wenn die beiden können gleichzeitig installiert werden, werden sie völlig unabhängig voneinander? Eine der Eigenschaften von Homebrew ist, dass keine neuen Versionen von Dingen neu installiert werden, die bereits im System enthalten sind (z. B. Python). Gilt dies auch dafür, dass keine Versionen von Dingen installiert werden, die bereits von MacPorts verwaltet werden?

Was passiert, wenn ich MacPorts anschließend deinstalliere?

Reich
quelle

Antworten:

24

Sie werden nicht gut zusammenleben. Der Apple gcc sucht in / usr / local nach einigen Dingen. Dies bedeutet, dass eine Macports-Kompilierung etwas finden konnte, das der Porter nicht erwartet hatte. In den Mail-Listen und Bugs von macports finden Sie Beispiele für Dinge, die in / usr / local zu finden sind.

user151019
quelle
4
Ich hatte nur einen sehr flüchtigen Blick auf Homebrew, aber wenn Sie den Standardinstallationsort für Homebrew von / usr / local in etwas wie / opt / homebrew / usr / local ändern, würde dieses Problem vermieden werden?
Babu
@ Babu - Laut Brew sollten Sie mit Vorsicht vorgehen
Peter Ajtai
@babu - möglicherweise aber es wird Probleme, mit denen der Homebrew oder Macports forst pn dem Weg ist und die andere diese ausführbaren Dateien Aufnehmen auch vermuten , dass ich die Ports beider Systeme sind nicht vollständig anderen Weg getestet mit
user151019
18

Ich gab eine andere Antwort auf eine ähnliche Frage:

Homebrew verursacht Probleme beim Erstellen von Software aus dem Quellcode, wenn diese in / usr / local installiert ist. Dies ist die Standardeinstellung. Dies ist eine schlechte Wahl, da sich dieser Pfad im Standardsuchpfad von Compilern und anderen Tools befindet. Daher können Builds aus anderer Verpackungssoftware die falsche Abhängigkeit erkennen, wenn sie die Version von Homebrew anstelle der eigenen verwenden.

Vor Jahren, zu Beginn des Projekts, benutzte sogar MacPorts / usr / local. Es stellte sich jedoch heraus, dass nicht mit anderen Tools zusammengearbeitet wurde, wie in den häufig gestellten Fragen dokumentiert. Leider wollten Homebrew-Entwickler nichts von früheren Erfahrungen hören und ignorierten solche Fakten ...

In der Regel ist es besser, nur an einem Werkzeug festzuhalten, um alle Probleme zu vermeiden. MacPorts bemüht sich, alle harcodierten Pfade auszubessern, z. B. zu / sw, das von Fink verwendet wird. Normalerweise wird es funktionieren, aber alles, was in / usr / local installiert ist, wird definitiv Probleme verursachen.

[…]

raimue
quelle
Sieht aus wie es auch möglich ist, Homebrew in zu installieren ~/.homebrew. Würde es MacPorts immer noch stören, wenn es stattdessen dort installiert würde?
Behrang
Jeder andere Speicherort als / usr / local sollte in Ordnung sein.
Raimue
Werden MacPort und Homebrew gut koexistieren, wenn man Homebrew nach / opt / local installiert, wo MacPort installiert ist?
Adam LS
1
Sie sollten keine andere Software manuell in / opt / local installieren, wenn MacPorts dort bereits installiert ist. Es wird definitiv stören, wenn Sie Dateien dort ablegen, die MacPorts nicht bekannt sind, was zu Konflikten bei der Installation von Ports führt.
Raimue
8

Früher dachte ich, dass die Sorgen darüber, was die Gnu-Build-Tools /usr/localbewirken werden, eher paranoid sind. Die Build-Tools erwarten , dass es viele Dinge gibt: In der guten alten Zeit vor den Paketmanagern (ich scherze) haben wir alles kompiliert, was dazu gehört /usr/local. Obwohl Autoconf in der Regel Probleme feststellt, führt die enorme Komplexität vieler Open-Source-Projekte zu Problemen, und es kann schwierig sein, diese Probleme zu beheben, wenn Sie in Schwierigkeiten geraten.

Das Risiko, dass Autoconf Probleme damit hat, etwas zu finden, das nicht in /usr/localOrdnung sein sollte, muss jedoch in Bezug auf die Wartungsproblematik abgewogen werden, da zwei, drei oder vier verschiedene Kopien von Perl, Tcl und Ruby vorhanden sind, die jeweils unterschiedliche Paketbibliotheken abdecken. Unangenehm.

Da meine Erfahrung mit MacPorts und Fink in der Regel durch genau dies verursacht wurde und /usr/localich irgendwann auf die altmodische Art und Weise umstieg, war ich erfreut zu sehen, dass Homebrew sich nicht darum gekümmert hat. Ich habe versucht, MacPorts für die Installation zu konfigurieren /usr/local, aber MacPorts tut alles, um dies zu erschweren. Ich verstehe, dass die Motivation darin besteht, sich das Leben zu erleichtern, wenn man sich mit Hilferufen auf der Mailingliste und dem Bug-Tracker befasst. Beachten Sie jedoch, dass wir die Mühen freiwilliger Paketierer respektieren und ihre Zeit als kostbar behandeln sollten, ihre Debugging-Komfort ist nicht die einzige Art von Einfachheit, die Sie als Benutzer betrifft.

Zumindest in dieser Hinsicht macht Homebrew die Dinge so, wie sie früher gemacht wurden, und MacPorts versucht, sich nicht einzumischen. Wenn Sie bereit sind, zu dokumentieren, welche Pakete Sie mit Homebrew benötigen, und / usr / local bereinigen und bei Schwierigkeiten neu installieren möchten, können Sie jederzeit zurücktreten, falls etwas schief geht. Und wenn Sie feststellen, dass Probleme in / usr / local im Allgemeinen nicht das Risiko einer dauerhaften Beschädigung Ihrer Maschinen bergen, können Sie sich freier fühlen, Risiken einzugehen.

Ich stelle nur fest, wie viel schlechter die Verpackung unter OSX ist als unter FreeBSD: Apple scheint sich nicht wirklich um die Benutzerfreundlichkeit seines BSD-Subsystems zu kümmern, da dies ein Problem ist, bei dem sie helfen könnten.

Charles Stewart
quelle
Nun, meine Frage wird aus der Perspektive eines dummen Benutzers gestellt, der nur den Paketmanager verwendet, um "Sachen zu bekommen". Es ist überhaupt nicht sicher, ob ich in der Lage sein würde, "die Dinge ein wenig selbst herauszufinden, wenn etwas schief geht". Trotzdem, stimmt trotzdem für die zusätzliche Klarstellung. Vielen Dank!
Rich
1
MacPorts als gute Gründe, / usr / local nicht zu verwenden, siehe trac.macports.org/wiki/FAQ#defaultprefix
raimue 18.02.11
3
@Raim: Gute Gründe für sie - es ist so ziemlich ein Kompromiss zwischen der Bequemlichkeit der Fehlersuche und der Einfachheit der Installation auf dem Computer des Benutzers. Letzteres ist mir wichtig.
Charles Stewart
1
Die Anzahl der Dinge, die schief gehen können, weil jemand (oder etwas anderes) eine Kopie von $ lib in installiert hat, /usr/localist endlos. Architekturen, Versionen, konfigurierte Features und Flags, Teilinstallationen, veraltete Installationen mit Sicherheitsproblemen sowie und und verursachen Probleme. Sicher, machen Sie weiter, wenn Sie wissen, was Sie tun, aber melden Sie keine Fehler. Die Erfahrung zeigt, dass die Leute sowieso Fehler melden, und das ist genau der Grund, warum der Trace-Modus ( -tsiehe unten) existiert und warum das Vermeiden /usr/localdie Standardempfehlung ist.
Neverpanic
@neverpanic - Meine Meinung zu den Risiken, alles nach / usr / local zu kompilieren, hat sich geändert, seit ich diese Antwort geschrieben habe. Dies liegt hauptsächlich daran, dass die Komplexität typischer Open-Source-Projekte ständig zunimmt und Autoconf-Probleme nicht einfacher zu lösen sind sort out: Zumindest ist es unfair, "paranoid zu sein". Ich mag den Ansatz des "eigenen privaten Build-Universums" von Macports jedoch immer noch nicht, und es sollte betont werden, dass die Einfachheit der Mailing-Listen-Interaktionen nicht die einzige Art von Einfachheit ist, über die sich der Endbenutzer Gedanken machen sollte. Ich werde meine Antwort Vorbehalte hinzufügen.
Charles Stewart
6

Laut den MacPorts FAQ :

Beachten Sie, dass MacPorts ab Version 2.3.0 / usr / local (und alle anderen Dateien, von denen ein Port nicht abhängig ist) automatisch vor den Build-Systemen von Ports verbergen kann. Diese Funktion wird als Trace-Modus bezeichnet und durch Bereitstellen des Flags -t für den Port aktiviert, z

sudo port -t install <portname>

Dies ist relevant, da gemäß der Homebrew-Installationsseite:

Einer der Gründe, warum Homebrew nur im Vergleich zur Konkurrenz funktioniert, ist, dass wir empfehlen, es nach / usr / local zu installieren. Wählen Sie ein anderes Präfix auf Ihre Gefahr!

Aus diesem Grund und mit wenig persönlicher Erfahrung gehe ich davon aus, dass die Verwendung des Flags -t für MacPort-Installationen die meisten Probleme vermeiden sollte, wenn MacPorts und Homebrew auf demselben System existieren. Um Ihre letzte Frage zu beantworten: Ich sehe keinen Grund, warum die Deinstallation von MacPorts Probleme verursachen würde.

webappzero
quelle
Beachten Sie, dass Sie unter erheblichen Leistungseinbußen leiden werden. Im Allgemeinen sollte dies jedoch in fast allen Fällen funktionieren.
Neverpanic
Vielen Dank für den Hinweis auf diese Einschränkung @neverpanic. Ich gehe davon aus, dass die Performance-Beeinträchtigung nur die Zeit für die Installation des Ports beeinflusst und keine Auswirkungen auf die Laufzeitmerkmale des installierten Ports hat. Wahr?
Webappzero
Richtig. Es werden nur Build-Zeit-Probleme und auch keine Laufzeitprobleme vermieden (diese sind jedoch sehr selten).
Neverpanic
In der Praxis habe ich mich nicht an diese Anforderung erinnert, immer das Ablaufverfolgungsflag zu verwenden. Aus diesem Grund empfehle ich diese Vorgehensweise anderen nicht, es sei denn, Sie sind sicher, dass Sie -t konsistent verwenden werden.
Webappzero
Wenn Sie sich nicht daran erinnern möchten, können Sie ein Wrapper-Skript oder einen Shell-Alias ​​schreiben (beachten Sie jedoch die Interaktion zwischen sudo und Shell-Aliasen), um es immer für Sie weiterzugeben. Beachten Sie, dass El Capitan derzeit den Trace-Modus unterbricht. Ich arbeite an einer Problemumgehung.
Neverpanic
4

Während der Installation von Homebrew auf einem Computer, auf dem ich seit Jahren Ports verwende, kann ich Folgendes lesen:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

Achtung!

plang
quelle
1

Die sudo port -t ...Lösung von webappzero sollte helfen. Um ehrlich zu sein, arbeite ich mit Fink, MacPorts und Homebrew auf einmal, mit Rücksicht auf MacPorts (vorerst sowieso), und benutze nur eine der beiden anderen, um Dinge zu installieren, die ich von MacPorts nicht bekomme. Ich bin auf diese Weise auf sehr wenige Schwierigkeiten gestoßen, noch bevor ich den port -tTrick gelernt habe . Wenn Sie jedoch versuchen, mit mehreren Paket-Managern komplexe Entwicklungs- und Serverumgebungen zu verwalten, sind Sie wahrscheinlich zumindest in einer Welt des Unbehagens. Wählen Sie eine aus und meiden Sie die anderen, aber für etwas, das Sie dringend von ihnen benötigen, und setzen Sie die Hauptperson früher in den Pfad ein.

Wenn das, was ich höre, wahr ist, dass Apple es verbietet, Dinge in / usr / zu installieren, die nicht von Apple stammen (oder vielleicht machen sie das bereits in El Crapitan, was ich vermeide, erst nachträglich zu "up" zu stufen Probleme damit sind gelöst), ich nehme an, dass das Problem gemildert wird, nachdem Homebrew standardmäßig etwas anderes verwendet hat - ob wir dem hartnäckigen Ansatz von Apple zustimmen oder nicht.

Am Ende gefällt mir die Idee, Apples eigene Ports auf einen eigenen Baum zu beschränken. Ich wünschte nur, es wäre nicht / usr /. Ich würde lieber / System / bin / usw. usw. verwenden, um ihre eigenen Inhalte zu isolieren, damit ich sie mit aktueller, von der Community gepflegter Software einfacher umgehen kann.

S. McCandlish
quelle