Những ưu và nhược điểm của MacPorts, Fink và Homebrew là gì?


154

Tôi mới chuyển từ Ubuntu Linux sang Mac, mọi thứ đều mới và tôi đang học lại rất nhiều thứ.

Trên Linux, tôi có apt-get tuyệt vời để quản lý các gói phần mềm. Tôi đã tìm kiếm một giải pháp thay thế trên Mac và tìm thấy về MacPorts, Fink và Homebrew.

Tôi sẽ sử dụng máy tính này chủ yếu để phát triển các ứng dụng Ruby on Rails.

Vì vậy, sự khác biệt giữa chúng là gì? Đó là những mặt thăng trầm? Cái nào được duy trì tốt nhất và có nhiều gói hơn?


5
Tôi đã chỉnh sửa tiêu đề của bạn để làm cho nó phù hợp với câu hỏi thực sự của bạn. Trên hầu hết các trang web Stack Exchange, câu hỏi yêu cầu "tốt nhất" đều được tán thành.
Loïc Wolff

1
Tại sao bạn cần bất kỳ viên đá quý nào trong số này sẽ không đủ?
user151019

để biết thêm về lý do tại sao các bản sao không phải lúc nào cũng xấu: apple.stackexchange.com/questions/11461/NH cũng có một vài lựa chọn thay thế khác
cregox

Không bao giờ sử dụng nó cho mình, nhưng có lẽ so sánh với pkgin cũng sẽ hữu ích.
Dennis

Câu trả lời:


118

Chắc chắn là Homebrew. Tôi bắt đầu với Fink, sau đó chuyển sang MacPorts (hạnh phúc hơn), rồi Homebrew (hạnh phúc hơn nhiều). Đây là những lý do của tôi để sử dụng từng (danh sách chuyên nghiệp nếu bạn muốn):

Nháy mắt

  • Dựa trên Apt - cảm thấy như ở nhà nếu bạn đến từ môi trường dựa trên Debian
  • Gói nhị phân - gói có sẵn dưới dạng nhị phân nên không có thời gian biên dịch dài. Thực tế mặc dù tôi đã thấy rằng các tệp nhị phân được biên dịch trước luôn bị lỗi thời và tôi phải biên dịch nội dung cho hệ thống của mình bằng mọi cách
  • Lựa chọn gói

MacPorts

  • Lựa chọn lớn nhất của gói / cổng
  • Nói chung là rất cập nhật
  • Hệ thống biến thể đẹp cho phép bạn tùy chỉnh bản dựng
  • Tệp cổng dễ dàng và trực quan

Homebrew

  • Rất cập nhật
  • Tận dụng tối đa những gì đi kèm với OS X. Không giống như Fink hay MacPorts, nó không yêu cầu bạn xây dựng / cài đặt ruby ​​và thư viện từ đầu chỉ để cài đặt một số công cụ nhỏ dựa trên Ruby.
  • Cài đặt vào /usr/localđể không cần bạn sửa đổi ở PATHbất cứ đâu
  • Mọi thứ thuộc sở hữu của người dùng, vì vậy không có gói nào cần truy cập root có khả năng rủi ro để cài đặt
  • Mỗi gói được cài đặt đều được đóng hộp sạch vào hầm riêng của bạn để bạn không có các tệp đi lạc trên toàn hệ thống của mình, chỉ là các liên kết tượng trưng từ bin, man, v.v.
  • Rất dễ dàng để tạo các tệp công thức của riêng bạn (ví dụ: mô tả gói)
  • Vì bạn đến từ nền tảng của ruby, một điểm cộng nữa là mọi thứ đều được viết bằng ruby ​​và tất cả các công thức đều là các tập lệnh ruby ​​đơn giản

pkgin

  • Rất cập nhật
  • Cài đặt nhanh hơn vì nhị phân được biên dịch trước
  • Mọi thứ được cài đặt trong / opt / pkg /
  • được hỗ trợ bởi cộng đồng pkgsrc và Joyent
  • Được biết là hoạt động trên NetBSD, DragonFly BSD, Solaris, Debian, Mac OS X, Minix

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

http://pkgin.net/


33
Lưu ý rằng đối với sản xuất bia tại nhà, bạn có thể lập luận rằng "Cài đặt vào / usr / local" và "tận dụng những gì đi kèm với OS X" là những vấn đề - đó là hai lý do chính khiến tôi sử dụng một hệ thống đóng gói khác
user151019

5
Do / usr / local / bin không có trong đường dẫn Mac OS X mặc định, bạn chắc chắn phải sửa đổi PATH của bạn, bạn chỉ phải thực hiện một lần, vì brew đặt ở một nơi đó liên kết với tất cả mới thùng nó cài đặt (ngoại trừ "keg only's", nhưng đó là tiếng ồn ở đây).
Terry N

