Paketmanager für Mac: Brew vs. MacPorts vs. pkgsrc

Ken Guru

Ken Guru

Aktives Mitglied
Thread Starter
Dabei seit
04.04.2021
Beiträge
3.327
Reaktionspunkte
1.777
Hallo zusammen :moin:

Ich hätte gerne einen Paketmanager für den Mac, zur einfacheren Installation, Verwaltung und Aktualisierung von Software.
Zuerst habe ich einfach an Homebrew gedacht, aber hier im Forum bin ich jetzt auch noch auf MacPorts und pkgsrc gestoßen.

Welches Tool würdet ihr nehmen und wieso? Gibt es da Unterschiede bei der Verfügbarkeit von Apps? Habt ihr noch andere Vorschläge?
 
Die haben halt unterschiedliche Sachen in deren Repositories.
Im großen und ganzen ist ja meist der gleiche OSS Kram.

Macports hat für die gebräuchlichen Sachen fertige Binaries, da muss man nicht kompilieren.
 
Macports hat für die gebräuchlichen Sachen fertige Binaries, da muss man nicht kompilieren.

Ebenso wie pkgsrc.

Hier gibt es einen Thread zu pkgsrc:
https://www.macuser.de/threads/pkgsrc-netbsd-package-manager-and-os-x-xi.876025/

@agrajag empfiehlt stattdessen Nix:
https://www.macuser.de/threads/paketmanager-nix.827563/

Ich selbst finde pkgsrc immer noch ziemlich gut, allerdings hat Homebrew die meisten seiner ärgerlichen Eigenschaften inzwischen aufgegeben und ist auch recht brauchbar geworden.

Wie viele Threads zu Paketmanagern brauchen wir? :D
 
  • Gefällt mir
Reaktionen: win2mac
Kompilieren? :unsure:
Ich rede eigentlich nur von ganz gewöhnlicher, fertiger Software mit GUI, die ich halt über den Package Manager installieren würde.
 
Ich würde sagen, dass das Geschmacksache ist. Die wichtigsten Pakete sind mit großer Wahrscheinlichkeit bei allen vorhanden. Wenn es etwas spezielles sein soll, dann muss es halt der Manager sein, der es anbietet.

Auf meinem M1 habe ich Homebrew installiert um die ffmpg-Bibliotheken für Audacity zu installieren.
Auf meinem Mac Pro und meinen PPCs hatte ich meisten MacPorts.
 
Ich rede eigentlich nur von ganz gewöhnlicher, fertiger Software mit GUI, die ich halt über den Package Manager installieren würde.

"Casks" - die sich direkt als Programm installieren - scheint nur Homebrew zu "können", zumindest so weit mir bekannt ist.
 
Kompilieren? :unsure:
Ich rede eigentlich nur von ganz gewöhnlicher, fertiger Software mit GUI, die ich halt über den Package Manager installieren würde.
Da bist du nicht richtig.
Die Teile sind dafür gedacht Sourcen von Software für das Terminal zu laden.
Nicht für gewöhnliche Mac Apps.
 
Da bist du nicht richtig.
Die Teile sind dafür gedacht Sourcen von Software für das Terminal zu laden.
Nicht für gewöhnliche Mac Apps.
Aber viele Programme werden doch über Brew als Cask angeboten?
 
  • Gefällt mir
Reaktionen: warnochfrei
Ja, da hat Homebrew - wie beschrieben - wohl ein Alleinstellungsmerkmal. pkgsrc ist da ebenso raus wie Nix, weil beide eben nicht primär (= ausschließlich) für die Nutzung auf einem Mac gedacht sind.
 
Ja, da hat Homebrew - wie beschrieben - wohl ein Alleinstellungsmerkmal. pkgsrc ist da ebenso raus wie Nix, weil beide eben nicht primär (= ausschließlich) für die Nutzung auf einem Mac gedacht sind.
Ach so. Das heißt, MacPorts und pkgsrc haben gar keine Casks.
Danke für die Info 😁
Homebrew ist also der einzige, der für mich geht.
 
Nein, nicht unbedingt ... :)

Ein Cask zeichnet sich vor allem dadurch aus, dass die Programme sich (augenscheinlich) nicht anders verhalten als jedes per DMG installierte Programm auch. Das ist nicht dasselbe wie "vorkompilierte Pakete", denn die kriegst du mit pkgsrc zum Beispiel auch.

Ist eher so eine Komfortfrage.
 
Ich benutze schon seit wenigen Jahren Nix als Paketmanager. Nix ist zwar auch ein sehr mächtiges Build- und Configuration-Management-Tool, aber in seiner simpelsten Form als Paketmanager ist der nicht viel anders als apt, yum oder brew in der Bedienung.

Bash:
nix-env -iA <channel>.<paket>

Nix benutzt Channel, die man "abonnieren" (mir fällt gerade kein besserer Begriff ein) kann. man kann z.B. von nixpkgs (das Repository) gleichzeitig stable (halbjährlicher Zyklus) und unstable (rolling release) abonniert haben und sich die Pakete beliebig aus den Kanälen auswählen. Also z.B. generell aus stable, aber bestimmte Pakete aus unstable.

Bash:
nix-env -iA unstable.ffmpeg
nix-env -iA stable.python39Full

