Có an toàn khi cài đặt cả Homebrew và Macports trên cùng một máy không?


73

Tôi đã cài đặt MacPort trên iMac với số lượng cổng được cài đặt.

Mặc dù vậy, tôi rất thích dùng thử Homebrew vì tôi đã nghe nhiều điều hay về nó và vì tôi nhận thấy rằng nó chứa nhiều phiên bản cập nhật hơn của một số công cụ mà tôi sử dụng.

Nhưng hai cái này có thể cùng tồn tại trên cùng một máy không, hay tôi cần phải gỡ cài đặt hoàn toàn MacPorts trước?

Ngoài ra, nếu cả hai có thể được cài đặt cùng một lúc, liệu chúng có hoàn toàn độc lập với nhau không? Một trong những tính năng của Homebrew là không cài đặt lại các phiên bản mới của những thứ đã có trong hệ thống (ví dụ: python). Có phải điều này cũng mở rộng cho nó không cài đặt các phiên bản của những thứ đã được MacPorts duy trì?

Điều gì xảy ra nếu sau đó tôi gỡ cài đặt MacPorts?

Câu trả lời:


24

Họ sẽ không cùng tồn tại tốt với nhau. Apple gcc tìm trong / usr / local cho một số thứ. Điều này có nghĩa là một trình biên dịch macports có thể tìm thấy thứ mà porter không mong đợi. Xem danh sách thư macports và lỗi để biết ví dụ về những thứ được tìm thấy trong / usr / local.


4
Tôi chỉ có một cái nhìn rất khó hiểu về homebrew, nhưng nếu bạn thay đổi vị trí cài đặt mặc định cho homebrew từ / usr / local thành một cái gì đó như / opt / homebrew / usr / local, vấn đề đó có tránh được không?
Babu

@Babu - Theo brew, bạn nên tiến hành thận trọng
Peter Ajtai

@babu - có thể nhưng sẽ có vấn đề về việc homebrew hoặc macports bị chặn đường dẫn và người khác cũng chọn những thực thi đó. Tôi nghi ngờ các cổng của một trong hai hệ thống không được kiểm tra đầy đủ bằng cách sử dụng một đường dẫn khác
user151019

18

Tôi đã đưa ra một câu trả lời khác cho một câu hỏi tương tự:

Homebrew sẽ gây ra sự cố khi xây dựng phần mềm từ nguồn nếu được cài đặt trong / usr / local. Đây là mặc định, là một lựa chọn tồi vì đường dẫn này nằm trong đường dẫn tìm kiếm mặc định của trình biên dịch và các công cụ khác. Do đó, các bản dựng từ phần mềm đóng gói khác có thể nhận phụ thuộc sai, sử dụng phiên bản của Homebrew thay vì của riêng họ.

Nhiều năm trước, khi mới bắt đầu dự án, ngay cả MacPorts cũng đang sử dụng / usr / local. Nhưng hóa ra không hợp tác với các công cụ khác như được ghi lại trong Câu hỏi thường gặp của họ. Thật không may, các nhà phát triển Homebrew không muốn nghe về những trải nghiệm trước đó và bỏ qua những sự thật như vậy ...

Nói chung, tốt hơn là chỉ nên sử dụng một công cụ để tránh tất cả các vấn đề. MacPorts đang cố gắng hết sức để vá bất kỳ đường dẫn bị mã hóa nào, ví dụ: / sw được Fink sử dụng. Vì vậy, thông thường nó sẽ hoạt động, nhưng có bất cứ thứ gì được cài đặt trong / usr / local chắc chắn sẽ gây ra vấn đề cho nó.

[Càng]


Có vẻ như cũng có thể cài đặt homebrew ~/.homebrew. Nó vẫn sẽ can thiệp vào MacPorts nếu nó được cài đặt ở đó chứ?
Behrang

Bất kỳ vị trí nào khác ngoài / usr / local sẽ ổn.
raimue

MacPort và Homebrew có cùng tồn tại tốt không nếu một người sẽ cài đặt Homebrew thành / opt / local, nơi MacPort được cài đặt?
Adam LS

1
Bạn không nên cài đặt phần mềm khác theo cách thủ công vào / opt / local khi MacPorts đã được cài đặt ở đó. Nó chắc chắn sẽ can thiệp khi bạn đặt các tệp ở đó không xác định được với MacPorts, dẫn đến xung đột khi cài đặt cổng.
raimue

8

Tôi đã từng nghĩ rằng những lo lắng về những gì các công cụ xây dựng Gnu sẽ tạo ra /usr/localđang tràn ngập trên sự hoang tưởng. Các công cụ xây dựng hy vọng sẽ có rất nhiều thứ ở đó: trong những ngày tốt đẹp trước khi các nhà quản lý gói (tôi nói đùa), chúng tôi đã biên soạn bất cứ thứ gì để làm /usr/local. Nhưng trong khi Autoconf thường phát hiện ra các vấn đề, thì sự phức tạp trong xây dựng của nhiều dự án nguồn mở gây ra vấn đề và những vấn đề này có thể khó khắc phục khi bạn gặp khó khăn.

