Was sind Vor- und Nachteile für MacPorts, Fink und Homebrew?

Ich migriere gerade von Ubuntu Linux auf Mac und alles ist neu und ich lerne eine Menge Sachen neu.

Unter Linux hatte ich das ausgezeichnete apt-get, um Softwarepakete zu verwalten. Ich habe auf dem Mac nach einer Alternative gegoogelt und bin auf MacPorts, Fink und Homebrew gestoßen.

Ich werde diesen Computer hauptsächlich zum Entwickeln von Ruby on Rails-Anwendungen verwenden.

Also, was sind die Unterschiede zwischen ihnen? Welches sind die Vor- und Nachteile? Welches ist am besten gepflegt und hat mehr Pakete?

Antworten (6)

Definitiv Homebrew. Ich habe mit Fink angefangen, bin dann zu MacPorts gewechselt (glücklicher), dann Homebrew (viel, viel glücklicher). Dies sind meine Gründe für die Verwendung von jedem (eine Pro-Liste, wenn Sie so wollen):

Fink

  • Apt-basiert - fühlen Sie sich wie zu Hause, wenn Sie aus einer Debian-basierten Umgebung kommen.

MacPorts

  • Im Gegensatz zu Homebrew sind Sie nicht von der MacOS-Bibliothek abhängig, die sich in Zukunft ändern kann.
  • Installieren Sie alles in:/opt/local
  • Nettes Variantensystem , mit dem Sie den Build anpassen können.
  • Einfache und intuitive Port-Dateien, ermöglicht es Ihnen auch, Ihre eigenen hinzuzufügen.
  • Unterstützt viele Versionen von macOS, die auf Mac OS X Tiger zurückgehen, einschließlich PowerPC-Versionen, siehe andere Antwort .

Hausgemacht

  • Maximale Nutzung dessen, was mit OS X geliefert wird. Im Gegensatz zu Fink oder MacPorts müssen Sie Ruby und Bibliotheken nicht von Grund auf neu erstellen/installieren, nur um ein kleines Ruby-basiertes Tool zu installieren.
  • Installiert in /usr/local(Intel) oder /opt/homebrew(Apple Silicon)
  • Installieren Sie ohne Root-Zugriff.
  • Jedes installierte Paket wird sauber in seinen eigenen Keller gesandboxt, sodass Sie keine verirrten Dateien auf Ihrem gesamten System haben, sondern nur symbolische Links von bin, man usw.
  • Enthält Anleitungen und Automatisierung zum Erstellen eigener Formeldateien (z. B. Paketdeskriptoren).
  • In Ruby geschrieben und alle Formeln sind prägnante Ruby-Skripte.

Paket

  • Alles verbaut in:/opt/pkg
  • Unterstützt von der pkgsrc-Community und Joyent
  • Funktioniert bekanntermaßen auf NetBSD, DragonFly BSD, Solaris, Debian, macOS, Minix

https://pkgsrc.joyent.com/install-on-osx/

http://pkgin.net/

Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben . Wenn der Chatraum wieder freigegeben werden muss, melden Sie dieses Problem bitte auf Ask Different Meta oder mit einer Flagge.

MacPorts

Es ist unabhängiger von Mac OS X, das heißt, MacPorts ignoriert einfach viele der Systembibliotheken und Software, die bereits in Mac OS X verfügbar sind, und zieht stattdessen eine eigene herunter , was langsamer sein könnte, wenn das von Ihnen installierte Dienstprogramm einige große benötigt Bibliotheken und Software.

Diese Art der Auswahl ist jedoch sicherer, da die von Ihnen installierten Pakete weniger von Apples Systemaktualisierungs-/Upgrade-Verfahren beeinflusst werden.


Hausgemacht

Es ist stärker abhängig von vorhandenen, von Mac OS X installierten Paketen, wodurch die Installation von Paketen beschleunigt und redundante Bibliotheken minimiert werden.

Es besteht jedoch das Risiko, dass installierte Pakete aufgrund von Apples Systemaktualisierungen/-upgrades beschädigt werden könnten.

Das sind also die beiden unterschiedlichen Arten von Kompromissen.

Außerdem übernimmt Homebrew standardmäßig /usr/local , was manche Leute nicht mögen , weil es irgendwie mit der Unix-Tradition in Konflikt steht und Probleme verursachen könnte, wenn Sie dort bereits etwas installiert haben (MySQL usw.)


Abgesehen von diesen Unterschieden können Sie in Anbetracht der Pakete, die diese beiden anbieten können, mit diesen beiden Befehlen überprüfen, ob Sie bereits MacPorts/Homebrew installiert haben, die Ihnen die Pakete zeigen, die sie derzeit bereitstellen:

port list | wc -l
brew search | wc -l

Und Sie werden feststellen, dass MacPorts viel mehr Pakete als Homebrew hat.

(19399 vs. 3583 am 13. Mai 2016)

