Руководство FreeBSD по созданию портов
Пред. |  | След.

# Глава 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 `<portmgr@FreeBSD.org>` о необходимости немедленного перепостроения и повторного распространения пакета вашего порта. В противном случае ничего не подозревающие пользователи pkg_add(1) будут продолжать устанавливать старую версию по команде `pkg_add -r` в течение ещё нескольких недель.

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

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

Пред. | Начало | След.
`PREFIX` |  | Что делать нужно, и что делать нельзя

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