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


10

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

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

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

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

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


Если вы просто хотите попробовать, почему бы не настроить виртуальную машину 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


Спасибо, Каролос. Меня не вдохновляет следующее замечание на той же вики-странице: «Однако сделайте себе одолжение и установите в / 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и т.д.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.