Nhưng nguy cơ gặp rắc rối với Autoconf khi tìm thấy thứ gì đó không /usr/localcần phải cân bằng về sự phiền toái bảo trì có hai, ba hoặc bốn bản sao khác nhau của Perl, Tcl và Ruby, mỗi bản có phạm vi bảo hiểm khác nhau của các thư viện gói khác nhau. Khó chịu.

Vì trải nghiệm của tôi với MacPorts và Fink thường gây ra sự bực tức do chính xác điều này, và tại một số điểm chuyển sang cách biên dịch theo cách cũ /usr/local, tôi rất vui khi thấy Homebrew không gặp rắc rối với điều đó. Tôi đã thử cấu hình MacPorts để cài đặt /usr/local, nhưng MacPorts không theo cách đó để gây khó khăn. Tôi hiểu rằng động lực là để làm cho cuộc sống của họ dễ dàng hơn khi xử lý tiếng kêu cứu trong danh sách gửi thư và theo dõi lỗi của họ: tuy nhiên, xin lưu ý rằng mặc dù chúng ta nên tôn trọng nỗ lực của những người đóng gói tình nguyện và coi thời gian của họ là quý giá gỡ lỗi tiện lợi không phải là loại đơn giản duy nhất ảnh hưởng đến bạn, với tư cách là người dùng.

Homebrew, về mặt này ít nhất, thực hiện mọi thứ theo cách họ từng làm và MacPorts cố gắng không can thiệp. Nếu bạn sẵn sàng ghi lại những gói bạn cần với Homebrew và xóa / usr / local và cài đặt lại trong trường hợp gặp khó khăn, thì bạn luôn có thể sao lưu trong trường hợp mọi thứ trở nên tồi tệ. Và một khi bạn nhận ra rằng các vấn đề trong / usr / local thường không có nguy cơ thiệt hại vĩnh viễn cho máy của bạn, bạn có thể cảm thấy tự do hơn khi chấp nhận rủi ro.

Tôi sẽ chỉ lưu ý rằng bao bì trên OSX tệ hơn bao nhiêu so với FreeBSD: Apple dường như không thực sự quan tâm đến khả năng sử dụng của chương trình con BSD của mình, bởi vì đây là vấn đề họ có thể giúp đỡ.


Vâng, câu hỏi của tôi được hỏi từ góc độ của một người dùng câm chỉ sử dụng trình quản lý gói để "lấy đồ". Không có gì chắc chắn rằng tôi sẽ có thể "tự mình tìm ra mọi thứ một chút nếu tôi gặp sự cố." Tuy nhiên, upvote dù sao để làm rõ thêm. Cảm ơn!
Giàu

1
MacPorts là lý do chính đáng để không sử dụng / usr / local, xem trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@ Yêu cầu: Lý do chính đáng cho họ - đó là sự đánh đổi khá nhiều giữa sự tiện lợi theo dõi lỗi của họ và sự đơn giản của việc cài đặt trên máy của người dùng. Tôi quan tâm đến cái sau.
Charles Stewart

1
Số lượng những thứ có thể sai vì ai đó (hoặc một cái gì đó) đã cài đặt một bản sao của $ lib in /usr/locallà vô tận. Kiến trúc, phiên bản, tính năng được cấu hình và cờ, cài đặt một phần, cài đặt lỗi thời với các vấn đề bảo mật và sẽ gây ra sự cố. Chắc chắn, hãy tiếp tục nếu bạn biết những gì bạn đang làm, nhưng đừng để lỗi về nó. Kinh nghiệm cho thấy rằng mọi người vẫn báo lỗi và đó chính xác là lý do tại sao chế độ theo dõi ( -t, xem bên dưới) tồn tại và tại sao tránh /usr/locallà khuyến nghị mặc định.
Neverpanic

@neverpanic - Ý kiến ​​của tôi về rủi ro khi biên dịch mọi thứ thành / usr / local đã thay đổi kể từ khi tôi viết câu trả lời này, chủ yếu là vì sự phức tạp của các dự án nguồn mở điển hình cứ tăng lên và các vấn đề Autoconf không trở nên dễ dàng hơn loại ra: ít nhất, "verging trên hoang tưởng" là không công bằng. Mặc dù vậy, tôi vẫn không thích cách tiếp cận "vũ trụ xây dựng riêng tư" của Macports và nó đáng được nhấn mạnh rằng sự đơn giản của các tương tác danh sách gửi thư không phải là loại đơn giản duy nhất mà người dùng cuối nên lo lắng. Tôi sẽ thêm lời cảnh báo cho câu trả lời của tôi.
Charles Stewart

