Was ist der Unterschied / die Verwendung von Homebrew, Macports oder anderen Tools zur Paketinstallation? [geschlossen]

238

Ich habe kürzlich von Ubuntu auf einen Mac umgestellt. Ich war enttäuscht, dass Mac sudo apt-getin Ubuntu nicht das Praktische hat. Ich habe gehört, dass ich Homebrew verwenden sollte, bin mir aber nicht ganz sicher, was Homebrew oder Macports tun?

ROBOTPWNS
quelle
8
Vor ein paar Jahren hatte die Homebrew-Haustür eine Aussage, die ungefähr so ​​lautete: "Homebrew ist besser, weil es in Ruby geschrieben ist". Ich habe nichts gegen Ruby, überhaupt nicht. Ich mag oop und Ruby ist eine gute oop Sprache. Ich habe ein Problem mit jedem Softwareentwickler, der eine Sprache für besser hält als alle anderen. Allein aus diesem Grund habe ich kein Interesse an Homebrew. Außerdem funktioniert macports seit vielen Jahren gut für mich.
Mike Makuch

Antworten:

145

MacPorts ist der richtige Weg.

  1. Wie @ user475443 gezeigt hat, hat MacPorts viele, viele weitere Pakete. Mit Brew werden Sie bald gefangen sein, weil die Formel, die Sie brauchen, nicht existiert.

  2. MacPorts ist eine native Anwendung: C + TCL. Du brauchst Ruby überhaupt nicht. Um Ruby unter Mac OS X zu installieren, benötigen Sie möglicherweise MacPorts. Verwenden Sie also einfach MacPorts, und Sie werden zufrieden sein.

  3. MacPorts ist wirklich stabil, in 8 Jahren hatte ich nie ein Problem damit und mein gesamtes Unix-Ökosystem wird darauf übertragen.

  4. Wenn Sie ein PHP-Entwickler sind, können Sie die letzte Version von Apache (Mac OS X verwendet 2.2), PHP und alle erforderlichen Erweiterungen installieren und dann alle mit einem Befehl aktualisieren. Vergessen Sie, dasselbe mit Homebrew zu tun.

  5. MacPorts-Selbsthilfegruppen.

    foo@macpro:~/ port select --summary
    
    Name        Selected      Options
    ====        ========      =======
    db          none          db46 none
    gcc         none          gcc42 llvm-gcc42 mp-gcc48 none
    llvm        none          mp-llvm-3.3 none
    mysql       mysql56       mysql56 none
    php         php55         php55 php56 none
    postgresql  postgresql94  postgresql93 postgresql94 none
    python      none          python24 python25-apple python26-apple python27 python27-apple none
    

    Wenn Sie sowohl PHP55 als auch PHP56 installiert haben (mit vielen verschiedenen Erweiterungen), können Sie mit nur einem Befehl zwischen diesen wechseln. Alle relativen Erweiterungen sind Teil der Gruppe und werden innerhalb der ausgewählten Gruppe aktiviert: php55 oder php56. Ich bin nicht sicher, ob Homebrew diese Funktion hat.

  6. Rubisten schreiben gerne alles in Ruby um, denn das einzige, was sie sich wohl fühlen, ist Ruby selbst.

Substantiv
quelle
26
Rubisten schreiben gerne um - hehe, werfen Sie einen Blick auf NodeJS-Leute, die Binärprotokolle für MySQL in JS implementieren! :)
kolypto
37
Sie benötigen MacPorts nicht, um Ruby zu installieren - Ruby ist in OS X enthalten, und Brew verwendet das System Ruby.
Michael Ekstrand
5
@ Michael Ekstrand OS X enthält nicht die letzte Version von Ruby.
Nomen
89
Kann das nicht positiv bewerten. Es ist zu snarky und die Snarkiness untergräbt die Informationen.
OldPeculier
34
Upvoting, um den ausgelassenen "Anti-Snarky" -Upvotes entgegenzuwirken. Alle Informationen, die von einem Menschen erhalten werden, haben immer eine natürliche Tendenz (in diesem Fall "Snarkiness"). Ich schätze die Perspektive dieses Benutzers, vielleicht speziell, weil die Antwort nicht wie ein Wikipedia-Eintrag lautet.
Rinogo
109

Homebrew und Macports lösen beide das gleiche Problem - das ist die Installation allgemeiner Bibliotheken und Dienstprogramme, die nicht mit osx gebündelt sind.

In der Regel handelt es sich dabei um entwicklungsbezogene Bibliotheken. Diese Tools werden am häufigsten von Entwicklern verwendet, die an osx arbeiten.

