FreeBSD "с нуля"
Пред. |  | След.

# 7. Ограничения

Автоматизированная установка порта может оказаться затруднена, если она является интерактивной и не поддерживает команду `make BATCH=YES install`. Для нескольких портов интерактивность означает не более, чем ввод `yes` в ответ на вопрос о принятии некоторого лицензионного соглашения. Если такой ответ считывается со стандартного устройства ввода, мы просто направляем соответствующие ответы на вход установочной команды (к примеру: `yes | make install`). Для остальных портов вам придется разобраться, где конкретно находится интерактивная команда и соответственно ее обработать. Выше были приведены примеры для `print/acroread8` and `java/jdk16`.

Вы должны также принять во внимание вопросы обновления конфигурационных файлов. Вообще говоря, вы не знаете, когда и сменился ли вообще формат или содержимое конфигурационного файла. В файл `/etc/group` может быть добавлена новая группа, или в `/etc/passwd` может добавиться дополнительное поле. Всё это уже происходило в прошлом. Простое копирование конфигурационного файла из старой в новую систему может в большинстве случаев оказаться достаточным, но в этих случаях это не так. Если вы обновляете систему каноническим способом (путём перезаписывания старых файлов), вы должны использовать утилиту `mergemaster` для работы с изменениями, если вы хотите эффективно объединить вашу локальные настройки с потенциально новыми возможностями. К сожалению, `mergemaster` работает только с файлами базового комплекта системы, а не с любыми файлами, устанавливаемыми портами. Похоже, что стороннее программное обеспечение специально проектируется для того, чтобы я не дремал, и меняет конфигурационные файлы по два раза в месяц. Для обнаружения таких скрытых изменений, я держу копию изменённых конфигурационных файлов там же, где и `stage_3.mk` и сравниваю результат с помощью правил `make`. Например, для конфигурационного файла Apache, `httpd.conf`, целью будет `config_apache`.

    @if ! cmp -s /usr/local/etc/apache2/httpd.conf httpd.conf; then \
        echo "ATTENTION: the httpd.conf has changed. Please examine if"; \
        echo "the modifications are still correct. Here is the diff:"; \
        diff -u /usr/local/etc/apache2/httpd.conf httpd.conf; \
    fi

Если разница между файлами несущественна я могу выполнить `cp /usr/local/etc/apache2/httpd.conf httpd.conf`.

Я использовал систему FreeBSD From Scratch несколько раз для обновления `7-CURRENT` до `7-CURRENT` и `8-CURRENT` до `8-CURRENT`, то есть я никогда не пытался установить `8-CURRENT` из системы `7-STABLE` и наоборот. Из-за количества изменений между релизами с разными старшими номерами я ожидаю, что этот процесс будет несколько более сложным. Использование FreeBSD From Scratch для обновления внутри ветки `STABLE` должно проходить безболезненно (хотя я ещё не пробовал этого делать).

Пред. | Начало | След.
Этап третий |  | Файлы

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.