6

Theo Câu hỏi thường gặp về MacPorts :

Lưu ý rằng bắt đầu với 2.3.0, MacPorts có thể tự động ẩn / usr / local (và tất cả các tệp khác mà một cổng không phụ thuộc vào) khỏi các hệ thống xây dựng của cổng. Tính năng này được gọi là chế độ theo dõi và được kích hoạt bằng cách cung cấp cờ -t cho cổng, ví dụ:

sudo port -t install <portname>

Điều này có liên quan vì theo Trang cài đặt Homebrew:

Một trong những lý do Homebrew chỉ hoạt động liên quan đến đối thủ là vì chúng tôi khuyên bạn nên cài đặt vào / usr / local. Chọn một tiền tố khác trong tình trạng nguy hiểm của bạn!

Do đó, và với ít kinh nghiệm cá nhân, tôi đưa ra giả thuyết rằng việc luôn sử dụng cờ -t cho các bản cài đặt MacPort sẽ ngăn chặn hầu hết các vấn đề về việc MacPorts và Homebrew cùng tồn tại trên cùng một hệ thống. Để giải quyết câu hỏi cuối cùng của bạn: Tôi không thấy bất kỳ lý do nào khiến việc gỡ cài đặt MacPorts sẽ gây ra bất kỳ vấn đề nào.


Hãy nhận biết rằng bạn sẽ phải chịu một hình phạt hiệu suất đáng kể. Nhưng nói chung, điều này sẽ làm việc trong hầu hết các trường hợp.
Neverpanic

Cảm ơn đã chỉ ra rằng hãy cẩn thận @neverpanic. Tôi giả sử rằng hiệu suất phạt chỉ ảnh hưởng đến thời gian cài đặt cổng và không ảnh hưởng đến bất kỳ đặc điểm thời gian chạy nào của cổng được cài đặt. Thật?
webappzero

Chính xác. Nó chỉ ngăn chặn các vấn đề về thời gian xây dựng, không phải là các vấn đề về thời gian chạy (nhưng những vấn đề này rất hiếm).
Neverpanic

Trong thực tế, tôi đã không nhớ được yêu cầu này là luôn luôn sử dụng cờ theo dõi. Do đó, tôi không khuyến nghị thực hành này cho người khác trừ khi bạn tự tin rằng bạn sẽ sử dụng -t một cách nhất quán.
webappzero

Nếu bạn không muốn nhớ nó, bạn có thể viết một tập lệnh bao bọc hoặc bí danh shell (nhưng lưu ý đến sự tương tác giữa các bí danh sudo và shell) để luôn truyền nó cho bạn. Lưu ý rằng El Capitan hiện phá vỡ chế độ theo dõi. Tôi đang làm việc trên một cách giải quyết.
Neverpanic

4

Trong khi cài đặt homebrew trên máy tính mà tôi đã sử dụng cổng trong nhiều năm, đây là những gì tôi có thể đọc:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

Hãy cẩn thận!


1

sudo port -t ...giải pháp webappzero sẽ giúp. Thành thật mà nói, tôi chạy cùng lúc với Fink, MacPorts và Homebrew, với sự bảo vệ cho MacPorts (dù sao bây giờ) và chỉ sử dụng một trong hai thứ kia để cài đặt những thứ tôi không thể nhận được từ MacPorts. Tôi đã gặp rất ít khó khăn theo cách này, ngay cả trước khi học được port -tmánh khóe. Tuy nhiên, nếu bạn đang cố gắng sử dụng nhiều trình quản lý gói để duy trì môi trường máy chủ và phát triển phức tạp, thì ít nhất bạn có thể ở trong một thế giới khó chịu. Chọn một cái, và tránh những cái khác nhưng vì thứ gì đó bạn rất cần từ chúng, và đặt cái chính sớm hơn trên đường dẫn.

Nếu những gì tôi nghe được là sự thật về việc Apple sẽ cấm mọi thứ cài đặt vào / usr / ngoài chính Apple (hoặc có thể họ đã làm điều đó ở El Crapitan, điều mà tôi sẽ tránh "chấm điểm" cho đến sau này các vấn đề với nó đã được giải quyết), tôi cho rằng điều đó sẽ giảm thiểu vấn đề sau khi Homebrew mặc định sử dụng một thứ khác - cho dù chúng tôi có đồng ý với cách tiếp cận nặng tay của Apple hay không.

Cuối cùng, tôi thích ý tưởng giới hạn các cổng riêng của Apple vào cây riêng của mình, tôi chỉ ước nó không phải là / usr /. Tôi muốn sử dụng / System / bin /, v.v., v.v., để cô lập nội dung của riêng họ, vì vậy tôi có thể bỏ qua phần mềm cập nhật, duy trì cộng đồng dễ dàng hơn.

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.