Недавно я перешел на Mac из Ubuntu. Я был разочарован тем, что у Mac нет удобного sudo apt-get
в Ubuntu. Я слышал, что я должен использовать доморощенного, но я не совсем уверен, что делает доморощенный или макпорт?
В чем разница/использование homebrew, macports или других инструментов установки пакета?
Ответ 1
MacPorts - это путь.
-
Как и @user475443, MacPorts имеет гораздо больше пакетов. С помощью brew вы скоро окажетесь в ловушке, потому что нужная вам формула не существует.
-
MacPorts является родным приложением: C + TCL. Вам совсем не нужен Ruby. Чтобы установить Ruby на Mac OS X, вам может нужен MacPorts, поэтому просто перейдите к MacPorts, и вы будете счастливы.
-
MacPorts действительно стабилен, за 8 лет у меня никогда не было проблем с этим, и все мое ретрансляционное решение Unix на нем.
-
Если вы являетесь разработчиком PHP, вы можете установить последнюю версию Apache (Mac OS X использует 2.2), PHP и все необходимые вам расширения, а затем обновить все с помощью одной команды. Забудьте сделать то же самое с Homebrew.
-
Группы поддержки MacPorts.
[email protected]:~/ 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 есть эта функция.
-
Рубисты любят переписывать все в Ruby, потому что единственное, что им нравится, - это Ruby.
Ответ 2
Homebrew и macports обе решают одну и ту же проблему - это установка общих библиотек и утилит, которые не связаны с osx.
Обычно это библиотеки, связанные с развитием, и наиболее частое использование этих инструментов для разработчиков, работающих с ОСО.
Они оба нуждаются в инструментах командной строки xcode, которые вы можете скачать отдельно от https://developer.apple.com/), а для некоторых конкретных пакетов вам понадобится вся xcode IDE установлен.
xcode может быть установлен из магазина приложений Mac, его бесплатную загрузку, но требуется некоторое время с 5GB (если я правильно помню).
macports - это osx версия утилиты порта из BSD (поскольку osx получен из BSD, это был естественный выбор). Для тех, кто знаком с любым из дистрибутивов BSD, macports будет чувствовать себя как дома.
Одно существенное различие между доморощенным и макроблоком; и причина, по которой я предпочитаю доморощенного, заключается в том, что он не будет перезаписывать вещи, которые должны быть установлены "изначально" в osx. Это означает, что если есть собственный пакет, домородок уведомит вас, а не перезапишет его и вызовет проблемы дальше. Он также устанавливает библиотеки в пользовательском пространстве (таким образом, вам не нужно использовать "sudo" для установки вещей). Это помогает избавиться от библиотек, так как все в пути, доступном для вас.
homebrew также имеет более активное сообщество пользователей, и его пакеты (называемые формулами) обновляются довольно часто.
macports не перезаписывает родные пакеты OSX - он поставляет свои собственные версия. Это основная причина, по которой я предпочитаю macports поверх home- brew, вы нужно быть уверенным в том, что вы используете, и Apple меняет в разное время до портов, и, как известно, годы обновления в некоторых проектах
Можете ли вы дать ссылку, показывающую, что macports перезаписывает собственную ОС X пакеты? Насколько я могу судить, вся установка macports происходит в
/opt/local
Возможно, я должен уточнить - я не сказал нигде в своем ответе, что macports перезаписывает собственные пакеты OSX. Они оба устанавливают элементы отдельно.
Homebrew предупредит вас, когда вы должны установить вещи "изначально" (используя предпочтительный установщик библиотеки/инструмента) для лучшей совместимости. Это то, что я имел в виду. Он также будет использовать столько локальных библиотек, которые доступны в OS X. Из wiki:
Мы действительно не любим дураков в Homebrew/homebrew
Тем не менее, мы любим обманывать в кран!
Материал, который поставляется с OS X или представляет собой библиотеку, предоставляемую RubyGems, CPAN или PyPi не следует обманывать. Есть веские причины для это:
- Дублирующие библиотеки регулярно ломают сборки
- Тонкие ошибки появляются с дублирующимися библиотеками и, в меньшей степени, дублирующими инструментами
- Мы хотим, чтобы вы попытались усложнить работу своей формулы с тем, что OS X поставляется с
Вы можете дополнительно перезаписать поставляемые macosx версии утилит с помощью homebrew.
Ответ 3
По умолчанию 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, и мне нравится использовать доморощенный (он прост и удобен!), но если вы чувствуете себя привязанным к использованию sudo, Macports может быть лучшим способом!
Ответ 4
В настоящее время Macports имеет гораздо больше пакетов (~ 18,6 K), чем есть формулы Homebrew (~ 3.1K), благодаря своей зрелости. Homebrew медленно догоняет, хотя.
Пакеты Macport обычно поддерживаются одним человеком.
Macports может поддерживать несколько версий пакетов, и вы можете включить или отключить их для проверки. Иногда этот список может быть поврежден, и вам нужно вручную его отредактировать, чтобы вернуть порядок, хотя это не слишком сложно.
Оба менеджера пакетов попросят регулярно обновляться. Это может занять некоторое время.
Примечание. В вашей системе могут быть оба менеджера пакетов. Это не тот или другой. Brew может жаловаться, но Macports не будет.
Кроме того, если вы имеете дело с пакетами python или ruby, используйте, где это возможно, виртуальную среду.