Снимок экрана команды порта, запущенной в iTerm2 | |
Первый выпуск | 2002 г. ( 2002) |
---|---|
Стабильный выпуск | 2.7.1 / 26 мая 2021 г. ; 4 месяца назад ( 26 мая 2021 г.) |
Репозиторий | |
Написано в | Tcl и C |
Операционная система | macOS, Дарвин |
Платформа | IA-32, x86-64, PowerPC, ARM |
Доступно в | английский |
Тип | Система управления пакетами |
Лицензия | BSD |
Веб-сайт | www.macports.org |
MacPorts, ранее называвшаяся DarwinPorts, представляет собой систему управления пакетами, которая упрощает установку программного обеспечения в операционных системах macOS и Darwin. Это проект программного обеспечения с открытым исходным кодом, цель которого - упростить установку другого программного обеспечения с открытым исходным кодом. По функциям он похож на Fink и коллекции портов BSD.
MacPorts позволяет установить ряд пакетов, введя команду в Терминале, который затем загрузит, скомпилирует, если необходимо, и установит запрошенное программное обеспечение, а также автоматически установит все необходимые зависимости. Установленные пакеты можно обновить с помощью команды. sudo port install packagename
sudo port upgrade outdated
MacPorts поддерживает универсальные двоичные файлы для PowerPC, Intel и Apple кремниевых версий macOS, но для перехода с PowerPC, установленного на MacPorts, на версию на Intel Mac требуется переустановка всех установленных портов.
Есть три основных режима использования, port
которые помогают обновлять установленное программное обеспечение:
sync
обновляет дерево локальных портов. Он не обновляет какие-либо установленные пакеты, а вместо этого получает информацию о новом и обновленном программном обеспечении. По функциям он похож на brew update
или apt update
.selfupdate
имеет ту же функциональность, sync
но и обновляет систему MacPorts. В большинстве случаев его следует использовать вместо того, чтобы запускать sync
его самостоятельно, и рекомендуется запускать его каждый раз перед использованием MacPorts.upgrade
обновляет все установленные порты и их зависимости до последней версии, найденной в локальном дереве портов. По функциям он похож на apt upgrade
.Например, одна из распространенных задач - обновить устаревшие порты. Это можно сделать, запустив следующее:
sudo port selfupdate sudo port upgrade outdated
MacPorts опоры логические операторы, такие как и, или и не, а также GLOB шаблоны (по умолчанию включено) и регулярное выражение (включается --regex
). Например, чтобы обновить устаревшие порты, исключая все версии PHP, измените указанную выше команду на следующую:
sudo port selfupdate sudo port upgrade outdated and not php*
Пользователи могут указать один или несколько пакетов, которые они хотят установить через install
режим, и MacPorts будет стремиться установить их и их зависимости. Например, и LibreOffice, и Texmaker можно установить, выполнив следующее:
sudo port install libreoffice texmaker
Обратите внимание, что при этом будет установлена последняя версия, как указано в дереве локальных портов. Предварительный selfupdate
запуск позволит убедиться, что загруженный пакет является последней версией MacPorts.
Варианты предоставляют различные параметры, которые могут быть вызваны при установке порта. Общие действия включают добавление или удаление зависимостей и изменение аргументов сборки. Они предоставляют дополнительные функции, которые не обязательно могут быть полезны для всех пользователей, но могут быть полезны для других.
Например, порт youtube-dl предоставляет вариант ffmpeg, который включен по умолчанию. В обмен на добавление двух дополнительных зависимостей это позволяет извлекать звук. Варианты могут быть включены или удалены с помощью символов +
или -
, поэтому вариант ffmpeg можно отключить, выполнив следующее:
sudo port install youtube-dl -ffmpeg
Несколько вариантов можно перечислить один за другим, разделив их пробелом. Например, можно отключить MPM prefork по умолчанию в порту apache2 в пользу рабочего MPM:
sudo port install apache2 -preforkmpm +workermpm
Варианты порта можно определить, запустив его или выполнив поиск порта на веб-сайте MacPorts. port variants packagename
Веб-сайт MacPorts Ports был реализован во время Google Summer of Code 2019, при этом основные улучшения пользовательского интерфейса были внесены в рамках той же программы в 2020 году. Он отображает информацию об отдельных портах, такую как статистика установки и история сборки. Эта статистика также доступна через API. При желании пользователи могут войти в систему, чтобы получать уведомления об обновлении порта.
Существует также отдельная домашняя страница MacPorts, на которой представлена информация о проекте, а также инструкции по его установке.
Большой прогресс в официальном приложении с графическим интерфейсом под названием Pallet был достигнут в рамках Google Summer of Code. Однако в настоящее время клиент не работает, хотя были достигнуты некоторые успехи в попытках исправить это.
Также доступны сторонние альтернативы.
MacPorts был запущен в 2002 году при участии ряда сотрудников Apple Inc., включая Лэндона Фуллера, Кевина Ван Вехтена и Джордана Хаббарда. Первоначально он был известен как DarwinPorts, а название происходит от Darwin и FreeBSD Ports. Он начался как часть проекта OpenDarwin с его целью помочь пользователям macOS и Darwin в установке программного обеспечения Unix.
OpenDarwin был закрыт в 2006 году. Затем DarwinPorts был размещен на Mac OS Forge, службе хостинга с открытым исходным кодом, созданной и поддерживаемой Apple Inc. для сторонних проектов, не поддерживаемых Apple. Чтобы обозначить акцент проекта на macOS, его название было изменено на MacPorts.
Когда Apple закрыла Mac OS Forge в 2016 году, проект переместился на GitHub. В рамках этого изменения git использовался в качестве новой системы контроля версий, хотя Trac по- прежнему предпочтительнее для управления билетами, чем для проблем с GitHub.
Версия 1.0 была выпущена 28 апреля 2005 года. В декабре 2005 года проект достиг рубежа, превысив 3000 портов. В то время при установке пакета исходный код загружался и компилировался на машине конечного пользователя. Версия 2.0, выпущенная в 2011 году, представила поддержку предварительно созданных двоичных архивов; по умолчанию порты устанавливаются с использованием предварительно созданного двоичного архива, если он доступен, и в противном случае создаются из исходных текстов. По состоянию на август 2021 года у MacPorts имеется более 26 600 портов, а поддержка в максимальной степени может быть предоставлена сообществом.
MacPorts устанавливает программное обеспечение поверх операционной системы, предоставляя более новые версии предустановленных пакетов или программного обеспечения, которого нет в macOS. Это отличается от других систем управления пакетами, таких как APT и DNF, которые являются частью операционной системы. По этой причине MacPorts иногда называют оверлейным дистрибутивом. Другие примеры включают Fink и Homebrew.
В отличие от коллекции портов FreeBSD, в которой устанавливается программное обеспечение /usr/local
, MacPorts /opt/local
по умолчанию хранит свои данные, хотя это можно изменить при компиляции MacPorts из исходного кода. Причина этого изменения заключается в том, что другие системы упаковки могут перезаписать то, что установлено MacPorts, или наоборот. Выделенный каталог помогает преодолеть эту проблему. Fink следует аналогичному подходу, /sw
по умолчанию устанавливая свои данные.
Боты сборки используются для предварительной сборки портов, поэтому пользователям не нужно компилировать пакет локально. В результате получается двоичный архив, который помогает сократить время, необходимое для установки. Подобно Homebrew, MacPorts использует разные сборщики для разных версий операционных систем и архитектур. Однако иногда может потребоваться сборка из исходного кода локально, если двоичные файлы не удается собрать или лицензия порта не позволяет распространять двоичные файлы. Если двоичный файл не может быть создан, это будет отмечено на веб-сайте MacPorts для этого отдельного порта, и сопровождающий будет предупрежден. Также можно просмотреть последние события buildbot на специальной странице активности.
Двоичные архивы создаются локально всякий раз, когда пользователь создает порт из исходного кода. Их также можно создать вручную, запустив. sudo port archive packagename
MacPorts хранит инструкции, необходимые для создания порта, в файле описания порта, также известном как файл порта. Это похоже на то, как AUR использует сценарии оболочки, известные как PKGBUILD, или как Homebrew использует сценарии ruby в качестве формулы. Файлы порта представляют собой законченные программы TCL с доступом к интерпретатору TCL. Они используют простые параметры пары ключ-значение для определения атрибутов.
MacPorts использует реальный язык сценариев, а именно TCL, при создании описаний портов. Это дает разработчику порта гораздо больше гибкости в работе с некоторыми из более сложных частей программного обеспечения, а само понятие перехватчиков действий (предварительная / пост-выборка, сборка, установка и т. Д.) Намного чище в MacPorts [по сравнению с FreeBSD ]
- Джордан Хаббард, Изобретение системы портов FreeBSD, ее недостатки и достоинства MacPortsНапример, это файл порта для Hashcat :
# -*- coding: utf-8; mode: _tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2 PortSystem 1.0 PortGroup github 1.0 PortGroup makefile 1.0 github.setup hashcat hashcat 6.2.3 v github.tarball_from archive categories security license MIT platforms darwin maintainers @gaming-hacker openmaintainer description World's fastest and most advanced password recovery utility. long_description hashcat is the world's fastest and most advanced \ password recovery utility, supporting five unique modes \ of attack for over 200 highly-optimized hashing algorithms. \ hashcat currently supports CPUs, GPUs, and other hardware \ accelerators on Linux, Windows, and macOS, and has \ facilities to help enable distributed password cracking homepage https://hashcat.net/hashcat/ build.target {} checksums rmd160 8bb501834a320aaac3de149c5ab39c2eb89ee968 \ sha256 c0be1c6693ee1f35c7bef1f79bf9e30a954f717ef42d00e37787aaeff3271e51 \ size 6222424
Каждый файл порта имеет заранее определенные этапы, которые можно настроить вручную через файл порта. К ним относятся следующие:
Вывод hashcat информации о порте. Это предоставляет информацию о порте из его файла порта.Принести
Во-первых, MacPorts извлекает и загружает все файлы, относящиеся к порту, из восходящего потока. Они известны как дистрибутивные файлы. В случае с hashcat эти файлы берутся с GitHub. По завершении установки они удаляются вместе с временными файлами сборки.
Контрольная сумма
Контрольные суммы всегда определяются в файле порта, поскольку они разные для разных файлов. Контрольные суммы загруженных файлов сравниваются с контрольными суммами в файле порта, чтобы увидеть, совпадают ли они.
Для Hashcat загружается только один сжатый файл, поэтому в файле порта требуется только одна контрольная сумма.
Пластырь
Иногда может потребоваться изменить код, чтобы его можно было установить через MacPorts. Это могло быть по разным причинам, например, по умолчанию установка не в том месте. Патч- файлы можно использовать для изменения исходного кода в удобочитаемом формате.
В приведенном выше файле порта Hashcat не требует никаких изменений в коде, чтобы установка работала. Следовательно, файлы патчей не требуются. Когда требуются исправления, файл исправления будет храниться вместе с файлом порта, и на него будут ссылаться, как показано ниже (из wget ):
patchfiles prefix.patch
Настроить
Сценарий конфигурации проекта запускается для подготовки к процессу сборки. Частично это связано с определением наличия необходимых библиотек. Для портов, для которых нет сценария настройки, этот этап (а также другие при необходимости) можно отключить.
Поскольку этап настройки не упоминается в файле порта, hashcat использует настройку конфигурации по умолчанию, как определено MacPorts. Это включает запуск сценария настройки через ./configure
.
Строить
Затем инструкции в файле порта используются для построения порта. Выполняемые команды могут различаться для разных языков.
Файл порта для hashcat показывает, что его следует рассматривать как проект Makefile. Поэтому он будет построен путем запуска make
.
Тестовое задание
Некоторые порты определяют тест для проверки успешности сборки. Это необязательный этап, который запускается только при выполнении пользователем. Поэтому он не выполняется при установке порта. port test packagename
Этот порт hashcat не определил этап тестирования. После определения он может выглядеть следующим образом (из ImageMagick ):
test.run yes test.target check test.env DYLD_LIBRARY_PATH=${worksrcpath}/magick/.libs
Уничтожить
Этап уничтожения - это первый шаг к перемещению встроенных файлов в правильное место. MacPorts использует подход, состоящий в том, что сначала установка выполняется в промежуточное место (удаление), а затем файлы помещаются на их правильные места (установка). Одним из преимуществ этого является то, что он позволяет легко записывать, какие файлы были созданы, что позволяет полностью удалить их.
Например, файл, который обычно устанавливается, /opt/local/lib/libfoo.a
можно сначала установить /tmp/stage/opt/local/lib/libfoo.a
на этапе удаления с сохранением относительной структуры каталогов.
Для hashcat это выполняется путем запуска make install
, где один из аргументов ( DESTDIR
) указывает, где временно хранить файлы.
Обратите внимание, что в большинстве сценариев на компьютере пользователя выполняются только указанные ниже этапы. Это связано с тем, что двоичные файлы для портов предварительно собраны, поэтому нет необходимости собирать их локально из исходного кода.
Установить
Уничтоженные файлы надежно заархивированы. Поскольку эти файлы еще не были активированы, это позволяет архивировать несколько разных версий одного и того же порта, не мешая друг другу.
Активировать
При активации порта файлы в каталоге удаления перемещаются в правильное место. Это делает их доступными для пользователя после завершения процесса установки.
Если они хотят попробовать другую версию порта, они могут деактивировать свою текущую версию и активировать новую. При этом старый порт не удаляется, так как его можно легко снова активировать из заархивированных файлов.
При обновлении порта MacPorts деактивирует, но не удаляет текущую версию в целях безопасности. Это позволяет пользователю легко вернуться к старой версии, если обновление вызывает критические изменения.
За пакеты несут ответственность отдельные специалисты по сопровождению, упомянутые в файле порта. Ожидается, что они обновят порт и при необходимости исправят ошибки. Любой, кто хочет изменить файл порта, должен предупредить сопровождающего перед применением изменений, хотя это не всегда требуется для незначительных модификаций.
Любой может внести свой вклад в MacPorts, как правило, с помощью запросов на вытягивание, и участники могут подать заявку на права фиксации после хорошей репутации в качестве сопровождающего. Команда членов MacPorts, известных как менеджеры проектов, помогает вести и координировать проект.
Начиная с 2016 года встречи периодически проводятся один раз в год. Обычно они проходят в Словении и позволяют членам MacPorts работать над будущим развитием.
По умолчанию MacPorts не собирает статистику. Однако при желании пользователи могут отправить информацию, запустив sudo port install mpstats
. Он раз в неделю отправляет подробную информацию о том, какие порты установлены, а также о различных свойствах системы. Затем эта информация используется для определения поддерживаемого оборудования и для понимания того, как быстро принимаются новые версии MacPorts.
Пользователи могут просматривать данные аналитики на веб-сайте MacPorts.