Der entscheidene Vorteil ist aber, daß es prinzipbedingt keine Abhängigkeitsprobleme kennt. Man kann also unterschiedliche Versionen eines Pakets installiert haben oder Pakete mit zueinander inkompatiblen Abhängigkeiten.

Interessant dürfte auch die Masse an Paketen sein (je nach Zählweise grob 80000 Pakete).

Ein sehr nettes Feature ist auch die Nix-Shell. Mit der kann man Pakete in einer isolierten eine isolierte Shell-Umgebung benutzen, ohne sie in dem normalen Shell-Environment zu installieren. Großartig, wenn man etwas nur ein einziges mal benötigt:

Bash:
nix-shell -p ffmpeg
öffnet eine neue Shell mit dem aktuellsten ffmpeg. Verlässt man die Shell wieder, ist ffmpeg nicht mehr da.

Nix kann man parallel zu anderen Paketmanagern benutzen. Für macOS-GUI-Anwendungen kann man dann z.B. brew benutzen.

Bei Fragen, fragen.
 
Nein, nicht unbedingt ... :)

Ein Cask zeichnet sich vor allem dadurch aus, dass die Programme sich (augenscheinlich) nicht anders verhalten als jedes per DMG installierte Programm auch. Das ist nicht dasselbe wie "vorkompilierte Pakete", denn die kriegst du mit pkgsrc zum Beispiel auch.

Ist eher so eine Komfortfrage.
Ah, okay. Danke für die Erklärung (y)

Ich benutze schon seit wenigen Jahren Nix als Paketmanager. Nix ist zwar auch ein sehr mächtiges Build- und Configuration-Management-Tool, aber in seiner simpelsten Form als Paketmanager ist der nicht viel anders als apt, yum oder brew in der Bedienung.
Nix hat laut @warnochfrei leider keine GUI-Apps.
Wie Du es beschreibst, wäre es für Kommandozeilentools wie ffmpeg aber trotzdem interessant. Geht das denn (sinnvoll) parallel zu Homebrew?
 
Ja, kein Problem beides zu nutzen. Nix legt die Pakete in eine eigene Ordnerstruktur ab und legt dann Symlinks an die entsprechenden Stellen im Dateisystem.
 
Es gibt gerade ein Projekt für ein Paketmanager-GUI. Allerdings ist es bislang noch Linux-only. Über die Paketsuche ist es aber auch sehr angenehm nach Paketen zu suchen. Wenn man da auf die Trennlinie unter den Treffern geht, erscheint ein Button. Den aktiviert, wird einem angezeigt, wie der Befehl zum installieren lautet. In diesem Fall wäre es die Variante "nix-env".
 
Theoretisch könnte man vermutlich sämtliche Paketmanager parallel nutzen. So weit ich das sehe, hat jeder von ihnen eine eigene Ordnerstruktur. Jede denkbare Ordnerstruktur hat allerdings Nachteile. :)
 
Theoretisch könnte man vermutlich sämtliche Paketmanager parallel nutzen. So weit ich das sehe, hat jeder von ihnen eine eigene Ordnerstruktur. Jede denkbare Ordnerstruktur hat allerdings Nachteile. :)
Nix ist da etwas speziell. Es legt jedes Paket in der Form /nix/store/<hash>-<name>-<version> ab. Das erlaubt es von den gleichen Paketen verschiedene Versionen installiert zu haben.

Vor allem bildet es auch die Grundlage dafür, daß ein Update nur aktiviert wird, wenn das Update fehlerfrei durchgelaufen ist und dann in einer atomaren Aktion zur neuesten Generation wird. Und es macht möglich, daß man jederzeit zu älteren Generationen zurück springen kann, sollte etwas nicht reibungslos laufen.

In dem Paketpfad finden sich dann wieder die bekannten Ordner, wie z.B. bin, deren Inhalte dann an die passenden Stellen im System gelinkt werden.

Das dann allerdings nicht dasselbe ist wie GUI-Anwendungen aus dem Paketmanager zu installieren. :)
Es kündigt sich seit 2-3 Jahren mit den Nix Flakes ein neues Feature an, was das Channel-Konzept wohl obsolet machen könnte. Zur Zeit ist es noch ein experimentelles Feature, was aber schon so sehr in der Community genutzt wird, daß man es jetzt schon als Standard ansehen kann.

Ich fang gerade erst an mich (wieder) mit den Flakes zu beschäftigen. Ich weiß ehrlich gesagt nicht, ob und wie man Flakes mit dieser sehr reduzierten Form der Nutzung von Nix (als reinen Paketmanager) installieren kann. Man kann die Flakes zumindest "installationslos" ausführen:

nix run github:nix-gui/nix-gui

Das benutzt schon das neue Nix-Kommando (ein nix-Kommando und keine zig nix-*-Kommandos, bessere Fehlermeldungen usw.).

Ich benutze Nix aktuell auch als reinen Paketmanager, bis ich meine home-manager- und nix-darwin-Konfig auf Flakes umgestellt habe. Danach werde ich zum Thema Flakes sicher mehr sagen können. :)
 
  • Gefällt mir
Reaktionen: warnochfrei
Ich hab noch einen kleinen Artikel-Hinweis zu den Nix-Flakes. Ich hab den in den anderen Thread untergebracht, da er dort vermutlich besser aufgehoben ist: Paketmanager Nix
 
  • Gefällt mir
Reaktionen: ruerueka, Ken Guru und warnochfrei
Zurück
Oben Unten