Глава 15. Обновление

Если вы заметите, что ваш порт устарел по сравнению с последней авторской версией, первым делом вы должны получить самую последнюю версия порта. Вы можете найти их в каталоге ports/ports-current на зеркальных FTP-серверах FreeBSD. Однако если вы работаете с достаточно большим количеством портов, наверное, будет проще использовать CVSup для поддержания всей коллекции портов в актуальном состоянии, как это описано в Руководстве. К тому же это даст возможность отслеживать все зависимости портов.

На следующем шаге необходимо выяснить, нет ожидает ли уже это обновление своей очереди. Для этого у вас есть две возможности. Существует интерфейс к базе данных сообщений о проблемах FreeBSD (PR) (известной также как GNATS) с поисковыми возможностями. Выберите из выпадающего списка ports и введите название порта.

Однако иногда люди забывают поместить название порта в поле Synopsis в точном виде. В таком случае вы можете воспользоваться Системой мониторинга портов FreeBSD (которая известна также как portsmon). В рамках этой системы делается попытка классифицировать PR, касающиеся портов, по имени порта. Для поиска PR, относящихся к определённому порту, используйте механизм Просмотра по одному порту.

Если таких отложенных PR не существует, то на следующем этапе следует послать сообщение электронной почты человеку, поддерживающему порт, который выдаётся по команде make maintainer. Этот человек может уже работать над обновлением, или иметь причину не обновлять порт прямо сейчас (например, из-за проблем со стабильностью функционирования новой версии); вам нет нужды дублировать их работу. Заметьте, что неподдерживаемые порты перечисляются с адресом мейнтейнера ports@FreeBSD.org, который является всего лишь адресом общего списка рассылки, так что отправка туда сообщений, скорее всего, в данном случае не поможет.

Если мейнтейнер просит вас выполнить обновление, либо или мейнтейнер отсутствует, то у вас появляется шанс помочь FreeBSD, приготовив обновление самим! Пожалуйста, внесите изменения и сохраните результат рекурсивного diff между новым и старым каталогами порта (например, если каталог с модифицированным портом называется superedit, а оригинальный, совпадающий с находящимся в нашем дереве портов, superedit.bak, то сохраните результат выполнения команды diff -ruN superedit.bak superedit). Подойдёт как унифицированный, так и контекстный дифф, однако коммиттеры портов обычно предпочитают унифицированный формат. Отметьте использование опции -N--это одобряемый способ заставить diff корректно работать в случае добавления новых файлов или удаления старых. Перед тем, как посылать нам diff-файл, пожалуйста, проверьте его, чтобы убедиться в значимости всех внесённых изменений. Для упрощения повторяющихся операций с файлами заплаток вы можете воспользоваться скриптом /usr/ports/Tools/scripts/patchtool.py. Перед тем, как его запускать, пожалуйста, прочтите /usr/ports/Tools/scripts/README.patchtool.

Если порт никем не поддерживается, а вы активно его используете, пожалуйста, подумайте над тем, чтобы добровольно стать его мейнтейнером. Во FreeBSD имеется более 2000 портов без поддержки, и это как раз та область, где всегда нужны добровольцы. (Детальное описание обязанностей мейнтейнеров можно найти в разделе MAINTAINER в Make-файлах.)

Лучше всего послать нам diff-файл, включив его в посылку по команде send-pr(1) (категория ports). Если вы добровольно собираетесь сопровождать порт, обязательно поместите текст [maintainer update] в начале строки описания и задайте в поле ``Class'' вашего PR строчку maintainer-update. В противном случае в поле ``Class'' вашего PR должно быть указано change-request. Будьте добры, в сообщении отметьте все добавленные или удалённые файлы, так как они будут непосредственно указаны cvs(1) при выполнении операции коммита. Если diff-файл имеет размер, превышающий 20КБ, сожмите его и обработайте утилитой uuencode; в противном случае просто включите его как есть в PR.

Прежде чем пользоваться send-pr(1) вы должны просмотреть раздел о Написании сообщений о проблемах в статье о Сообщениях об ошибках; он содержит гораздо больше информации о том, как писать полезные сообщения о проблемах.

Важно: Если ваше обновление вызвано соображениями информационной безопасности или наличием серьёзных ошибок в имеющемся порте, пожалуйста, оповестите Группа Менеджеров Дерева Портов FreeBSD о необходимости немедленного перепостроения и повторного распространения пакета вашего порта. В противном случае ничего не подозревающие пользователи pkg_add(1) будут продолжать устанавливать старую версию по команде pkg_add -r в течение ещё нескольких недель.

Замечание: Повторяем еще раз - для посылки обновлений существующих портов используйте утилиту diff(1), а не shar(1)!

Теперь, когда вы проделали всё это, вам может понадобиться прочесть о том, как поддерживать актуальное состояние, в Гл. 19.

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.