Als Anmerkung zur unterschiedlichen Anzahl von Paketen: Homebrew enthält dezidiert keine Pakete für Programmiersprachen, die ein eigenes Paketsystem haben (rubygems/pip/cpan…) oder für Software, für die ein wohl besser geeigneter OS X-Installer verfügbar ist (MacTeX) . Außerdem sind Duplikate und ältere Versionen nicht im Standard-Repo, sondern in alternativen Tap -Repos enthalten. Vergleichen Sie dies mit macports, das zB einen IPython-Port für alle enthaltenen Python-Versionen enthält. Es ist eine Art andere Philosophie, die natürlich die Anzahl der Pakete in Macports erhöht.
Ausgezeichnete Verbindung! terrychay.com/article/macports-vs-homebrew.shtml Vielen Dank!
@YaOz, Sicherlich könnten Sie Homebrew ändern, um etwas anderes als zu verwenden /usr/local?
@Pacerier Ich glaube, dass alles andere als /usr/local/"nicht unterstützt" oder "entmutigt" ist.
Niemand weist auf eines der Hauptprobleme von Homebrew hin ... es ist ein Einzelbenutzersystem. MacPorts ist es nicht.
Das Single-User-Ding ist eigentlich kein Problem, es ist so konzipiert, dass es das Gemetzel eindämmt und die schmutzigen Finger der Benutzer vom Root fernhält. Seine Quasi-Containerisierung, sozusagen.
Auch die nicht duplizierenden Code-Repos sind sehr gut . Eine der schrecklichsten Designentscheidungen, die ich je in einem Paketmanager gesehen habe, war, dass Debian GEM damals absichtlich kaputt gemacht hat, weil "Sie apt verwenden sollten". Es machte die Systemgrenze für Ruby unbrauchbar, es sei denn, Sie haben das System Ruby gehackt und Ihr eigenes kompiliert, wodurch jedes von Ruby abhängige Debian-Paket beschädigt wurde. Ihre Python-Verpackung war auch nicht viel besser. Zum Glück haben sie das Chaos später auf der Strecke behoben. So'ne Art. Mindyou schlägt die Python-Setups der Apple-Nuking-Leute jedes Mal, wenn sie einen kleinen Hotfix für OSX veröffentlichen

Nur um einige meiner eigenen Gedanken hinzuzufügen, die zumindest Ende 2014 wahr erscheinen.

Homebrew hat vor ein paar Jahren definitiv die Oberhand in Bezug auf Mindshare. Sie werden viele Blogs finden, in denen Leute darüber sprechen, wie viel glücklicher sie mit Homebrew sind – normalerweise wegen der ganzen Sache „MacPorts zieht die ganze Welt an“ vs. „Homebrew nutzt, was Sie bereits haben“.

Meiner Meinung nach ist MacPorts jetzt jedoch ein anderes Biest als noch vor ein paar Jahren. Als ich zum ersten Mal zu OS X wechselte und MacPorts verwendete, war die MP-Philosophie tatsächlich frustrierend, da fast alles aus dem Quellcode erstellt wurde. Eine Neuinstallation war besonders mühsam/langsam. Im Laufe des letzten Jahres oder so scheint es jedoch, basierend auf meinen eigenen Eindrücken, so zu sein, dass 90% der MP-Pakete Binärdateien sind und die Installation jetzt wirklich sehr schnell ist. Soweit ich weiß, bewegt sich Homebrew mit "Bottles" auch in diese Richtung, aber ich habe den Eindruck, dass die meisten Dinge, die Sie zu diesem Zeitpunkt über HB installieren, aus den Quellen kompiliert werden.

Also, um nur eine gegenteilige Meinung zu vertreten, MacPorts scheint heutzutage tatsächlich die "schnellere" Option zu sein. Die Meinungen der meisten Leute über MP scheinen jedoch auf Erfahrungen aus den Jahren 2011-12 oder so zu beruhen und berücksichtigen dies nicht wirklich. Nehmen Sie dies jedoch mit einem Körnchen Salz, da ich kein regelmäßiger HB-Benutzer bin (und es ziemlich schmerzhaft ist, beide nebeneinander zu verwenden).

Ich denke jedoch, dass HB Vorteile hat, die bedeuten, dass es auf lange Sicht wahrscheinlich "den Krieg gewinnen" wird

  • HB ist ganz Ruby, während MacPorts und seine Paketformeln in TCL geschrieben sind, was ... nicht gerade eine beliebte Skriptsprache ist. Das heißt, es ist verdammt einfach, ein eigenes Portfile zu erstellen.
  • HB basiert auf GitHub und scheint daher für neue Mitwirkende viel einladender zu sein, während MacPorts irgendwo sein eigenes SVN-Repository hostet, denke ich - was im Grunde das unterschiedliche Alter beider Projekte widerspiegelt, nehme ich an.
  • HB und Macports verwenden jetzt beide Github, um ihre Formeln, Portfiles und den Quellcode zu verwalten, um ihre Funktionalität bereitzustellen.
  • Wie bereits erwähnt, besteht allgemeiner Konsens darüber, dass MacPorts von HB abgelöst wurde, was zu Recht oder zu Unrecht mehr Menschen anzieht.

