Автоматизированная установка порта может оказаться затруднена, если
она является интерактивной и не поддерживает команду 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
должно проходить безболезненно
(хотя я ещё не пробовал этого делать).
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.