5
@ jedd.ahyoung Tôi thích macports đặt / opt / local (fink put in / sw)
user151019

5
Thật không may, homebrew dường như ngày càng bác bỏ nhiều trường hợp sử dụng & API nhất định mà các nhà bảo trì thể hiện sự coi thường trắng trợn đối với người dùng. Macports trông giống như một sự thay thế tốt hơn vì xu hướng này dường như đang tràn ngập homebrew một cách đáng lo ngại. Homebrew, tại một thời điểm, là tất cả về việc giúp đỡ người dùng, nhưng đã dần dần rời khỏi đó.
GDP2

5
Tôi phải đồng ý với @ GDP2. Tôi là một người dùng Mac mới từ linux. Các nhà phát triển trong bia có thái độ rất xấu. Bạn có thể tin rằng chỉ có 13 vấn đề trong github của brew khi tôi đăng bình luận này không? Họ không muốn lắng nghe người dùng. Họ không muốn bất kỳ vấn đề. Họ chỉ bỏ qua mọi vấn đề bạn đã mở và đóng chúng ngay lập tức. Tôi không bao giờ thấy thái độ như vậy trong bất kỳ dự án github. Là một người dùng mới, tôi đã sử dụng bia được vài tháng và hôm nay tôi đang suy nghĩ để chuyển sang một người khác và tìm thấy câu hỏi này. Trải nghiệm sử dụng bia là điều tồi tệ nhất tôi có trong đời cho đến nay
sgon00

57

MacPorts

Nó độc lập hơn với Mac OS X, điều này có nghĩa là MacPorts sẽ bỏ qua nhiều thư viện và phần mềm hệ thống đã có sẵn trong Mac OS X và thay vào đó , có thể chậm hơn khi tiện ích bạn cài đặt yêu cầu một số lượng lớn thư viện và phần mềm.

Nhưng loại lựa chọn này an toàn hơn vì các gói bạn đã cài đặt ít bị ảnh hưởng bởi quy trình cập nhật / nâng cấp hệ thống của Apple.


Homebrew

Nó phụ thuộc nhiều hơn vào các gói cài đặt Mac OS X hiện có, vì vậy điều này sẽ tăng tốc độ cài đặt các gói và giảm thiểu các thư viện dư thừa.

Nhưng rủi ro là các gói cài đặt có thể bị hỏng do cập nhật / nâng cấp hệ thống của Apple.

Vì vậy, đây là hai loại đánh đổi khác nhau.

Ngoài ra, Homebrew tiếp quản / usr / local theo mặc định, trong đó một số người không thích điều này vì nó bằng cách nào đó mâu thuẫn với truyền thống unix và có thể gây ra sự cố nếu bạn đã cài đặt bất cứ thứ gì ở đó (MySQL, v.v.)


Ngoài những khác biệt này, xem xét các gói mà hai gói này có thể cung cấp, bạn có thể kiểm tra hai lệnh này nếu bạn đã cài đặt MacPorts / Homebrew, cho bạn thấy các gói mà chúng hiện đang cung cấp:

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

Và bạn sẽ thấy rằng MacPorts có nhiều gói hơn Homebrew.

(19399 so với 3583 vào ngày 13 tháng 5 năm 2016)


17
Như một nhận xét về số lượng gói khác nhau: Homebrew quyết định không bao gồm các gói cho ngôn ngữ lập trình có hệ thống đóng gói riêng (rubygems / pip / cpan,) hoặc cho phần mềm có sẵn trình cài đặt OS X phù hợp hơn (MacTeX) . Ngoài ra, các bản sao và phiên bản cũ hơn không có trong repo mặc định mà bao gồm trong repos tap thay thế . So sánh điều này với macports, ví dụ, có chứa một cổng IPython cho tất cả các phiên bản Python đi kèm. Đó là một triết lý khác nhau làm tăng số lượng các gói trong macports một cách tự nhiên.
Debilski

2
Liên kết tuyệt vời! terrychay.com/article/macports-vs-homebrew.shtml Cảm ơn bạn!
Jeff Burdges

@YaOz, Chắc chắn bạn có thể thay đổi homebrew để sử dụng cái gì khác hơn /usr/local?
Pacerier

41

Chỉ cần thêm một số suy nghĩ của riêng tôi có vẻ như đúng vào khoảng cuối năm 2014.

Homebrew, như một vài năm trước đây, chắc chắn có ưu thế về mặt tư duy. Bạn sẽ tìm thấy rất nhiều blog với những người nói về việc họ hạnh phúc hơn với Homebrew - thường là do toàn bộ "MacPorts kéo trên toàn thế giới" so với "Homebrew sử dụng những gì bạn đã có".

