Sự khác biệt / cách sử dụng của homebrew, macports hoặc các công cụ cài đặt gói khác là gì? [đóng cửa]


238

Gần đây tôi đã chuyển sang Mac từ Ubuntu. Tôi đã thất vọng vì mac không có sự tiện lợi sudo apt-gettrong Ubuntu. Tôi đã nghe nói rằng tôi nên sử dụng homebrew nhưng tôi không chắc chắn chính xác những gì homebrew hoặc macports làm gì?



8
Một vài năm trước, cửa trước của homebrew có một tuyên bố giống như "homebrew này tốt hơn bởi vì nó được viết bằng Ruby". Tôi không có gì chống lại Ruby tâm trí bạn, không phải tất cả. Tôi thích oop và ruby ​​là một ngôn ngữ tốt. Điều tôi gặp vấn đề là bất kỳ nhà phát triển phần mềm nào nghĩ rằng một ngôn ngữ tốt hơn tất cả các ngôn ngữ khác. Vì lý do đó một mình tôi không có hứng thú với homebrew. Ngoài ra, macports đã hoạt động tốt đối với tôi trong nhiều năm.
Mike Makuch

Câu trả lời:


145

MacPorts là con đường để đi.

  1. Giống như @ user475443, MacPorts có nhiều gói khác. Với brew bạn sẽ thấy mình bị mắc kẹt sớm vì công thức bạn cần không tồn tại.

  2. MacPorts là một ứng dụng gốc: C + TCL. Bạn hoàn toàn không cần Ruby. Để cài đặt Ruby trên Mac OS X, bạn có thể cần MacPorts, vì vậy chỉ cần đi với MacPorts và bạn sẽ thấy hạnh phúc.

  3. MacPorts thực sự ổn định, trong 8 năm tôi chưa bao giờ gặp vấn đề gì với nó và toàn bộ hệ sinh thái Unix của tôi chuyển tiếp trên đó.

  4. Nếu bạn là nhà phát triển PHP, bạn có thể cài đặt phiên bản cuối cùng của Apache (Mac OS X sử dụng 2.2), PHP và tất cả các tiện ích mở rộng bạn cần, sau đó nâng cấp tất cả bằng một lệnh. Quên làm điều tương tự với Homebrew.

  5. Các nhóm hỗ trợ 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
    

    Nếu bạn đã cài đặt cả PHP55 và PHP56 (với nhiều phần mở rộng khác nhau), bạn có thể trao đổi giữa chúng chỉ bằng một lệnh. Tất cả các phần mở rộng tương đối là một phần của nhóm và chúng sẽ được kích hoạt trong nhóm được chọn: php55 hoặc php56. Tôi không chắc Homebrew có tính năng này.

  6. Rubists thích viết lại mọi thứ trong Ruby, bởi vì điều duy nhất họ thấy thoải mái là chính Ruby.


26
Rubists thích viết lại - hehe, hãy xem những kẻ NodeJS thực hiện các giao thức nhị phân cho MySQL trong JS! :)
kolypto

37
Bạn không cần MacPorts để cài đặt Ruby - Ruby được bao gồm trong OS X và brew sử dụng hệ thống Ruby.
Michael Ekstrand

5
@Michael Ekstrand OS X không bao gồm phiên bản cuối cùng của Ruby.
danh từ

89
Không thể nâng cao điều này. Nó quá lén lút, và sự ngu ngốc làm suy yếu thông tin.
OldPeculier

34
Nâng cấp để chống lại các upvote "chống lén" bị bỏ qua. Bất kỳ thông tin nào nhận được từ một con người sẽ luôn có xu hướng tự nhiên ("sự ngu ngốc" trong trường hợp này). Tôi đánh giá cao quan điểm của người dùng này, có lẽ đặc biệt bởi vì câu trả lời không đọc giống như mục nhập trên wikipedia.
rinogo

109

Homebrew và macports đều giải quyết cùng một vấn đề - đó là việc cài đặt các thư viện và tiện ích chung không được gói cùng với osx.

Thông thường đây là các thư viện liên quan đến phát triển và việc sử dụng phổ biến nhất các công cụ này là dành cho các nhà phát triển làm việc trên osx.

Cả hai đều cần các công cụ dòng lệnh xcode được cài đặt (mà bạn có thể tải xuống riêng từ https://developer.apple.com/ ) và đối với một số gói cụ thể, bạn sẽ cần cài đặt toàn bộ IDE xcode.

xcode có thể được cài đặt từ cửa hàng ứng dụng mac, đây là bản tải xuống miễn phí nhưng phải mất khoảng 5 GB vì nếu tôi nhớ chính xác).

macports là phiên bản osx của tiện ích cổng từ BSD (vì osx có nguồn gốc từ BSD, đây là một lựa chọn tự nhiên). Đối với bất kỳ ai quen thuộc với bất kỳ bản phân phối BSD nào, macports sẽ cảm thấy như ở nhà.

