Buộc Homebrew và Macports cùng tồn tại?


10

Tôi có một hệ thống MacOSX mà tôi đã sử dụng trong một số năm và trong thời gian này, tôi đã cài đặt khá nhiều gói thông qua Macports.

Bây giờ tôi muốn dùng thử Homebrew, nhưng rõ ràng những gì tôi đã đọc ở đây và ở nơi khác rằng các cài đặt mặc định của Homebrew và Macports không thể cùng tồn tại.

Nó không phải là một lựa chọn khả thi đối với tôi để gỡ cài đặt Macports, vì rất nhiều công việc MacOSX hàng ngày của tôi liên quan đến việc sử dụng các tiện ích được cài đặt Macports khác nhau. Hơn nữa, nhiều tiện ích trong nhà của tôi hiện đang phụ thuộc vào Macports. Và cuối cùng, rất nhiều thư viện thực thi và chia sẻ mà tôi thường xuyên sử dụng hiện được cài đặt bên dưới / usr / local và hệ thống của tôi sẽ nhanh chóng trở nên không sử dụng được nếu tôi xóa cây thư mục đó.

Vì vậy, câu hỏi của tôi là: có ai nghĩ ra một cách khác để cài đặt Homebrew có thể cùng tồn tại với Macports không? Cụ thể, có ai đã tìm ra cách làm cho Homebrew sử dụng một cây thư mục như / usr / local / homebrew thay vì / usr / local?

Cảm ơn trước cho bất kỳ đề xuất hoặc con trỏ đến tài liệu.


Nếu bạn chỉ muốn thử, tại sao không thiết lập máy ảo OS X? Nó không chống lại Tosh của Apple cho OS X 10.7 và bạn có thể thử nghiệm bất cứ điều gì bạn muốn ở đó. Ngay cả khi nó là loại công việc để sử dụng song song cả hai, tôi sẽ không ngạc nhiên nếu mọi thứ bắt đầu vỡ ...
Daniel Beck

Cảm ơn bạn rất nhiều, nhưng tôi thích để cả hai trình quản lý gói chạy trong cùng một môi trường OSX, nếu có bất kỳ cách nào để làm điều đó. Điều này là do nếu tôi thích Homebrew, sau đó tôi sẽ muốn cài đặt dần các gói thông qua hệ thống đó và dần dần gỡ cài đặt các gói dựa trên Macports cũ. Thật không may, đó không phải là một lựa chọn khả thi để tôi quyết định về Homebrew, thổi bay tất cả mã Macports kế thừa của tôi trong một cú trượt ngã, và sau đó đấu tranh để thay thế tất cả trong một cú trượt ngã khác qua Homebrew.
HippoMan

Câu trả lời:


2

Bạn có thể yêu cầu Homebrew sử dụng thư mục riêng của mình và sau đó thêm nó vào đường dẫn. Mặc dù không có cùng mục đích, đoạn trích này từ hướng dẫn cài đặt nói với nó:

Nhiều cài đặt

Tạo cài đặt Homebrew bất cứ nơi nào bạn giải nén tarball. Bất kỳ lệnh brew nào được gọi là nơi các gói sẽ được cài đặt. Bạn có thể sử dụng điều này khi bạn thấy phù hợp, ví dụ: một bộ hệ thống các lib trong / usr / local và các công thức được điều chỉnh để phát triển trong ~ / homebrew

Nguồn: https://github.com/mxcl/homebrew/wiki/installation


Cảm ơn Karolos. Tôi không được khuyến khích bởi quy định sau trên cùng trang wiki đó: "Tuy nhiên, hãy tự mình cài đặt và / usr / local ... Chọn một tiền tố khác trong tình trạng nguy hiểm của bạn! " Nhưng tôi sẽ thử và báo cáo lại một lát sau.
HippoMan

Tôi đã cố gắng cài đặt homebrew trong / usr / local / homebrew. Tuy nhiên, một số gói mà tôi cố gắng cài đặt không thành công. Khi tôi chạy / usr / local / homebrew / bin / brew Doctor , tôi nhận được các tham chiếu đến hàng tá các dylib bất ngờ, thư viện tĩnh, tệp .pc và tệp .la, cùng với các cảnh báo về các gói nhất định yêu cầu cài đặt / usr / local. Vì hệ thống của tôi sẽ không chạy được nếu tôi thổi bay các cài đặt phần mềm cũ (đó là nơi mà hầu hết các tệp "không mong muốn" đến từ đó), có vẻ như không có cách nào để tôi sử dụng homebrew trên hệ thống của mình. Ôi
chà

@HippoMan: Xin lỗi vì nó không hoạt động. Một câu hỏi mặc dù: / usr / local / homebrew được thiết lập chính xác trong đường dẫn của bạn? tức là PATH và (DY) LD_LIBRARY_PATH
Karolos

@HippoMan: Gói nào bị lỗi? Tôi chỉ thử cài đặt một vài trong số chúng và không thấy bất kỳ vấn đề nào (sau khi chỉnh sửa / etc / đường dẫn để thêm / usr / local / homebrew / bin).
Karolos

Có, tôi có PATH và LD_LIBRARY_PATH được thiết lập chính xác để trỏ đến bin và lib dưới cây / usr / local / homebrew. Một trong những gói bị lỗi là gawk, đây là điều kiện tiên quyết cho avidemux. Nhưng tôi sẽ khởi động lại từ đầu và thử thêm một lần nữa, trong trường hợp tôi mắc một số lỗi.
HippoMan

1

Cách của tôi để buộc chúng cùng tồn tại là làm cho MacPorts không hiển thị theo mặc định, nhưng hiển thị khi gọi bất kỳ chương trình MacPorts nào. Đó là, bọc các chương trình MacPorts với một số tập lệnh như:

if [ "$#" -le 0 ]; then
  echo "Usage: $0 command [arg1, arg2, ...]" >&2
  exit 1
fi
if [[ -z $MACPORTS_PREFIX ]]; then
  MACPORTS_PREFIX='/opt/local'
fi
export PATH="$MACPORTS_PREFIX/bin:$MACPORTS_PREFIX/sbin:$PATH"
export DYLD_LIBRARY_PATH="$MACPORTS_PREFIX/lib:$DYLD_LIBRARY_PATH"
export CPATH="$MACPORTS_PREFIX/include:$CPATH"
command=$1
shift
exec $command $* 

Nếu bạn đặt tên cho kịch bản này là macports.sh, bạn có thể thực hiện gói macports.sh macports_bin, chẳng hạn như macports.sh portsẽ chạy portgói.

Để thuận tiện, bạn có thể đặt macports.sh somethingvào một số kịch bản với tên giống như lệnh bản thân và đặt chúng trong thư mục HOME của bạn, chẳng hạn như ~/bin, ~/.local/binvv

Tôi đã viết một bài đăng trên blog về điều này một tháng trước. Bạn có thể đọc nó nếu bạn cần xem chi tiết.

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.