Чи безпечно встановлювати і Homebrew, і Macports на одній машині?


73

На моєму iMac у мене встановлено MacPorts із встановленою досить великою кількістю портів.

Мені цікаво спробувати Homebrew, оскільки я чув багато хороших речей про це, і тому що я помітив, що він містить більш сучасні версії декількох інструментів, які я використовую.

Але чи можуть два співіснувати на одній машині чи мені потрібно спочатку видалити MacPorts?

Крім того, якщо вони можуть бути встановлені одночасно, чи будуть вони повністю незалежними один від одного? Однією з особливостей Homebrew є те, що це не перевстановлення нових версій речей, які вже включені в систему (наприклад, python). Це також стосується не встановлення версій речей, які вже підтримуються MacPorts?

Що станеться, якщо потім я видалю MacPorts?

Відповіді:


24

Вони не будуть співіснувати добре разом. Apple gcc шукає в / usr / local деякі речі. Це означає, що компіляція макпортів може знайти те, чого портьє не очікував. Перегляньте списки електронної пошти та помилки на макпортах для прикладів речей, знайдених у / usr / local.


4
У мене був дуже короткий погляд на домашню мову, але якщо ви змінили місце встановлення для домашнього мовлення за умовчанням з / usr / local на щось на кшталт / opt / homebrew / usr / local, чи не вдасться уникнути цієї проблеми?
Бабу

@Babu - За заварюванням, слід діяти обережно
Пітер Айтай

@babu - можливо, але виникнуть проблеми з тим, хто з homebrew або macports є forst pn шлях, а інший підбирає ці виконувані файли, також я підозрюю, що порти будь-якої системи не повністю перевірені за допомогою іншого шляху
user151019,

18

Я дав ще одну відповідь на подібне питання:

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

Роки тому на самому початку проекту навіть MacPorts використовував / usr / local. Але виявилося, що вони не співпрацюють з іншими інструментами, як це зафіксовано в їх FAQ. На жаль, розробники Homebrew не хотіли чути про попередній досвід і ігнорували такі факти ...

Загалом, як правило, краще дотримуватися одного інструменту, щоб уникнути всіх проблем. MacPorts робить все можливе, щоб виправити будь-які закодовані шляхи, наприклад, до / sw, якими використовується Fink. Так зазвичай це спрацює, але встановлення чого-небудь встановленого в / usr / local напевно викличе проблеми.

[…]


Схоже, також можна встановити домашню мову ~/.homebrew. Чи все-таки це буде заважати MacPorts, якщо він замість нього встановлений?
Беранг

Будь-яке інше місце, ніж / usr / local, повинно бути добре.
raimue

Чи будуть спільно існувати MacPort та Homebrew, якщо встановити Homebrew в / opt / local, де встановлено MacPort?
Адам ЛС

1
Не слід встановлювати інше програмне забезпечення вручну в / opt / local, коли MacPorts вже встановлений там. Це безумовно буде заважати, коли ви розміщуєте там файли, невідомі MacPorts, що призводить до конфліктів при встановленні портів.
рейм

8

Раніше я думав, що тривоги з приводу того, з чого будуть створюватися інструменти побудови Gnu, /usr/localбули на межі параноїдальних. Інструменти збирання очікують, що там буде багато речей: у старі добрі часи, перш ніж менеджери пакунків (жартую), ми складали що завгодно /usr/local. Але в той час як Autoconf зазвичай вирішує проблеми, складність багатьох проектів з відкритим кодом створює проблеми, і ці проблеми важко відмовитись, коли у вас виникнуть труднощі.

Але ризик виникнення проблем з Autoconf знайти щось, чого не /usr/localповинно бути, слід збалансувати щодо неприємностей у обслуговуванні, що мають дві, три чи чотири різні різні копії Perl, Tcl та Ruby, кожна з різним покриттям своїх різних бібліотек пакетів. Неприємно.

Оскільки мій досвід роботи з MacPorts і Fink, як правило, викликав роздратування, викликане саме цим, і в якийсь момент перейшов до складання старомодного способу /usr/local, я був радий побачити, що Homebrew з цим не возився. Я спробував налаштувати MacPorts для встановлення /usr/local, але MacPorts виходить зі шляху, щоб зробити це складно. Я розумію, що мотивація полягає в тому, щоб полегшити життя собі, коли розбираєтесь з вигуками про допомогу у своєму списку розсилки та відслідковуючі помилки: будь ласка, пам’ятайте, що, хоча ми повинні поважати зусилля пакувальників-добровольців і ставитися до їхнього часу як до дорогоцінного, їхнього Зручність налагодження - це не єдиний вид простоти, який впливає на вас, як на користувача.

В цьому відношенні хатня мова, як мінімум, робить так, як раніше, і МакПортс намагається не втручатися. Якщо ви готові задокументувати, які пакунки вам потрібні в програмі Homebrew, і протріть / usr / local чисте та перевстановіть у разі виникнення труднощів, ви завжди можете відмовитися, якщо все піде не так. І як тільки ви зрозумієте, що проблеми в / usr / local, як правило, не несуть ризику постійного пошкодження ваших машин, ви можете почувати себе вільніше ризикувати.

Я лише зазначу, наскільки гірша упаковка для OSX, ніж FreeBSD: Apple, схоже, не переймається зручністю свого підсистеми BSD, оскільки це проблема, з якою вони могли б допомогти.


