Коллекции портов (или деревья портов , или просто порты ) — это наборы make-файлов и патчей, предоставляемые операционными системами на основе BSD , FreeBSD , NetBSD и OpenBSD , в качестве простого метода установки программного обеспечения или создания бинарных пакетов. Обычно они являются основой системы управления пакетами , с портами, обрабатывающими создание пакетов, и дополнительными инструментами, управляющими удалением пакетов, обновлением и другими задачами. Помимо BSD, несколько дистрибутивов Linux реализовали похожую инфраструктуру , включая Gentoo Portage , Arch Build System (ABS) Arch , CRUX Ports и Void Linux Templates.
Главное преимущество системы портов по сравнению с моделью бинарного распространения заключается в том, что установку можно настраивать и оптимизировать в соответствии с доступными ресурсами. Например, системный администратор может легко установить 32-битную версию пакета, если 64-битная версия недоступна или не оптимизирована для этой машины. Наоборот, главный недостаток — время компиляции, которое может быть значительным. Например, полная установка системы FreeBSD с использованием портов может занять несколько дней, в зависимости от оборудования.
Джордан Хаббард зафиксировал свои макросы портирования в репозитории FreeBSD CVS 21 августа 1994 года. [1] Его установочный пакет Makefile был зафиксирован годом ранее (26 августа 1993 года). [2] Основная структура портов сначала поддерживалась Хаббардом вместе с Сатоши Асами в течение нескольких лет. Позднее была сформирована команда управления портами для решения этой задачи.
Коллекция портов NetBSD pkgsrc отличается тем, что она нацелена на то, чтобы быть переносимой и может использоваться на ряде операционных систем, помимо самой NetBSD, включая другие BSD, SmartOS / illumos , macOS , [3] MINIX 3 , Linux [4] и другие Unix-подобные . pkgsrc была создана в августе 1997 года на основе существующей системы портов FreeBSD. Она следует ежеквартальному графику выпуска и по состоянию на октябрь 2018 года содержит более 22 000 пакетов. С выпуском 1.4 DragonFly BSD объявили, что они примут pkgsrc в качестве своей официальной системы управления пакетами. [5] Однако DragonFly BSD построили собственную реализацию портов под названием dports с выпуском 3.4 [6] и полностью перешли на нее с 3.6. Разработка ведется через их git. [7]
В отличие от FreeBSD Ports , на которых она изначально была основана, система портов OpenBSD предназначена как источник, используемый для создания конечного продукта, пакетов : установка порта сначала создает пакет, а затем устанавливает его. Порты состоят из makefile, текстовых файлов с описаниями и сообщениями об установке, любых исправлений, необходимых для настройки программы для работы в OpenBSD, и упаковочного листа, перечисляющего файлы, которые должны быть включены в пакеты. Дерево портов использует набор стандартных makefiles, некоторые из которых являются общими с исходным деревом, чтобы обеспечить большую часть его функциональности; эта общая инфраструктура включает в себя множество служебных функций для разработчиков портов и означает, что порты часто можно создавать очень просто.
В конце октября 2007 года разработчик OpenBSD Николай Штурм объявил, что -stable ports tree следует считать неподдерживаемым из-за нехватки ресурсов. Это фактически заставило пользователей запускать -current ports/base tree, чтобы не отставать от обновлений безопасности. В 2009 году было решено возродить -stable ports tree под руководством Роберта Наги и Джаспера Лиевисса Адрианса. [8]
Существует три неофициальных веб-сайта со списком портов и пакетов OpenBSD: