Автоматизированная установка порта может оказаться затруднена, если
она является интерактивной и не поддерживает команду 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>.