Portmaster – это утилита во FreeBSD для управления портами, использующая только структуру самих портов, без дополнительных надстроек или использования сторонних языков. С помощью нее можно обновлять, часть или все порты.
Общие флаги:
--force-config Выполнить команду 'make config' для всех портов (перекрывается -G)
-C Не выполнять команду 'make clean' до сборки пакетов
-G Позволяет не выполнять 'make config'
-H Cкрыть подробности сборки и установки в log-файле
-K Не выполнять 'make clean' после сборки пакетов
-B Предотвращает создание резервного пакета установленного порта
(обычно до установки делается резервная копия, на которую откатывается в случае неудачи,
после удачной установки резервная копия удаляется)
-b Создание и сохранение резервного пакета установленного порта
-g Создать пакет из нового порта
-n Проходит все шаги установки, но не инсталлирует ни каких портов
( я думаю удобно при отладке используя ключ "-K" и в случаи удачи
запустить снова portmaster с ключом "-C" для установки без сборки
-t Тщательные рекурсивные зависимости использует all-depends-list.
РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ТОЛЬКО В СЛУЧАЕ НЕОБХОДИМОСТИ.
(recurse dependencies thoroughly, using all-depends-list.
RECOMMENDED FOR USE ONLY WHEN NEEDED, NOT ROUTINELY. When applied to the
--clean-distfiles option it allows a distfile to be valid if it
matches any up to date port, not just the ones that are installed.)
-v Подробный вывод
-w Сохранять старые подключаемые библиотеки до деинсталляции
[-R] -f всегда пересобирать порты (перекрывается -i)
-i Интерактивная мода обновления, спрашивать пересобирать ли порты
-D Не очищать архивы исходников (distfiles)
-d Всегда отчищать архивы исходников (distfiles)
-m arguments for make
any arguments to supply to make(1)
-m Аргументы make, для того что бы узнать аргументы читайте man make(1)
-x avoid building or updating ports that match this pattern. Can be
specified more than once. If a port is not already installed the
exclude pattern will be run against the directory name from
/usr/ports.
-x Используется для исключения установки или обновления портов.
Можно использовать несколько раз в одной команде. Путь задается относительно каталога /usr/ports.
--no-confirm Не запрашивает пользователя подтверждения списока портов
для установки или обновления перед сборкой
--no-term-title Не обновлять заголовок xterm
--no-index-fetch Пропустить скачивание INDEX файла
--index use INDEX-[7-9] exclusively to check if a port is up to date
--index-first use the INDEX for status, but double-check with the port
--index-only do not try to use /usr/ports. For updating ports when no /usr/ports
directory is present the -PP|--packages-only option is required. See
the ENVIRONMENT section below for additional requirements.
--delete-build-only удалить порты собранные только для удовлетворения зависимости,
после успешной сборки.
-P|--packages использовать пакеты если это возможно, иначе собирать порты
-PP|--packages-only Выдавать ошибку и останавливается если пакет недоступен,
"-PP" должна быть одна в строке,
например вы не можете использовать "-PPav"
--packages-build Использовать пакеты для удовлетворения всех зависимостей.
--packages-if-newer Использовать пакет если он новее чем уже установленный,
даже если пакет не является последним согласно дереву портов
--always-fetch Всегда скачивать пакет, даже если он уже доступен локально
--local-packagedir=<path> Указать путь где локальные пакеты могут быть найдены.
Эта опция должна указать на полный путь структуры каталогов, создаваемой таким же образом,
который который был создан с помощью 'make package' (или 'portmaster -g').
То есть, файлы пакета содержатся в <path>/All (ВНИМАНИЕ!!! All с большой буквы.),
символьные ссылки LATEST_LINK <path>/Latest каталог,
и символьные ссылки в папку <path>/All в категориях и подпапках,
таких как <path>/devel, <path>/ports-mgmt, и т.д. (как на ftp-шнике freebsd.org)
--packages-local использовать пакеты только из тех, что указаны
директивой --local-packagedir
--delete-packages после установки пакета, удалить его.
Особенности:
-a Проверка всех портов и обновление по мере необходимости.
--show-work Показывать какие из зависимых портов не установленные (подразумевает "-t" )
-o <new port dir in /usr/ports> <installed port>
replace the installed port with a port from a different origin
-o <new port dir in /usr/ports> <installed port> заменить существующий порт
другим портом (обычно перейти на новую версию)
[-R] -r имя/glob каталога порта в /var/db/pkg восстановить указанный порт,
и все порты, которые зависят от его
-R используется с -r или -f опциями, чтобы пропустить порты, обновленные ранее.
Когда использующийся с "-r" это также предотвратит восстанавление родительского порта,
если это, и все его зависимости
-l список всех установленных портов по категориям
-L список всех установленных портов по категориям, и поиск обновлений
--list-origins список директорий относительно /usr/ports. Этот список предназначен
для передачи в portmaster либо на другой машине или для перестановки всех портов.
См. примеры ниже.
[--force-config|-G] [-aftv] -F только скачать дистрибутивы (distfiles)
-n отвечать "нет" на все вопросы пользователю
-y отвечать "да" на все вопросы пользователю
[-n|y] [-b] [-D|d] -e имя/glob для каталога порта в /var/db/pkg удаляют порт,
используя pkg_delete, и дополнительно удаляют весь distfiles.
Вызов "-s" после удаления порта удаляет и все зависимости которые более не требуются.
[-n|y] [-b] [-D|d] -s удалить неиспользуемые более порты зависимостей
[-t] [-n] --clean-distfiles удаляет неиспользуемые distfiles-файлы установленных портов,
если используется "-t" то для всех портов, а не только установленных.
[-t] -y --clean-distfiles тоже что и выше, но удаляет все distfiles-файлы без предупреждения
[--index|--index-only] [-n] --clean-packages предложит удалить устаревшие пакеты.
Опция --index-only требуется, если не дерево портов доступно.
[--index|--index-only]
"-y --clean-packages" делает то же самое, что и выше, но удаляет все устаревшие файлы
без предупреждения.
[-n|y] [-v] --check-depends cross-check и обновления информации зависимостей
для всех портов
[-n|y] [-v] --check-port-dbdir Проверит устаревшие записи в /var/db/ports
-h|--help Показать помощь
--version Показать номер версии
Переменные среды
Каталог на который указывает переменная PACKAGES
(по умолчанию /usr/ports/packages) будет использоваться для хранения
и резервного копирования новых пакетов. При использовании 'make package'
с опцией -g, инфраструктура портов сохранит пакеты в ${PACKAGES}/All
иначе PKGREPOSITORY. При использовании -b опции portmaster хранит
свои резервные пакеты в ${PACKAGES}/portmaster-backup так,
чтобы вы могли создать и резервный пакет и пакет недавно установленного порта,
даже если у них одинаковая версия в разных папках.
При использовании опции --packages* файлы пакета будут загружены
в ${PACKAGES}/portmaster-download. portmaster будет использовать
переменные PACKAGESITE и PACKAGEROOT (по умолчанию http://ftp.freebsd.org).
portmaster пытается использовать обе эти переменные как же
как это делает pkg_add (1).
Переменная UPGRADE_TOOL установленная в положение "portmaster"
и переменные UPGRADE_PORT и UPGRADE_PORT_VER устанавливаются в полное
имя пакета и версии.(The UPGRADE_TOOL variable is set to "portmaster",
and the UPGRADE_PORT and UPGRADE_PORT_VER variables are set to the full
package name string and version of the existing package being replaced, if any.)
При использовании опции --index-only переменная PACKAGES должна
содержать имя папки в которой у суперпользователя есть права на запись.
Другие полезные переменные:
MASTER_SITE_INDEX (по умолчанию http://www.FreeBSD.org/ports/)
FETCHINDEX (по умолчанию fetch -am -o)
INDEXDIR (по умолчанию $PORTSDIR, или $TMPDIR для --index-only)
INDEXFILE (по умолчанию версия FreeBSD)
Если Вы используете нестандартные настройки OPTIONS для создания пакета
и хотите использовать опцию --index-only без дерева портов, вы должны генерировать свой собственный INDEX файл так, чтобы зависимости соответствовали.
Если вы хотите настроить свою среду сборки на основе на портов,
посмотрите /usr/ports/ports-mgmt/portconf
Для логирования используйте переменную PM_LOG указав в ней полный путь до файла.
По умолчанию portmaster создает резервные пакеты установленных портов прежде,
чем он выполнит pkg_delete (1) во время обновления. Если создания пакета не удается
это рассматривается как серьезная ошибка и предлагается пользователю.
Однако для заданного сценарием использования portmaster это может быть проблемой.
В ситуациях, где пользователь АБСОЛЮТНО УВЕРЕН, что не возможность создания
резервного пакета не должна приводить к фатальной ошибке,
переменная PM_IGNORE_FAILED_BACKUP_PACKAGE
может быть определена через rc файл.
Для тех, кто хочет чтобы определенные порты всегда компилировались,
а не устанавливались из пакетов, переменная PT_NO_INSTALL_PACKAGE
может быть определена в соответствии с make(1), можно установить в /usr/local/etc/ports.conf
если используется /usr/ports/ports-mgmt/portconf, или в /etc/make.conf
ФАЙЛЫ
/usr/local/etc/portmaster.rc
$HOME/.portmasterrc
Дополнительные системные и пользовательские конфигурационные файлы.
Набор переменных в getopts подпрограмме сценария может быть определен в этих файлах,
чтобы включить опции. Эти файлы будут считанны главным portmaster процессом,
все переменные в них будут экспортироваться.
/var/db/pkg/*/+IGNOREME
Если этот файл существует в папке порта, который уже установлен,
поведение будет следующим:
1. Порт будет проигнорирован везде.
Это включает обновления зависимости, даже если нет никакого каталога для порта в /usr/ports и нет никакой записи для этого в/usr/ports/MOVED. Если используется опция "-v" то
о факте игнорирования, будет сообщено.
2. Если используется опция "-L" и новая версия существует, существование
файла +IGNOREME будет упомянуто.
3. Если вы сделаете регулярное обновление порта, или если используется опция "-a",
то вас спросят, хотите ли вы обновить порт так или иначе.
/var/db/pkg/*/PM_UPGRADE_DONE_FLAG
Указывает на последующие опции "-a", "-f", or "-r" которые включают опцию "-R"
что порт был уже востановлен, таким образом, это может быть безопасно проигнорировано
(Indicates to a subsequent -a, -f, or -r run which includes the -R option that a port has already
been rebuilt, so it can be safely ignored if it is up to date.)
/tmp/port_log-*
Если используется опция "-H", а установка или обновление не удалось,
результаты сборки и установки будут сохранены в этом файле.
Замените значение TMPDIR в вашей среде если это требуется.
EXIT STATUS
portmaster утилита возвращает 0 в случае успешного завершения
и > 0, если произошла ошибка.
|