Вынуждены сосуществовать Homebrew и Macports?

10

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

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

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

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

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

HippoMan
источник
Если вы просто хотите попробовать, почему бы не настроить виртуальную машину OS X? Это не против Apple TOS для OS X 10.7, и вы можете экспериментировать с чем угодно. Даже если бы это работало с использованием обоих одновременно, я не удивился бы, если бы все начало ломаться ...
Даниэль Бек
Большое спасибо, но я предпочитаю, чтобы оба менеджера пакетов работали в одной и той же среде OSX, если это вообще возможно. Это потому, что если мне нравится Homebrew, я хочу постепенно устанавливать пакеты через эту систему и постепенно удалять старые пакеты на основе Macports. К сожалению, для меня не является приемлемой альтернативой выбрать Homebrew, одним махом взорвать весь мой унаследованный код Macports, а затем изо всех сил пытаться заменить его другим путем Homebrew.
Бегемот

Ответы:

2

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

Несколько установок

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

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

Karolos
источник
Спасибо, Каролос. Меня не вдохновляет следующее замечание на той же вики-странице: «Однако сделайте себе одолжение и установите в / usr / local ... Выберите другой префикс на свой страх и риск! » Но я попробую и сообщу об этом. позже.
Бегемот
Я попытался установить homebrew в / usr / local / homebrew. Тем не менее, ряд пакетов, которые я пытаюсь установить, терпят неудачу. Когда я запускаю / usr / local / homebrew / bin / brew doctor , я получаю ссылки на буквально десятки неожиданных dylib-файлов, статических библиотек, файлов .pc и .la, а также предупреждения о некоторых пакетах, требующих установки / usr / local. Так как моя система вообще не будет работать, если я снесу свои устаревшие установки программного обеспечения (откуда берутся эти «неожиданные» файлы), похоже, у меня нет возможности использовать homebrew в моей системе. О, хорошо ... (вздыхает) ...
Бегемот
@HippoMan: Извините, что это не сработало. Один вопрос, однако: правильно ли настроен / usr / local / homebrew в ваших путях? т.е. PATH и (DY) LD_LIBRARY_PATH
Каролос
@HippoMan: какие пакеты не работают? Я просто попытался установить пару из них и не увидел никаких проблем (после редактирования / etc / paths добавить / usr / local / homebrew / bin).
Каролос
Да, у меня есть PATH и LD_LIBRARY_PATH, правильно настроенные для указания на bin и lib в дереве / usr / local / homebrew. Один из потерпевших неудачу пакетов - gawk, который является обязательным условием для avidemux. Но я перезапущу с нуля и попробую еще раз, если я допустил какую-то ошибку.
Бегемот
1

Мой способ заставить их сосуществовать - сделать 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, запустит перенос port.

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

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

xuhdev
источник