Ну, моє запитання задається з точки зору німого користувача, який просто використовує менеджер пакунків, щоб "отримати речі". Це не зовсім впевнений , що я був би в стані «з'ясувати речі трохи [мій] самостійно , якщо все піде не так.» Тим не менш, надайте пропозицію щодо додаткових роз'яснень. Дякую!
Багатий

1
MacPorts як вагомі причини не використовувати / usr / local, див. Trac.macports.org/wiki/FAQ#defaultprefix
raimue

3
@Raim: Важливі причини для них - це в значній мірі компроміс між їх зручністю відстеження помилок та простотою встановлення на машині користувача. Я дбаю про останнє.
Чарльз Стюарт

1
Кількість речей, які можуть піти не так, оскільки хтось (або щось) встановив копію $ lib у /usr/localнескінченний. Архітектури, версії, налаштовані функції та прапори, часткові установки, застарілі установки з проблемами безпеки, та і і будуть викликати проблеми. Звичайно, продовжуйте, якщо ви знаєте, що робите, але не пишіть про це помилок. Досвід показує, що люди в будь-якому випадку подають помилки, і саме це є причиною існування режиму відстеження ( -tдив. Нижче) і чому це уникати /usr/local- це рекомендація за замовчуванням.
ніколипанська

@neverpanic - Моя думка щодо ризиків компіляції всього до / usr / local змінилася з часу написання цієї відповіді, в основному тому, що складність типових проектів з відкритим кодом просто збільшується та збільшується, а питання Autoconf не стають легшими розібратися: принаймні, "розраховувати на параноїда" є несправедливим. Мені все ще не подобається підхід Macports "для власного приватного побудови всесвіту", але він заслуговує наголосити на тому, що простота взаємодії списків розсилки - не єдиний вид простоти, про який повинен турбуватися кінцевий користувач. Я додам застереження до своєї відповіді.
Чарльз Стюарт

6

Відповідно до поширених запитань MacPorts :

Зауважте, що починаючи з 2.3.0, MacPorts може автоматично приховувати / usr / local (а всі інші файли, від яких порт не залежить) від систем побудови портів. Ця функція називається режимом відстеження і активується, надаючи прапор -t до порту, наприклад

sudo port -t install <portname>

Це актуально, оскільки згідно зі сторінкою встановлення Homebrew:

Однією з причин Homebrew просто працює відносно конкуренції є те, що ми рекомендуємо встановлювати в / usr / local. Виберіть ще один префікс за вашої небезпеки!

Тому, маючи особистий досвід, я вважаю, що завжди використання прапора -t для встановлення MacPort повинно запобігти більшості проблем існування MacPorts та Homebrew в одній системі. Щоб вирішити ваше останнє питання: я не бачу жодної причини, через яку видалення MacPorts могло б викликати проблеми.


Будьте в курсі, що вас чекає значне покарання за продуктивність. Але загалом це повинно працювати майже у всіх випадках.
ніколипанська

Дякуємо, що вказали, що застереження @neverpanic. Я припускаю, що зазначене покарання за ефективність впливає лише на час встановлення порту і не впливає на будь-які характеристики виконання встановленого порту. Правда?
webappzero

Правильно. Це запобігає лише проблемам з часом нарощування, а не проблемам часу виконання (але вони дуже рідкісні).
Neverpanic

На практиці мені не вдалося запам'ятати цю вимогу завжди використовувати прапор сліду. Тому я не рекомендую цю практику іншим, якщо ви не впевнені, що будете використовувати -t послідовно.
webappzero

Якщо ви не хочете його пам’ятати, ви можете написати сценарій обгортки або псевдонім оболонки (але пам’ятайте про взаємодію між судо і псевдонімами оболонки), щоб завжди передавати його вам. Зауважте, що El Capitan наразі порушує режим слідування. Я працюю над вирішенням проблеми.
Neverpanic

4

Встановлюючи домашню мову на комп’ютер, де я вже багато років використовую порти, ось що я можу прочитати:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

Будь обережний!


1

Рішення webappzero sudo port -t ...має допомогти. Якщо чесно, я запускаю разом із Fink, MacPorts та Homebrew відразу, з повагою до MacPorts (поки що так чи інакше), і лише використовую будь-який з двох інших для встановлення речей, які я не можу отримати від MacPorts. Я зіткнувся з цим дуже мало труднощів, навіть перш ніж навчитися port -tтрюку. Якщо ви намагаєтесь використовувати декілька менеджерів пакетів для підтримки складних середовищ для розробки та сервера, то, мабуть, ви відчуваєте принаймні світ дискомфорту. Виберіть одне і уникайте інших, але чогось, що вам відчайдушно потрібно від них, і поставте головне раніше на шляху.

Якщо те, що я чую, це правда про те, що Apple забороняє встановлювати речі в / usr /, крім власних Apple (або, можливо, вони вже роблять це в El Crapitan, що я уникаю "до" оцінювання, поки не пізніше проблеми з цим вирішуються), я вважаю, що це полегшить проблему після того, як Homebrew за замовчуванням використовує щось інше - чи згодні ми з жорстким підходом Apple чи ні.

Зрештою, мені подобається ідея обмеження власних портів Apple до власного дерева, я просто хочу, щоб це не було / usr /. Я вважаю за краще, щоб вони використовували / System / bin /, etc., etc., щоб ізолювати власні речі, щоб я міг обходити це оновленим програмним забезпеченням, яке підтримує спільнота.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.