Tuy nhiên, IMO, MacPorts bây giờ là một con quái vật khác so với vài năm trước. Khi tôi lần đầu tiên chuyển sang OS X và đang sử dụng MacPorts, triết lý MP thực sự gây nản lòng vì hầu hết mọi thứ đều được xây dựng từ nguồn. Một cài đặt mới đặc biệt đau / chậm. Tuy nhiên, trong khoảng một năm qua, hoàn toàn dựa trên ấn tượng của riêng tôi, có vẻ như 90% các gói MP là nhị phân và vì vậy việc cài đặt thực sự rất nhanh. Từ những gì tôi thu thập, Homebrew cũng đang di chuyển theo hướng này với "Chai" nhưng tôi có ấn tượng rằng hầu hết mọi thứ bạn cài đặt qua HB tại thời điểm này sẽ được tổng hợp từ nguồn.

Vì vậy, nếu chỉ đưa ra ý kiến ​​đối kháng, MacPorts dường như thực sự là lựa chọn "nhanh hơn" trong những ngày này. Tuy nhiên, hầu hết ý kiến ​​của mọi người về MP dường như dựa trên kinh nghiệm từ khoảng 2011-12 hoặc lâu hơn & không thực sự tính đến điều này. Mặc dù vậy, hãy sử dụng hạt muối này vì tôi không phải là người dùng HB thông thường (và việc sử dụng cả hai bên cạnh nhau khá đau đớn).

Tôi nghĩ rằng HB có những lợi thế có nghĩa là nó có thể sẽ "chiến thắng trong cuộc chiến" về lâu dài

  • HB là tất cả Ruby trong khi MacPorts và các công thức gói của nó, được viết bằng TCL, đó không phải là ngôn ngữ kịch bản phổ biến. Điều đó nói rằng nó khá đơn giản để tạo ra portfile của riêng bạn.
  • HB dựa trên GitHub và do đó dường như chào đón nhiều người đóng góp mới hơn trong khi MacPorts lưu trữ kho SVN của riêng mình ở đâu đó tôi nghĩ - về cơ bản phản ánh các độ tuổi khác nhau của cả hai dự án mà tôi cho là.
  • Như đã đề cập, sự đồng thuận chung là MacPorts đã được thay thế bởi HB &, đúng hay sai, điều đó thu hút nhiều người hơn về phía nó.

Mặt khác, YaOZl & kLy bao gồm sự khác biệt chính về sudo, phụ thuộc vv khá tốt. Cá nhân tôi thấy rằng MacPorts đôi khi dẫn đến một số vấn đề đau đầu về các chương trình khác không mong đợi bất cứ điều gì /opt/local, những thứ được cài đặt với quyền root, v.v. và có một số thứ thường không được cài đặt tốt nhất với MacPorts MacPorts nhưng bạn sẽ không điên khi không cài đặt nó thông qua quản lý Gem thông thường của Ruby). Khác với điều đó mặc dù tôi là một fan hâm mộ lớn của triết lý MacPorts về việc xây dựng thế giới nhỏ bé của riêng mình và không dựa vào một số thư viện OS X được đóng gói sẵn - khi nó hoạt động, và hầu hết mọi thứ đều đơn giản. Đó là những gì bạn muốn của một Trình quản lý gói thực sự. Và như tôi đã đề cập, tại thời điểm này, nó khá nhanh để thiết lập hầu hết mọi thứ.

Hy vọng một số điều đó là hữu ích.


"Như đã đề cập, sự đồng thuận chung là MacPorts đã được thay thế bởi HB &, đúng hay sai, điều đó thu hút nhiều người hơn về phía nó." ... điều này cảm thấy giống như một tuyên bố rất hời hợt ... phổ biến so với việc cung cấp chất lượng không giống nhau và không có nghĩa là thứ hai bị "thay thế" bởi lần đầu tiên.
Dmitri Zaitsev

3

Bia hoàn toàn trơn tru đối với tôi để sử dụng, vì vậy tôi không thể nói về nhược điểm của nó. Một số nhược điểm của MacPorts:

Có một số câu hỏi rất phổ biến về hai điểm đầu tiên.


Đây là kinh nghiệm của tôi khi cài đặt ImageMagick vào ngày 10.6; sản xuất bia rất dễ dàng, nhưng không bao gồm đại biểu JP2. fantemagick.org/script/binary-release.php
Nemo

2
brew và macports chỉ yêu cầu các công cụ dòng lệnh Xcode giống nhau ở đây.
dùng151019

@Mark Tôi không chắc ý của bạn là gì, nhưng brew hoạt động hoàn hảo với tôi mà không cần Xcode.
Nemo

2
Bạn sẽ cần một trình biên dịch cho brew MacPorts, có thể được cài đặt thông qua Công cụ dòng lệnh Xcode. Bạn sẽ không cần ứng dụng Xcode .
nohillside

1
Tôi đã quên mất việc xấu xí như thế nào khi đồng bộ hóa thứ đó khi đằng sau tường lửa ... thật!
rogerdpack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.