Змусити спільно існувати Homebrew та Macports?


10

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

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

Видалити Macports не є життєздатним варіантом, оскільки стільки моєї щоденної роботи MacOSX включає використання різних утилітів, встановлених Macports. Крім того, багато моїх власних комунальних комунальних послуг зараз взаємозалежні з Macports. І нарешті, багато виконуваних файлів і бібліотек, якими я користуюся звичайно, зараз встановлено під / usr / local, і моя система швидко стане непридатною, якби я очистив це дерево директорій.

Отже, моє запитання таке: хто-небудь придумав альтернативний спосіб встановлення Homebrew, який може співіснувати з Macports? Зокрема, хтось придумав, як змусити Homebrew використовувати дерево каталогів, наприклад / usr / local / homebrew замість / usr / local?

Заздалегідь дякую за будь-які пропозиції та вказівки на документи.


Якщо ви просто хочете спробувати, чому б не встановити віртуальну машину OS X? Це не проти TOS від Apple для OS X 10.7, і ви можете там експериментувати з усім, що вам завгодно. Навіть якби це працювало як паралельно, я не здивувався б, якщо все почало ламатися ...
Даніель Бек

Дуже дякую, але я вважаю за краще, щоб обидва менеджери пакунків працювали в одному середовищі OSX, якщо взагалі є якийсь спосіб це зробити. Це тому, що якщо мені подобається Homebrew, я захочу поступово встановлювати пакети через цю систему та поступово видаляти старі пакунки на основі Macports. На жаль, це не є життєздатною альтернативою для мене, щоб визначитися з Homebrew, підірвати весь застарілий код Macports одним махом, а потім боротися за те, щоб замінити все це іншим махом через Homebrew.
Гіппоман

Відповіді:


2

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

Кілька установок

Створіть інсталяцію Homebrew, де б ви не діставали тарбол. Незалежно від того, яка команда вариться, де будуть встановлені пакети. Ви можете використовувати це як вважаєте за потрібне, наприклад, системний набір libs в / usr / local та tweaked формулах для розвитку в ~ / homebrew

Джерело: https://github.com/mxcl/homebrew/wiki/installation


Дякую, Каролос. Мене не заохочує такий текст на тій самій сторінці вікі: "Однак зробіть собі послугу та встановіть на / usr / local ... Виберіть інший приставку за вашу небезпеку! " пізніше.
Гіппоман

Я спробував встановити homebrew в / usr / local / homebrew. Однак ряд пакунків, які я намагаюся встановити, не вдається. Коли я запускаю / usr / local / homebrew / bin / brew doctor , я отримую посилання на буквально десятки несподіваних дилібів, статичних бібліотек, .pc файлів і .la файлів, а також попередження про певні пакети, що вимагають встановлення / usr / local. Оскільки моя система взагалі не працюватиме, якщо я здуваю застарілі інсталяції програмного забезпечення (саме звідки походить більшість цих "несподіваних" файлів), схоже, немає можливості використовувати домашню мову в моїй системі. Ну добре ... (зітхаючи) ...
Гіппоман

@HippoMan: Вибачте, що це не виходить. Хоча одне питання: чи правильно налаштовано / usr / local / homebrew у ваших контурах? тобто PATH та (DY) LD_LIBRARY_PATH
Каролос

@HippoMan: Які пакунки відмовляються? Я просто спробував встановити пару з них і не бачив жодної проблеми (після редагування / etc / paths додати / usr / local / homebrew / bin).
Каролос

Так, у мене PATH та LD_LIBRARY_PATH налаштовані правильно, щоб вказати на бін та 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.