В чем разница / использование homebrew, macports или других инструментов для установки пакетов? [закрыто]

239

Я только недавно перешел на Mac из Ubuntu. Я был разочарован тем, что у Mac нет удобного sudo apt-getв Ubuntu. Я слышал, что я должен использовать homebrew, но я не совсем уверен, что делает homebrew или macports?

ROBOTPWNS
источник
4
многое связано: apple.stackexchange.com/questions/32724/…
cregox
8
Несколько лет назад у парадной двери доморощенного было заявление, которое звучало примерно так: «Доморощенный лучше, потому что он написан на Ruby». Ничего не имею против Руби, совсем нет. Мне нравится oop, а ruby ​​- прекрасный язык. У меня проблема с разработчиком программного обеспечения, который считает, что один язык лучше всех других. Только по этой причине я не заинтересован в домашнем пиве. Кроме того, macports работал хорошо для меня в течение многих лет.
Майк Макуч

Ответы:

146

MacPorts это путь.

  1. Как указал @ user475443, MacPorts имеет еще много других пакетов. С brew вы скоро попадете в ловушку, потому что нужной вам формулы не существует.

  2. MacPorts является родным приложением: C + TCL. Вам не нужен Руби вообще. Для установки Ruby на Mac OS X вам могут понадобиться MacPorts, так что просто переходите на MacPorts, и вы будете счастливы.

  3. MacPorts действительно стабилен, за 8 лет у меня никогда не было проблем с ним, и вся моя экосистема Unix ретранслировала его.

  4. Если вы являетесь разработчиком PHP, вы можете установить последнюю версию Apache (Mac OS X использует 2.2), PHP и все необходимые вам расширения, а затем обновить все с помощью одной команды. Забудьте сделать то же самое с Homebrew.

  5. Группы поддержки MacPorts.

    foo@macpro:~/ port select --summary
    
    Name        Selected      Options
    ====        ========      =======
    db          none          db46 none
    gcc         none          gcc42 llvm-gcc42 mp-gcc48 none
    llvm        none          mp-llvm-3.3 none
    mysql       mysql56       mysql56 none
    php         php55         php55 php56 none
    postgresql  postgresql94  postgresql93 postgresql94 none
    python      none          python24 python25-apple python26-apple python27 python27-apple none
    

    Если у вас установлены как PHP55, так и PHP56 (со многими различными расширениями), вы можете переключаться между ними с помощью одной команды. Все относительные расширения являются частью группы, и они будут активированы в выбранной группе: php55 или php56. Я не уверен, что Homebrew имеет эту функцию.

  6. Рубисты любят переписывать все на Ruby, потому что единственное, что им удобно, это сам Ruby.

существительное
источник
26
Рубисты любят переписывать - хе-хе, посмотрите на ребят из NodeJS, реализующих двоичные протоколы для MySQL в JS! :)
Колыпто
37
Вам не нужны MacPorts для установки Ruby - Ruby входит в состав OS X, а brew использует систему Ruby.
Майкл Экстранд
5
@ Майкл Экстранд OS X не включает последнюю версию Ruby.
существительное
89
Не могу проголосовать за это. Это слишком ворчливо, а ворчливость подрывает информацию.
OldPeculier
34
Upvoting для противодействия опущенным "анти-snarky" голосов. Любая информация, полученная от человека, всегда будет иметь естественную предвзятость (в данном случае «скупость»). Я ценю точку зрения этого пользователя, возможно, именно потому, что ответ не читается как запись в википедии.
rinogo
109

Homebrew и macports решают одну и ту же проблему - это установка общих библиотек и утилит, не входящих в состав osx.

Обычно это библиотеки, относящиеся к разработке, и наиболее распространенное использование этих инструментов для разработчиков, работающих на osx.