Ansonsten haben YaOZl & kLy den Hauptunterschied in Bezug auf sudo, Abhängigkeiten usw. ziemlich gut abgedeckt. Persönlich finde ich, dass MacPorts manchmal zu einigen Kopfschmerzen führt, wenn andere Programme nicht erwarten, dass etwas in ist /opt/local, Dinge mit Root-Rechten installiert werden usw. & es gibt einige Dinge, die im Allgemeinen am besten nicht mit MacPorts installiert werden (z. B. können Sie Rails über MacPorts, aber Sie wären verrückt, es nicht über Rubys normale Gem-Verwaltung zu installieren). Abgesehen davon bin ich ein großer Fan der MacPorts-Philosophie, eine eigene kleine Welt aufzubauen und sich nicht auf eine vorgefertigte OS X-Bibliothek zu verlassen - wenn es funktioniert, und das tut es meistens, ist alles kinderleicht. Was Sie wirklich von einem Paketmanager erwarten. Und wie ich bereits erwähnt habe, ist es zu diesem Zeitpunkt verdammt schnell, die meisten Dinge einzurichten.

Hoffe, einiges davon war nützlich.

"Wie bereits erwähnt, besteht allgemeiner Konsens darüber, dass MacPorts durch HB ersetzt wurde und das, zu Recht oder zu Unrecht, mehr Menschen dazu bringt." ... das fühlt sich wie eine sehr oberflächliche Aussage an ... beliebt zu sein und Qualität zu bieten ist nicht dasselbe und bedeutet keineswegs, dass das Zweite durch das Erste "abgelöst" wird.
MacPorts verwendet jetzt Github. Siehe guide.macports.org/#project.github : „Das MacPorts-Projekt verwendet das verteilte Versionskontrollsystem Git, um den Code für das gesamte Projekt zu verwalten. Unsere Master-Repositories werden auf GitHub gehostet. Wir unterhalten öffentliche Repositories für fast unseren gesamten Projektcode und Dokumentation, einschließlich eines GitHub-Repositorys für das MacPorts-System selbst, für die MacPorts-Portierungen und sogar für die Anleitung, die Sie gerade lesen."
Die Strategie von MacPorts macht mehr Sinn, da Apple unzuverlässig ist, was die Lib betrifft, die sie in ihrer "nächsten Version" verteilen werden.

Etwas, das andere Antworten (bisher) nicht erwähnt zu haben scheinen, ist, dass MacPorts eine hervorragende Unterstützung für ältere Versionen von macOS bietet. Homebrew unterstützt nur die Betriebssysteme, die derzeit von Apple unterstützt werden, was normalerweise die letzten drei Versionen bedeutet. Beispielsweise sind ab Februar 2022 nur Monterrey, Big Sur und Catalina mit Homebrew kompatibel.

Im Gegensatz dazu können MacPorts auf Tiger (!) installiert werden, und das Projekt pflegt spezielle Patches, um die Software wo immer möglich am Laufen zu halten. Dazu gehört eine „Legacy Support“-Bibliothek, die Funktionen von neueren Versionen von macOS auf ältere zurückportiert; Das Linken gegen diese Bibliothek während des Kompilierens kann dazu führen, dass eine Vielzahl neuer Software plötzlich auf älteren Systemen funktioniert!

Wenn Sie also eine alte Version von macOS verwenden oder glauben, dass Sie möglicherweise nach dem Ablaufdatum von Apple auf einem aktuellen Betriebssystem bleiben müssen, sollten Sie sich wahrscheinlich für MacPorts entscheiden.

Ich bin in China und der Besuch von Github schlägt oft fehl, was die Installation von Brew ziemlich mühsam macht. Ich kenne einige Brew Mirrors in China, also habe ich ein Problem gegen Brew aufgeworfen . Sie haben es in 2.3 behoben . Aber selbst damit funktioniert die Installation von Brew immer noch nicht, z. B. habe ich mehrmals getroffen, dass Brew nach der Installation keine Formel finden kann.

qiulang@qiulangdeMacBook-Air redis % brew info wget
Error: No available formula with the name "wget".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
qiulang@qiulangdeMacBook-Air redis % brew info redis
Error: No available formula with the name "redis".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.

Jetzt weiß ich, dass ich "erneut tippen" muss, aber während dieser Zeit wusste ich einfach nicht den genauen Grund, außer dass die Installation von Brew nicht erfolgreich war.

Aus Verzweiflung habe ich den Macport gewechselt und es funktioniert bisher ganz reibungslos.

Brew war für mich völlig problemlos zu verwenden, daher kann ich nichts über seine Nachteile sagen. Einige Nachteile von MacPorts:

Es gibt mehrere sehr beliebte Fragen zu den ersten beiden Punkten.

Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben .
Es ist falsch, dass Sie einen CC haben müssen, um eine AppleID einzurichten und Xcode von der Entwicklerseite herunterzuladen. Habe gerade einen zum testen gebaut.
@MarcWilson danke für das Update. Ich wurde 2015 nach einer Kreditkarte gefragt und fand keinen Weg, darauf zu verzichten. Ich kann die neuen Bedingungen jetzt nicht testen. (Sie könnten auch länderspezifisch sein; ich bin in der EU.)