Một sự khác biệt lớn giữa homebrew và macports; và lý do tôi thích homebrew là nó sẽ không ghi đè lên những thứ nên được cài đặt "nguyên bản" trong osx. Điều này có nghĩa là nếu có sẵn gói gốc, homebrew sẽ thông báo cho bạn thay vì ghi đè lên nó và gây ra sự cố tiếp theo. Nó cũng cài đặt các thư viện trong không gian người dùng (do đó, bạn không cần sử dụng "sudo" để cài đặt mọi thứ). Điều này cũng giúp khi thoát khỏi các thư viện vì mọi thứ đều nằm trong đường dẫn mà bạn có thể truy cập.

homebrew cũng thích một cộng đồng người dùng tích cực hơn và các gói của nó (được gọi là công thức) được cập nhật khá thường xuyên.


macports không ghi đè lên các gói OSX bản địa - nó cung cấp phiên bản riêng - Đây là lý do chính tôi thích macports hơn nhà sản xuất bia, bạn cần chắc chắn về những gì bạn đang sử dụng và Apple thay đổi vào các thời điểm khác nhau cho các cổng và đã biết chậm hơn nhiều năm so với cập nhật trong một số dự án

Bạn có thể đưa ra một tài liệu tham khảo cho thấy rằng macports ghi đè lên các gói OS X gốc không? Theo như tôi có thể nói, tất cả các cài đặt macports xảy ra trong /opt/local

Có lẽ tôi nên làm rõ - tôi đã không nói bất cứ nơi nào trong câu trả lời của mình rằng macports ghi đè lên các gói gốc OSX. Cả hai đều cài đặt các mục riêng biệt.

Homebrew sẽ cảnh báo bạn khi bạn nên cài đặt những thứ "nguyên bản" (sử dụng trình cài đặt ưa thích của thư viện / công cụ) để tương thích tốt hơn. Đây là những gì tôi muốn nói. Nó cũng sẽ sử dụng nhiều thư viện cục bộ có sẵn trong OS X. Từ wiki :

Chúng tôi thực sự không thích bản sao trong Homebrew / homebrew

Tuy nhiên, chúng tôi thích bản sao trong vòi!

Những thứ đi kèm với OS X hoặc là một thư viện được cung cấp bởi RubyGems, CPAN hoặc PyPi không nên bị lừa. Có nhiều lý do tốt cho việc này:

  • Thư viện trùng lặp thường xuyên phá vỡ các bản dựng
  • Các lỗi tinh vi xuất hiện với các thư viện trùng lặp và ở mức độ thấp hơn, các công cụ trùng lặp
  • Chúng tôi muốn bạn cố gắng hơn nữa để công thức của bạn hoạt động với những gì OS X đi kèm

Bạn có thể tùy ý ghi đè lên các phiên bản tiện ích được cung cấp macosx với homebrew.


78
macports không ghi đè lên các gói OSX bản địa - nó cung cấp phiên bản riêng của nó - Đây là rason chính tôi thích macports hơn nhà sản xuất bia, bạn cần chắc chắn về những gì bạn đang sử dụng và Apple thay đổi vào các thời điểm khác nhau cho các cổng và đã biết trở thành người đứng sau các bản cập nhật trong một số dự án
user151019

13
Bạn có thể đưa ra một tài liệu tham khảo cho thấy rằng macports ghi đè lên các gói OS X gốc không? Theo như tôi có thể nói, tất cả các cài đặt macports xảy ra trong/opt/local

27
Ít nhất bạn đã ngụ ý rất mạnh mẽ rằng MacPorts ghi đè lên các gói OS X gốc. Thay vì "làm rõ" trong khi vẫn giả vờ bạn không nói đã viết những gì bạn đã viết, có lẽ bạn nên chỉnh sửa câu trong câu hỏi.
Thư giãn

13
Câu này, "Một sự khác biệt lớn giữa homebrew và macports; và lý do tôi thích homebrew là nó sẽ không ghi đè lên những thứ nên được cài đặt" nguyên bản "trong osx." nên được đổi thành "Một sự khác biệt lớn giữa homebrew và macports; và lý do tôi thích homebrew là homebrew sẽ không tự động cài đặt các bản sao song song của các công cụ và thư viện đã được Apple cung cấp."
bgupta

7
MacPorts không ghi đè lên các ứng dụng gốc, nó "Giới hạn phần mềm chuyển sang một hộp cát riêng tư, giúp giữ cho nó không bị xen kẽ với hệ điều hành của bạn và phần mềm do nhà cung cấp cung cấp để ngăn chúng bị hỏng." - MacPorts Hướng dẫn, Chương 1
JLA

23

Hiện tại, Macports có nhiều gói hơn (~ 18,6 K) so với các công thức Homebrew (~ 3,1K), do sự trưởng thành của nó. Homebrew đang dần bắt kịp mặc dù.

