Jaka jest różnica / użycie homebrew, macports lub innych narzędzi do instalowania pakietów? [Zamknięte]

238

Niedawno zmieniłem komputer Mac na Ubuntu. Byłem rozczarowany, że Mac nie ma tego wygodnego sudo apt-getw Ubuntu. Słyszałem, że powinienem używać Homebrew, ale nie jestem do końca pewien, co robi Homebrew lub Macports?

ROBOTPWNS
źródło
8
Kilka lat temu drzwi frontowe homebrew miały oświadczenie, które brzmiało mniej więcej tak: „homebrew jest lepszy, ponieważ jest napisany w języku Ruby”. Nie mam nic przeciwko Ruby, nie myślę o tobie. Lubię oop, a ruby ​​to świetny język. Mam problem z każdym programistą, który uważa, że ​​jeden język jest lepszy od wszystkich innych. Tylko z tego powodu nie interesuje mnie homebrew. Również Macports działa dla mnie dobrze od wielu lat.
Mike Makuch,

Odpowiedzi:

145

MacPorts to droga.

  1. Jak wskazał @ user475443, MacPorts ma o wiele więcej pakietów. Dzięki naparowi wkrótce znajdziesz się w pułapce, ponieważ potrzebna formuła nie istnieje.

  2. MacPorts to natywna aplikacja: C + TCL. W ogóle nie potrzebujesz Ruby. Aby zainstalować Ruby on Mac OS X może potrzebować MacPorts, więc po prostu iść z DarwinPorts i będziesz szczęśliwy.

  3. MacPorts jest naprawdę stabilny, w ciągu 8 lat nigdy nie miałem z tym problemu i cały ekosystem Unixa się na nim opierał.

  4. Jeśli jesteś programistą PHP, możesz zainstalować ostatnią wersję Apache (Mac OS X używa wersji 2.2), PHP i wszystkie potrzebne rozszerzenia, a następnie uaktualnić wszystko za pomocą jednego polecenia. Zapomnij zrobić to samo z Homebrew.

  5. Grupy wsparcia MacPorts.

    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
    

    Jeśli masz zainstalowany zarówno PHP55, jak i PHP56 (z wieloma różnymi rozszerzeniami), możesz przełączać się między nimi za pomocą jednego polecenia. Wszystkie względne rozszerzenia są częścią grupy i zostaną aktywowane w wybranej grupie: php55 lub php56. Nie jestem pewien, czy Homebrew ma tę funkcję.

  6. Rubiści lubią przepisywać wszystko w Rubim, ponieważ jedyną rzeczą, na którą są swobodnie, jest sam Ruby.

rzeczownik
źródło
26
Rubiści lubią przepisywać - hehe, spójrz na facetów NodeJS wdrażających binarne protokoły dla MySQL w JS! :)
kolypto
37
Nie potrzebujesz MacPorts, aby zainstalować Ruby - Ruby jest dołączony do OS X, a brew używa systemu Ruby.
Michael Ekstrand,
5
@Michael Ekstrand OS X nie zawiera ostatniej wersji Ruby.
rzeczownik
89
Nie mogę głosować za tym. Jest zbyt wredny, a wstręt podważa informacje.
OldPeculier
34
Głosowanie w celu przeciwdziałania pominiętym głosowaniom „przeciw Snarkom”. Każda informacja otrzymana od człowieka zawsze będzie miała naturalne nastawienie (w tym przypadku „wulgarność”). Doceniam perspektywę tego użytkownika, być może szczególnie dlatego, że odpowiedź nie brzmi jak wpis w Wikipedii.
rinogo
109

Zarówno Homebrew, jak i Macports rozwiązują ten sam problem - jest to instalacja typowych bibliotek i narzędzi, które nie są dołączone do systemu OSX.

Zazwyczaj są to biblioteki związane z programowaniem i najczęstszym zastosowaniem tych narzędzi jest dla programistów pracujących na systemie OSX.

