У Debian есть APT. Red Hat имеет RPM. У FreeBSD есть порты. NetBSD имеет pkgsrc. Mac OS X имеет MacPorts, Fink и Homebrew, но это все сторонние менеджеры пакетов. Почему в OS X нет менеджера пакетов по умолчанию?
3 ответа
Мое мнение (и это в основном просто мнение, хотя я думаю, что факты могут привести вас к одной и той же идее) заключается в том, что это связано с базовым различием в мыслительном процессе индустрии открытого программного обеспечения и коммерческого программного обеспечения.
Для проектов программного обеспечения с открытым исходным кодом пакетные системы великолепны, потому что они позволяют любому пользователю исключительно легко получить программное обеспечение или поддерживать его в актуальном состоянии - обычно с помощью одной команды, а теперь с помощью удобных для новичков интерфейсов, таких как Ubuntu Software Center. Это максимальное удобство для пользователей настольных компьютеров и администраторов серверов.
Для индустрии коммерческого программного обеспечения монетизация и маркетинг так же важны (если не более важны), чем распространение. Вы знаете, как приложения Windows с открытым исходным кодом обычно имеют стандартный установщик NSIS, в то время как коммерческое ПО имеет тенденцию иметь жестокие установщики с настраиваемым окном Chrome, логотипами повсюду и рекламными копиями? Это связано с тем, что коммерческим компаниям важно, чтобы их бренд, маркетинг и опыт использовались повсеместно. Это означает, что фирмы, занимающиеся коммерческим программным обеспечением, обычно хотят контролировать каждый аспект распространения своего продукта, то есть настраиваемые веб-сайты, установщики и средства обновления. Компании также хотят иметь возможность взимать плату со своих клиентов за свои продукты, а в традиционных системах пакетов нет условий для лицензирования и взимания платы.
Пакетная среда также требует тесного сотрудничества между производителями программного обеспечения, чтобы унифицировать стандарт упаковки и поддерживать репозитории. Конкурирующие софтверные компании хотят отличаться друг от друга, и, как правило, недальновидны и предпочитают быть как можно более разными, а не максимально удобными для пользователя. Хотя конкуренция между проектами все еще присутствует в мире открытого исходного кода, она, как правило, гораздо менее значима в сознании разработчиков. Вместо этого, индустрия программного обеспечения с открытым исходным кодом в значительной степени занимается сотрудничеством, а это означает, что для крупных проектов было вполне естественным объединиться и согласовать стандартизированный механизм распространения.
Индустрия коммерческого программного обеспечения быстро приходит к единой системе распространения, но благодаря усилиям поставщиков платформ, а не производителей программного обеспечения, и началась не на ПК, а на телефонах: iOS была, пожалуй, первым чрезвычайно успешным центральным приложением. Магазин, затем Android принес их, теперь они есть у всех основных операционных систем телефона. На настольных компьютерах недавно был представлен Mac App Store, и я считаю, что официально объявлено, что в Windows 8 появится App Market.
Что такое магазин приложений / рынок? Центральная система, с помощью которой вы можете загружать и автоматически устанавливать программное обеспечение, которое также автоматически управляет зависимостями и проверяет наличие обновлений. На самом деле, это просто менеджер пакетов в более хорошем костюме и с прицелом на доход.
tl; dr: мотивация сообщества открытого исходного кода привела, естественно, к пакетным системам, в то время как индустрия коммерческого программного обеспечения не видела преимуществ и не проявляла инициативу. Теперь индустрия коммерческого программного обеспечения приходит и внедряет системы пакетов в виде магазинов приложений.
Я не думаю, что есть какая-то реальная причина, кроме Apple, просто не чувствовал необходимости включать ее, поскольку это не так необходимо для большинства пользователей Mac. С различными версиями Linux вам нужно компилировать из исходного кода все, так как все различные среды достаточно различны, чтобы исполняемые файлы, скомпилированные в одном месте, могли не работать в другом. Это также требует, чтобы что-то сначала гарантировало, что все зависимости были на месте. Менеджеры пакетов Linux включены, чтобы сделать это проще для пользователя.
В случае OS X все, что скомпилировано для этого, вероятно, будет работать (между несколькими различными выпусками определенно есть исключения, но это не так спорадично, как дистрибутивы Linux). Вы можете быть уверены, что загружаемый вами бинарный файл будет работать. Apple контролирует разработку и распространение ОС, поэтому она остается достаточно регулярной и последовательной - аналогично Windows в этом смысле. Но поскольку OS X построена на ядре Unix и достаточно людей, которые хотят использовать инструменты Unix, существуют сторонние менеджеры пакетов, которые извлекают исходный код, проверяют зависимости и компилируют для этой конкретной платформы.
Простой ответ:
Целевые пользователи Apple просто не нужны, и то, как они планировали работать в своей ОС, несовместимо с концепцией системы упаковки командной строки.
А как насчет развития? Даже там XCode не ориентирован на этот рабочий процесс. Сторонние инструменты существуют главным образом для создания инструментов на основе Linux и библиотек и проектов * nix.