Они оба нуждаются в установленных инструментах командной строки xcode (которые вы можете загрузить отдельно с https://developer.apple.com/ ), а для некоторых конкретных пакетов вам потребуется вся установленная среда xcode.

xcode можно установить из магазина приложений Mac, его можно бесплатно загрузить, но это занимает некоторое время, поскольку его размер составляет около 5 ГБ (если я правильно помню).

macports - это версия утилиты порта от BSD для OSX (поскольку OSX является производной от BSD, это был естественный выбор). Для тех, кто знаком с любым из дистрибутивов BSD, macports будет чувствовать себя как дома.

Одно главное отличие между домашним пивом и макпортом; и причина, по которой я предпочитаю homebrew, состоит в том, что он не будет перезаписывать вещи, которые должны быть установлены "в исходном" в osx. Это означает, что если имеется собственный пакет, homebrew уведомит вас, вместо того, чтобы перезаписать его и вызвать проблемы в дальнейшем. Он также устанавливает библиотеки в пространстве пользователя (таким образом, вам не нужно использовать «sudo» для установки вещей). Это также помогает при избавлении от библиотек, поскольку все находится в доступном для вас пути.

homebrew также пользуется более активным сообществом пользователей, и его пакеты (называемые формулами) обновляются довольно часто.


macports не перезаписывает нативные пакеты OSX - он предоставляет свою собственную версию - это главная причина, по которой я предпочитаю macports вместо home-brew, вам нужно быть уверенным в том, что вы используете, и изменения Apple в разное время для портов, и это было известно быть годами позади обновлений в некоторых проектах

Можете ли вы дать ссылку, показывающую, что macports переписывает нативные пакеты OS X? Насколько я могу судить, все установки MacPort происходит в /opt/local

Возможно, мне следует уточнить - я нигде в своем ответе не сказал, что macports перезаписывает нативные пакеты OSX. Они оба устанавливают предметы отдельно.

Homebrew предупредит вас, когда вы должны установить вещи «изначально» (используя предпочтительный установщик библиотеки / инструмента) для лучшей совместимости. Это то, что я имел в виду. Он также будет использовать столько локальных библиотек, которые доступны в OS X. Из вики :

Нам очень не нравятся дурачки в Homebrew / homebrew

Тем не менее, мы любим дурачиться в кране!

Материал, который поставляется с OS X или является библиотекой, предоставляемой RubyGems, CPAN или PyPi, не должен дублироваться. Для этого есть веские причины:

  • Дублирующиеся библиотеки регулярно ломают сборки
  • Тонкие ошибки появляются с дублирующимися библиотеками и, в меньшей степени, с дублирующимися инструментами
  • Мы хотим, чтобы вы старались, чтобы ваша формула работала с тем, что поставляется с OS X

При желании вы можете переписать версии утилит Macosx с помощью homebrew.

Бурхан Халид
источник
78
macports не перезаписывает нативные пакеты OSX - он предоставляет свою собственную версию. Это основной способ, по которому я предпочитаю macports вместо home-brew, вам нужно быть уверенным в том, что вы используете, а также в том, что Apple меняла порты в разное время. быть ye3srs за обновлениями в некоторых проектах
mmmmmm
13
Можете ли вы дать ссылку, показывающую, что macports переписывает нативные пакеты OS X? Насколько я могу судить, все установки MacPort происходят в/opt/local
27
Вы по крайней мере очень намекали, что MacPorts перезаписывает нативные пакеты OS X. Вместо того чтобы «разъяснять», в то же время притворяясь, что вы не сказали, что написали то, что написали, вам, вероятно, следует отредактировать соответствующее предложение.
Расслабленный
13
Это предложение: «Одно существенное различие между homebrew и macports; и причина, по которой я предпочитаю homebrew, заключается в том, что он не будет перезаписывать вещи, которые должны быть установлены« изначально »в osx». следует изменить на «Одно существенное различие между homebrew и macports; и причина, по которой я предпочитаю homebrew, заключается в том, что homebrew не будет автоматически устанавливать параллельные копии инструментов и библиотек, которые уже предоставлены Apple».
bgupta
7
MacPorts не перезаписывает нативные приложения, а «ограничивает перенесенное программное обеспечение в частную« песочницу », которая не дает ему смешиваться с вашей операционной системой и поставляемым поставщиком программным обеспечением, чтобы предотвратить их повреждение». - Руководство по MacPorts, глава 1
'18
23

В настоящее время в Macports намного больше пакетов (~ 18,6 КБ), чем формул Homebrew (~ 3,1 КБ), благодаря своей зрелости. Доморощенный медленно догоняет, хотя.

Пакеты Macport, как правило, обслуживаются одним человеком.

Macports может хранить несколько версий пакетов, и вы можете включить или отключить их, чтобы проверить их. Иногда этот список может быть поврежден, и вам придется вручную редактировать его, чтобы привести все в порядок, хотя это не так уж сложно.

Оба менеджера пакетов попросят регулярно обновляться. Это может занять некоторое время.

Примечание: в вашей системе могут быть оба менеджера пакетов! Это не тот или другой. Brew может жаловаться, но Macports не будет.

Кроме того, если вы имеете дело с пакетами python или ruby, по возможности используйте виртуальную среду.

user475443
источник
1
{{{Иногда этот список может быть поврежден, и вам придется вручную редактировать его, чтобы привести все в порядок, хотя это не так уж сложно. }}} Я никогда не видел, чтобы это произошло, хотя это не значит, что это невозможно. Каковы были обстоятельства? Вы подали ошибку ( trac.macports.org )?
LSpice
{{{Оба менеджера пакетов попросят регулярно обновляться. Это может занять некоторое время. }}} Это кажется странным утверждением. За несколько лет использования я только помню, как обновлял сам MacPorts несколько раз, и обновление довольно быстрое. Вы имеете в виду, что сами порты должны часто обновляться? Ну, они могут быть, но это хорошая вещь, а не недостаток, я думаю! Кроме того, вероятно, стоит отметить, что MacPorts не будет просить что-либо делать, то есть нет придирчивости; Вы должны спросить его о неприменяющихся пакетах.
LSpice
18

По умолчанию Homebrew устанавливает пакеты в ваш / usr / local. Команды Macport требуют sudo для установки и обновления (аналогично apt-get в Ubuntu).

Для более подробной информации:

Этот сайт предлагает использовать Hombrew: http://deephill.com/macports-vs-homebrew/

тогда как этот сайт перечисляет преимущества использования Macports: http://arstechnica.com/civis/viewtopic.php?f=19&t=1207907

Я также недавно перешел с Ubuntu, и мне нравится использовать homebrew (это просто и удобно!), Но если вы чувствуете привязанность к использованию sudo, Macports может быть лучшим способом!

debstep
источник
4
Вы говорите, что homebrew устанавливает вещи /usr/localбез необходимости sudo?
1
@NgocPham У вас есть ссылка на это?
16
@Keith Этот сайт неправильный. Или, по крайней мере, это оставляет главную предпосылку. В нем говорится: «Apple оставила этот каталог для нас. Это означает, что по умолчанию нет каталога / usr / local, поэтому нет необходимости беспокоиться о том, чтобы испортить существующие инструменты». Apple не уехала /usr/localв Homebrew. Apple выбрала /usr/local«исполняемые файлы, библиотеки и т. Д., Не включенные в базовую операционную систему». Это означает, что возможно, что инструменты, установленные до использования Homebrew, могли быть созданы так /usr/local, что их нельзя изменить без sudo. Они не обсуждают это в вики.
2
@NgocPham Я хочу сказать, что я не верю, что Homebrew можно использовать /usr/localбез прав root. Права доступа по умолчанию для /usrновой установки OS X - это владелец root, без прав на запись для всех остальных. Чтобы даже создать /usr/local , Homebrew потребуется root-доступ. (Я не пытаюсь ничего защищать)
5
@Articuno Я думаю, что получил тебя сейчас. Это просто утверждение , что homebrewможет установить вещи без , sudoпотому что , когда она позиционировала себя, она используется sudo , чтобы сделать разрешение на каталог неудачником , так что будет в состоянии сделать что - либо внутри , /usr/localне вызывая пароль. Означает ли это, что «установка без пароля» неверна? Я так не думаю! Это по - прежнему верно , что homebrew будет иметь возможность получить материал без пароля.
Нгок Фам