Oba wymagają zainstalowanych narzędzi wiersza polecenia xcode (które można pobrać osobno z https://developer.apple.com/ ), a dla niektórych konkretnych pakietów będzie trzeba zainstalować cały IDE xcode.

xcode można zainstalować ze sklepu Mac App Store, jest do pobrania za darmo, ale zajmuje trochę czasu, ponieważ ma około 5 GB (jeśli dobrze pamiętam).

macports jest wersją osx narzędzia portowego od BSD (ponieważ osx pochodzi od BSD, był to naturalny wybór). Dla każdego, kto zna którąkolwiek z dystrybucji BSD, macports poczują się jak w domu.

Główna różnica między homebrew a macports; a powodem, dla którego wolę homebrew, jest to, że nie zastąpi on rzeczy, które powinny być instalowane „natywnie” w systemie OSX. Oznacza to, że jeśli dostępny jest pakiet natywny, homebrew powiadomi Cię zamiast go zastąpić i spowodować problemy w dalszej linii. Instaluje również biblioteki w przestrzeni użytkownika (dlatego nie trzeba używać „sudo” do instalowania rzeczy). Pomaga to również w pozbyciu się bibliotek, ponieważ wszystko znajduje się na dostępnej ścieżce.

homebrew cieszy się również bardziej aktywną społecznością użytkowników, a jego pakiety (zwane formułami) są dość często aktualizowane.


macports nie zastępuje natywnych pakietów OSX - dostarcza własną wersję - To jest główny powód, dla którego wolę macports niż home-brew, musisz być pewien, czego używasz i zmian Apple w innych momentach niż porty i był znany być latami za aktualizacjami w niektórych projektach

Czy możesz podać odniesienie pokazujące, że Macports zastępuje natywne pakiety OS X? O ile mogę stwierdzić, cała instalacja Macports odbywa się w /opt/local

Być może powinienem wyjaśnić - nigdzie nie powiedziałem w mojej odpowiedzi, że Macports zastępuje natywne pakiety OSX. Obie instalują elementy osobno.

Homebrew ostrzeże Cię, kiedy powinieneś instalować rzeczy „natywnie” (używając preferowanego instalatora biblioteki / narzędzia) dla lepszej kompatybilności. To miałem na myśli. Będzie również korzystać z tylu lokalnych bibliotek, które są dostępne w OS X. Z wiki :

Naprawdę nie lubimy duplikatów w Homebrew / homebrew

Jednak lubimy duplikaty w kranie!

Rzeczy dostarczane z systemem OS X lub biblioteką dostarczaną przez RubyGems, CPAN lub PyPi nie powinny być kopiowane. Istnieją ku temu dobre powody:

  • Duplikaty bibliotek regularnie przerywają kompilacje
  • Pojawiają się subtelne błędy ze zduplikowanymi bibliotekami oraz, w mniejszym stopniu, zduplikowanymi narzędziami
  • Chcemy, abyś starał się, aby twoja formuła działała z tym, co zawiera OS X

Opcjonalnie możesz zastąpić wersje dostarczonych macosxów narzędziami homebrew.

Burhan Khalid
źródło
78
macports nie zastępuje natywnych pakietów OSX - dostarcza własną wersję - To jest główny powód, dla którego wolę macports niż home-brew, musisz być pewien, czego używasz i zmian Apple w innych momentach niż porty i był znany być za3srs za aktualizacjami w niektórych projektach
mmmmmm
13
Czy możesz podać odniesienie pokazujące, że Macports zastępuje natywne pakiety OS X? O ile wiem, cała instalacja Macports odbywa się w/opt/local
27
Przynajmniej sugerujesz, że MacPorts nadpisuje natywne pakiety OS X. Zamiast „wyjaśniać”, wciąż udając, że nie powiedziałeś, że napisałeś to, co napisałeś, prawdopodobnie powinieneś edytować zdanie, o którym mowa.
Zrelaksowany
13
To zdanie: „Jedną z głównych różnic między homebrew i macports; i dlatego wolę homebrew, ponieważ nie zastąpi on rzeczy, które powinny być instalowane„ natywnie ”w systemie OSX. należy zmienić na „Jedną z głównych różnic między homebrew i macports; i dlatego wolę homebrew, ponieważ homebrew nie instaluje automatycznie równoległych kopii narzędzi i bibliotek, które są już dostarczane przez Apple”.
bgupta
7
MacPorts nie zastępuje natywnych aplikacji, „ogranicza przeniesione oprogramowanie do prywatnego„ piaskownicy ”, który zapobiega jego ingerencji w system operacyjny i oprogramowanie dostarczone przez dostawcę, aby zapobiec ich uszkodzeniu”. - MacPorts Guide, Rozdział 1
jla
23

Obecnie Macports ma o wiele więcej pakietów (~ 18,6 K) niż formuły Homebrew (~ 3,1 K) ze względu na swoją dojrzałość. Homebrew powoli jednak nadrabia zaległości.

Pakiety Macport są zwykle obsługiwane przez jedną osobę.

Macports może przechowywać wiele wersji pakietów, a można je włączać i wyłączać, aby przetestować. Czasami ta lista może ulec uszkodzeniu i trzeba ją ręcznie edytować, aby przywrócić porządek, chociaż nie jest to zbyt trudne.

Obaj menedżerowie pakietów poprosą o regularną aktualizację. Może to zająć trochę czasu.

Uwaga: możesz mieć obu menedżerów pakietów w swoim systemie! To nie jest jedno lub drugie. Brew może narzekać, ale Macports nie.

Ponadto, jeśli masz do czynienia z pakietami python lub ruby, używaj środowiska wirtualnego, o ile to możliwe.

użytkownik475443
źródło
1
{{{Czasami ta lista może ulec uszkodzeniu i trzeba ją ręcznie edytować, aby wszystko uporządkować, chociaż nie jest to zbyt trudne. }}} Nigdy tego nie widziałem, ale to nie znaczy, że nie jest to możliwe. Jakie były okoliczności? Czy zgłosiłeś błąd ( trac.macports.org )?
LSpice
{{{Obaj menedżerowie pakietów poprosą o regularną aktualizację. Może to zająć trochę czasu. }}} Wydaje się to dziwnym stwierdzeniem. Po kilku latach użytkowania pamiętam tylko aktualizację samego MacPorta kilka razy, a aktualizacja jest raczej szybka. Czy masz na myśli, że same porty muszą być często aktualizowane? Cóż, mogą być, ale myślę, że to dobra rzecz, a nie wada! Warto też zauważyć, że MacPorts nie poprosi o nic - to znaczy, że nie ma dokuczliwości; trzeba poprosić go o out-of-date pakietach.
LSpice
18

Domyślnie Homebrew instaluje pakiety na twoim / usr / local. Polecenia Macport wymagają sudo do zainstalowania i aktualizacji (podobnie do apt-get w Ubuntu).

Aby uzyskać więcej informacji:

Ta strona sugeruje użycie Hombrew: http://deephill.com/macports-vs-homebrew/

mając na uwadze, że w tej witrynie wymieniono zalety korzystania z Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

Ostatnio zrezygnowałem z Ubuntu i lubię korzystać z homebrew (jest prosty i łatwy w użyciu!), Ale jeśli czujesz przywiązanie do korzystania z sudo, Macports może być lepszym sposobem!

debstep
źródło
4
Czy mówisz, że homebrew instaluje rzeczy /usr/localbez konieczności sudo?
1
@NgocPham Czy masz do tego referencje?
16
@Keith Ta strona jest niepoprawna. A przynajmniej pomija główną przesłankę. Mówi: „Apple zostawił ten katalog dla nas. Oznacza to, że domyślnie nie ma katalogu / usr / local, więc nie musisz się martwić o zepsucie istniejących narzędzi”. Apple nie wyjechało /usr/localdo Homebrew. Apple pozostawił /usr/local„pliki wykonywalne, biblioteki itp. Nie zawarte w podstawowym systemie operacyjnym”. Oznacza to, że możliwe jest, że narzędzia zainstalowane przed użyciem Homebrew mogły utworzyć /usr/localtakie, że nie można go modyfikować sudo. Nie dyskutują o tym na wiki.
2
@NgocPham Chodzi mi o to, że nie wierzę, że Homebrew może używać /usr/localbez uprawnień roota. Domyślne uprawnienia dla /usrnowej instalacji OS X to właściciel root, bez uprawnień do zapisu dla kogokolwiek innego. Aby nawet stworzyć /usr/local , Homebrew potrzebuje dostępu do roota. (Nie próbuję niczego bronić)
5
@Articuno Myślę, że mam cię teraz. To po prostu stwierdzenie, że homebrewmożna zainstalować bez rzeczy sudo, ponieważ kiedy postawił się, że stosowane sudo , aby pozwolenie na przegranej katalogów tak będzie w stanie nic zrobić wnętrze /usr/localbez wyzwalania hasło. Czy to znaczy, że część „zainstaluj bez hasła” jest nieprawidłowa? Nie wydaje mi się! To prawda, że nadal homebrew będą mogli dostać rzeczy bez hasła.
Ngoc Pham