portmaster: управляем портами во FreeBSD

Долгое время используя FreeBSD я пользовался утилитой portupgrade. Вроде бы всё устраивало, но постоянно встречался в интернете с заметками, которые рассказывали об утилите с аналогичным функционалом portmaster. Несколько попыток попробовать portmaster заканчивались для меня возвратом на portupgrade, уж слишком я к нему привык. Но вот однажды, когда я устанавливал систему на новую машинку решил рискнуть и снова попробовать portmaster.

Для установки portmaster нужно выполнить:

cd /usr/ports/ports-mgmt/portmaster
make install clean

Первое заметное отличие portupgrade от portmaster, первый требует для своей работы наличие ruby, т.к. написан на нём. portmaster же не требует ничего дополнительного, т.к. это просто набор системных скриптов sh. Вторым заметным отличием является то, что portmaster не имеет специализированной базы данных. Он работает напрямую с /usr/ports и /var/db/pkg. Можем забыть о длительных обновлениях базы и её падении в аварийных ситуациях с последующим восстановлением через вспомогательные утилиты! Несмотря на отсутствие базы, portmaster работает достаточно быстро. По сути обновление системы происходит даже быстрее за счёт отсутствия необходимости обновлять бинарную базу как это было в portupgrade.

Приятной особенностью portmaster является то, что перед выполнением работы производится конфигурация всех портов, которые будут затронуты командой. Т.е. если раньше приходилось караулить вплывающие окна конфигурации во время установки множества портов, то теперь это можно сделать сразу. portmaster также заботится о чистоте каталога /usr/ports/distfiles. При использовании portupgrade я регулярно проводил чистку вручную через portsclean. portmaster заботится о чистоте сразу после установки новой версии. Врочем ему можно указать с помощью ключа D не заниматься очисткой, или d - удалять старые версии программ. Можно также это сделать в интерактивном режиме не указывая ничего дополнительно, но это может оказаться неудобным при обновлении большого числа портов.

Наблюдать за процессом обновления с portmaster удобно, т.к. он заботится об отправке в заголовок xterm информацию о том, чем он занимается в данный момент и сколько уже обработано портов и их общее количество.