Các gói Macport có xu hướng được duy trì bởi một người duy nhất.

Macports có thể giữ nhiều phiên bản của các gói xung quanh và bạn có thể bật hoặc tắt chúng để kiểm tra mọi thứ. Đôi khi danh sách này có thể bị hỏng và bạn phải chỉnh sửa thủ công để đưa mọi thứ trở lại theo thứ tự, mặc dù điều này không quá khó.

Cả hai người quản lý gói sẽ yêu cầu được cập nhật thường xuyên. Điều này có thể mất một thời gian.

Lưu ý: bạn có thể có cả trình quản lý gói trên hệ thống của mình! Nó không phải là cái này hay cái khác Bia có thể phàn nàn nhưng Macports sẽ không.

Ngoài ra, nếu bạn đang xử lý các gói python hoặc ruby, hãy sử dụng môi trường ảo bất cứ nơi nào có thể.


1
{{{Đôi khi danh sách này có thể bị hỏng và bạn phải chỉnh sửa thủ công để lấy lại thứ tự, mặc dù điều này không quá khó. }}} Tôi chưa bao giờ thấy điều này xảy ra, mặc dù điều đó không có nghĩa là không thể. Hoàn cảnh là gì? Bạn đã gửi một lỗi ( trac.macports.org )?
LSpice

{{{Cả hai người quản lý gói sẽ yêu cầu được cập nhật thường xuyên. Điều này có thể mất một thời gian. }}} Đây có vẻ như là một tuyên bố lạ. Trong vài năm sử dụng, tôi chỉ nhớ nâng cấp MacPorts một vài lần và bản cập nhật khá nhanh. Bạn có nghĩa là các cổng phải được cập nhật thường xuyên? Chà, họ thể, nhưng đó là một điều tốt, không phải là một nhược điểm, tôi nghĩ vậy! Ngoài ra, có lẽ đáng chú ý rằng MacPorts sẽ không yêu cầu làm bất cứ điều gì, đó là không có sự cằn nhằn; bạn phải hỏi về các gói đã lỗi thời.
LSpice

18

Theo mặc định, Homebrew cài đặt các gói vào / usr / local của bạn. Các lệnh Macport yêu cầu sudo để cài đặt và nâng cấp (tương tự apt-get trong Ubuntu).

Để biết thêm chi tiết:

Trang web này gợi ý sử dụng Hombrew: http://deephill.com/macports-vs-homebrew/

trong khi trang web này liệt kê những lợi ích của việc sử dụng Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

Gần đây tôi cũng đã chuyển từ Ubuntu và tôi thích sử dụng homebrew (đơn giản và dễ sử dụng!), Nhưng nếu bạn cảm thấy gắn bó với việc sử dụng sudo, Macports có thể là cách tốt hơn để sử dụng!


4
Bạn đang nói rằng homebrew cài đặt mọi thứ vào /usr/localmà không yêu cầu sudo?

1
@NgocPham Bạn có tham khảo cho điều đó không?

16
@Keith Trang web đó không chính xác. Hoặc ít nhất, nó đang để lại một tiền đề lớn. Nó nói "Apple đã để lại thư mục này cho chúng tôi. Điều đó có nghĩa là không có thư mục / usr / local theo mặc định, vì vậy không cần phải lo lắng về việc làm rối các công cụ hiện có." Apple đã không rời /usr/localHomebrew. Apple đã để lại /usr/local"các tệp thực thi, thư viện, v.v. không được bao gồm bởi hệ điều hành cơ bản". Điều đó có nghĩa là có thể các công cụ được cài đặt trước khi sử dụng Homebrew có thể đã được tạo ra /usr/localsao cho nó không thể được sửa đổi mà không có sudo. Họ không thảo luận về điều đó tại wiki.

2
@NgocPham Quan điểm của tôi là tôi không tin rằng Homebrew có thể sử dụng /usr/localmà không cần quyền root. Các quyền mặc định cho /usrcài đặt OS X mới là chủ sở hữu gốc, không có quyền ghi cho bất kỳ ai khác. Để thậm chí tạo /usr/local , Homebrew sẽ cần quyền truy cập root. (Tôi không cố gắng bảo vệ bất cứ điều gì)

5
@Articuno Tôi nghĩ rằng tôi đã có bạn ngay bây giờ. Đó chỉ là câu lệnh homebrewcó thể cài đặt công cụ mà không cần sudobởi vì khi nó tự thiết lập, nó đã sử dụng sudo để cho phép trên thư mục lỏng hơn để nó có thể làm bất cứ điều gì bên trong /usr/localmà không cần kích hoạt mật khẩu. Có nghĩa là phần "cài đặt không có mật khẩu" là sai? Tôi không nghĩ vậy! Vẫn đúng là homebrew sẽ có thể lấy nội dung mà không cần mật khẩu.
Ngọc Phạm
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.