Заставить Homebrew и Macports сосуществовать?

Заставить Homebrew и Macports сосуществовать?

У меня есть система MacOSX, которой я пользуюсь уже несколько лет, и за это время я установил довольно много пакетов через Macports.

Теперь я хочу попробовать Homebrew, но из того, что я прочитал здесь и в других источниках, ясно, что стандартные установки Homebrew и Macports не могут легко сосуществовать.

Для меня нецелесообразно удалять Macports, поскольку большая часть моей ежедневной работы с MacOSX связана с использованием различных утилит, установленных Macports. Более того, многие из моих собственных, самодельных утилит теперь взаимозависимы с Macports. И, наконец, множество исполняемых файлов и общих библиотек, которые я обычно использую, теперь установлены в /usr/local, и моя система быстро станет непригодной для использования, если я очистлю это дерево каталогов.

Итак, мой вопрос таков: кто-нибудь придумал альтернативный способ установки Homebrew, который может сосуществовать с Macports? В частности, кто-нибудь разобрался, как заставить Homebrew использовать дерево каталогов, например /usr/local/homebrew вместо /usr/local?

Заранее спасибо за любые предложения или ссылки на документы.

решение1

Вы можете указать Homebrew использовать свой собственный каталог, а затем добавить его в путь. Хотя это и не для той же цели, этот отрывок из руководства по установке говорит ему:

Множественные установки

Создайте установку Homebrew везде, куда вы извлекаете tarball. Какая бы команда brew ни была вызвана, пакеты будут установлены. Вы можете использовать это по своему усмотрению, например, системный набор libs в /usr/local и измененные формулы для разработки в ~/homebrew

Источник:https://github.com/mxcl/homebrew/wiki/installation

решение2

Мой способ заставить их сосуществовать — сделать MacPorts невидимым по умолчанию, но видимым при вызове любых программ MacPorts. То есть, обернуть программы MacPorts каким-нибудь скриптом вроде:

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 $* 

Если вы назовете этот скрипт как macports.sh, вы можете выполнить обертывание с помощью macports.sh macports_bin, например, macports.sh portбудет запущен portwrapped.

Для удобства вы можете поместить macports.sh somethingнекоторые скрипты с теми же именами, что и сами команды, в свой домашний каталог, например ~/bin, ~/.local/bin, и т. д.

Я написалзапись в блогеоб этом месяц назад. Вы можете прочитать это, если вам нужно взглянуть на детали.

Связанный контент