Für beide müssen die xcode-Befehlszeilentools installiert sein (die Sie separat von https://developer.apple.com/ herunterladen können ), und für einige bestimmte Pakete muss die gesamte xcode-IDE installiert sein.

xcode kann aus dem Mac App Store installiert werden. Es ist ein kostenloser Download, aber es dauert eine Weile, da es ungefähr 5 GB groß ist (wenn ich mich richtig erinnere).

macports ist eine osx-Version des Port-Dienstprogramms von BSD (da osx von BSD abgeleitet ist, war dies eine natürliche Wahl). Für alle, die mit einer der BSD-Distributionen vertraut sind, werden sich Macports wie zu Hause fühlen.

Ein wesentlicher Unterschied zwischen Homebrew und Macports; und der Grund, warum ich Homebrew bevorzuge, ist, dass es keine Dinge überschreibt, die "nativ" in osx installiert werden sollten. Dies bedeutet, dass Homebrew Sie benachrichtigt, wenn ein natives Paket verfügbar ist, anstatt es zu überschreiben und später Probleme zu verursachen. Es installiert auch Bibliotheken im Benutzerbereich (daher müssen Sie nicht "sudo" verwenden, um Dinge zu installieren). Dies hilft auch beim Entfernen von Bibliotheken, da sich alles auf einem Pfad befindet, auf den Sie zugreifen können.

Homebrew genießt auch eine aktivere Benutzergemeinschaft und seine Pakete (Formeln genannt) werden ziemlich oft aktualisiert.


macports überschreibt keine nativen OSX-Pakete - es wird eine eigene Version bereitgestellt. Dies ist der Hauptgrund, warum ich Macports dem Selbstbrauen vorziehe. Sie müssen sicher sein, was Sie verwenden, und Apple ändert zu unterschiedlichen Zeiten die Ports und ist bekannt Jahre hinter Updates in einigen Projekten zu sein

Können Sie eine Referenz angeben, aus der hervorgeht, dass Macports native OS X-Pakete überschreibt? Soweit ich das beurteilen kann, erfolgt die Installation aller Macports in /opt/local

Vielleicht sollte ich das klarstellen - ich habe in meiner Antwort nirgends gesagt, dass Macports native OSX-Pakete überschreibt. Beide installieren Elemente separat.

Homebrew warnt Sie, wenn Sie die Dinge "nativ" installieren sollten (unter Verwendung des bevorzugten Installationsprogramms der Bibliothek / des Tools), um die Kompatibilität zu verbessern. Das habe ich gemeint. Es werden auch so viele lokale Bibliotheken verwendet, die in OS X verfügbar sind. Aus dem Wiki :

Wir mögen keine Dupes in Homebrew / Homebrew

Wir mögen jedoch Dupes im Wasserhahn!

Dinge, die mit OS X geliefert werden oder eine Bibliothek sind, die von RubyGems, CPAN oder PyPi bereitgestellt wird, sollten nicht getäuscht werden. Dafür gibt es gute Gründe:

  • Doppelte Bibliotheken unterbrechen regelmäßig Builds
  • Subtile Fehler treten bei doppelten Bibliotheken und in geringerem Maße bei doppelten Tools auf
  • Wir möchten, dass Sie sich mehr Mühe geben, damit Ihre Formel mit OS X funktioniert

Optional können Sie die von macosx bereitgestellten Versionen von Dienstprogrammen mit Homebrew überschreiben.

Burhan Khalid
quelle
78
macports überschreibt keine nativen OSX-Pakete - es liefert eine eigene Version - Dies ist der Hauptgrund, den ich Macports gegenüber Home-Brew bevorzuge. Sie müssen sicher sein, was Sie verwenden, und Apple ändert sich zu unterschiedlichen Zeiten an den Ports und ist bekannt um in einigen Projekten hinter Updates zurück zu sein
user151019
13
Können Sie eine Referenz angeben, aus der hervorgeht, dass Macports native OS X-Pakete überschreibt? Soweit ich das beurteilen kann, erfolgt die Installation aller Macports in/opt/local
27
Sie haben zumindest sehr stark impliziert, dass MacPorts native OS X-Pakete überschreibt. Anstatt zu "klären", während Sie immer noch so tun, als hätten Sie nicht gesagt, dass Sie geschrieben haben, was Sie geschrieben haben, sollten Sie wahrscheinlich den fraglichen Satz bearbeiten.
Entspannt
13
Dieser Satz "Ein wesentlicher Unterschied zwischen Homebrew und Macports; und der Grund, warum ich Homebrew bevorzuge, ist, dass es keine Dinge überschreibt, die" nativ "in osx installiert werden sollten." sollte geändert werden in "Ein wesentlicher Unterschied zwischen Homebrew und Macports; und der Grund, warum ich Homebrew bevorzuge, ist, dass Homebrew nicht automatisch parallele Kopien von Tools und Bibliotheken installiert, die bereits von Apple bereitgestellt werden."
Bgupta
7
MacPorts überschreibt keine nativen Apps, sondern "beschränkt portierte Software auf eine private" Sandbox ", die verhindert, dass sie sich mit Ihrem Betriebssystem und der vom Hersteller bereitgestellten Software vermischt, um zu verhindern, dass sie beschädigt werden." - MacPorts Guide, Kapitel 1
12.
23

Derzeit hat Macports aufgrund seiner Reife viel mehr Pakete (~ 18,6 K) als Homebrew-Formeln (~ 3,1 K). Homebrew holt jedoch langsam auf.

Macport-Pakete werden in der Regel von einer einzelnen Person verwaltet.

Macports kann mehrere Versionen von Paketen behalten, und Sie können sie aktivieren oder deaktivieren, um Dinge zu testen. Manchmal kann diese Liste beschädigt werden und Sie müssen sie manuell bearbeiten, um die Dinge wieder in Ordnung zu bringen, obwohl dies nicht allzu schwierig ist.

Beide Paketmanager werden regelmäßig aktualisiert. Dies kann einige Zeit dauern.

Hinweis: Sie können beide Paketmanager auf Ihrem System haben! Es ist nicht das eine oder andere. Brew könnte sich beschweren, Macports jedoch nicht.

Wenn Sie mit Python- oder Ruby-Paketen arbeiten, verwenden Sie nach Möglichkeit eine virtuelle Umgebung.

user475443
quelle
1
{{{Manchmal kann diese Liste beschädigt werden und Sie müssen sie manuell bearbeiten, um die Dinge wieder in Ordnung zu bringen, obwohl dies nicht zu schwierig ist. }}} Ich habe das noch nie gesehen, obwohl das nicht heißt, dass es nicht möglich ist. Was waren die Umstände? Haben Sie einen Fehler gemeldet ( trac.macports.org )?
LSpice
{{{Beide Paketmanager bitten um regelmäßige Aktualisierung. Dies kann einige Zeit dauern. }}} Dies scheint eine seltsame Aussage zu sein. In einigen Jahren erinnere ich mich nur ein paar Mal daran, wie ich MacPorts selbst aktualisiert habe, und das Update ist ziemlich schnell. Meinen Sie damit, dass die Ports selbst regelmäßig aktualisiert werden müssen? Nun, sie können es sein, aber das ist eine gute Sache, kein Nachteil, denke ich! Es ist wahrscheinlich auch erwähnenswert, dass MacPorts nicht darum bittet , etwas zu tun - das heißt, es gibt kein Nörgeln; Sie müssen fragen , es zu out-of-date - Paketen.
LSpice
18

Standardmäßig installiert Homebrew Pakete in Ihrem / usr / local. Für Macport-Befehle muss sudo installiert und aktualisiert werden (ähnlich wie bei apt-get in Ubuntu).

Für mehr Details:

Diese Seite schlägt die Verwendung von Hombrew vor: http://deephill.com/macports-vs-homebrew/

Auf dieser Website werden die Vorteile der Verwendung von Macports aufgeführt: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

Ich habe kürzlich auch von Ubuntu gewechselt und genieße es, Homebrew zu verwenden (es ist einfach und leicht zu bedienen!), Aber wenn Sie sich mit Sudo verbunden fühlen, sind Macports möglicherweise der bessere Weg!

debstep
quelle
4
Wollen Sie damit sagen, dass Homebrew Dinge installiert, /usr/localohne dass Sudo erforderlich ist?
1
@NgocPham Hast du eine Referenz dafür?
16
@ Keith Diese Seite ist falsch. Zumindest lässt es eine wichtige Prämisse aus. Es heißt: "Apple hat dieses Verzeichnis für uns verlassen. Das bedeutet, dass standardmäßig kein / usr / local-Verzeichnis vorhanden ist, sodass Sie sich keine Sorgen machen müssen, vorhandene Tools durcheinander zu bringen." Apple ist nicht /usr/localnach Homebrew gegangen . Apple hat sich /usr/localfür "ausführbare Dateien, Bibliotheken usw., die nicht im Basisbetriebssystem enthalten sind" entschieden. Das bedeutet, dass Tools, die vor der Verwendung von Homebrew installiert wurden, möglicherweise so erstellt wurden /usr/local, dass sie ohne nicht geändert werden können sudo. Das diskutieren sie nicht im Wiki.
2
@NgocPham Mein Punkt ist, dass ich nicht glaube, dass Homebrew /usr/localohne Root-Berechtigungen verwenden kann. Die Standardberechtigungen für /usreine Neuinstallation von OS X sind Root-Eigentümer ohne Schreibberechtigungen für andere Personen. Um überhaupt zu erstellen /usr/local , würde Homebrew Root-Zugriff benötigen. (Ich versuche nichts zu verteidigen)
5
@ Articuno Ich glaube ich habe dich jetzt. Es ist nur die Aussage , dass homebrewSachen , ohne installieren , sudoweil , wenn es sich einrichten, es verwendet sudo die Berechtigung für das Verzeichnis lockerer zu machen , so wird es in der Lage sein , etwas nach innen zu tun , /usr/localohne das Passwort auszulösen. Bedeutet dies, dass der Teil "Installation ohne Passwort" falsch ist? Das glaube ich nicht! Es ist immer noch wahr , dass homebrew wird die Lage sein , Sachen ohne das Passwort zu erhalten.
Ngoc Pham