Многие администраторы OpenBSD предпочитают собирать систему
самостоятельно, из исходных текстов, а также собирать и устанавливать
packages из дерева портов. При этом часто используется файл
/etc/mk.conf, позволяющий указать, какие именно возможности требуются
от системы. Наиболее часто этот файл используется, чтобы отключить
Kerberos и тому подобные возможности, которые нужны довольно редко. Но
это далеко не единственная область где возможно применения файла
mk.conf.
Часто нам хочется включить в систему некоторые возможности,
которые не включены в системных компонентах, но поддерживаются этими
компонентами (например SMTP Authentication в sendmail). Однако ставить
для этого данные компоненты "вручную" из исходных кодов неудобно:
1. То, что идёт с системой, лучше проверено именно с OpenBSD.
2. После каждой пересборки системы, нужно следить, чтобы
установленное "вручную" ПО продолжало работать в новой системе.
Очень часто мы бываем недовольны некоторыми особенностями
программ, устанавливаемых из портов или просто хотим немного
подправить устанавливаемую программу под свои конкретные цели...
Словом иногда бывает ситуация когда есть потребность сделать что-то
ради чего не стоит беспокоить народ из ports@openbsd.org. :)
И здесь нам снова поможет mk.conf.
Примеры использования mk.conf.
Рассмотрим некоторые варианты использования mk.conf на примере
набора для облегчения жизни http://www.openbsd.ru/files/site.tar.gz
Данный набор состоит собственно из файла mk.conf и набора патчей, используемых им в своих
целях. Данный набор можно установить в свою систему и дополнять по
мере надобности. Для установки достаточно скачать файл site.tar.gz
и выполнить следующие команды:
# cd /etc
# tar xfz /site.tar.gz
# ln -sf site/mk.conf .
Состав набора:
mk.conf Собственно файл mk.conf.
patches/hypermail.patch Патч для порта mail/hypermail, улучшающий
spamprotect feature.
patches/ipfm.patch Патч для порта net/ipfm, позволяющий работать с
несколькими сетевыми интерфейсами одновременно.
patches/suexec.patch
patches/suexec.sh Патчики для suexec, позволяющие ему использовать
login классы.
patches/sylpheed-charset.patch Патч для порта mail/sylpheed,
довольно грубо решающий проблему отсутствия locale в OpenBSD. :)
После установки данного набора, остается только отредактировать файл
mk.conf и настроить его под свои нужды:
# Настройки собираемой системы.
#
SKEY?= Yes # Включать поддержку S/Key
KERBEROS5?= Yes # Включать поддержку Kerberos V
YP?= Yes # Включать поддержку NIS
TCP_WRAPPERS?= Yes # Включать поддержку libwrap и tcpd
AFS?= Yes # Включать поддержку AFS
Данные настройки определяют какие стандартные компоненты должны быть
включены в собираемую из исходных текстов систему.
Данные настройки определяют требуется ли поддержка login классов в
suexec, корневой каталог для документов с точки зрения suexec и
следует ли его устанавливать как setuid программу (необходимо если
планируется использование suexec).
SENDMAIL_SASL?= No # Включить поддержку SASL или SASL2
SENDMAIL_LIBMILTER?= No # Включить поддержку libmilter
INSTALL_LIBMILTER?= No # Устанавливать libmilter
Данные настройки определяют следует ли собирать sendmail с поддержкой
SASL или SASL2 для использование возможности авторизации SMTP (в
системе должен быть установлен порт security/cyrus-sasl или
secuity/cyrus-sasl2 соответственно), а также следует ли включить
поддержку Milter API и устанавливать библиотеку libmilter (обычно
требуется для почтовых антивирусных программ и некоторых
спам-фильтров).
# Качать distfiles для портов сначала отсюда
#
MASTER_SITE_OVERRIDE?= ftp://pdp-11.org.ru/pub/OpenBSD/distfiles/${DIST_SUBDIR}/
Данная настройка позволяет указать сервера, которые должны
просматриваться в первую очередь в поисках distfiles для портов.
PIPE?= -pipe # Использовать pipes вместо /tmp при
# # компиляции
Данная настройка заставляет gcc использовать unix pipes вместо
временных файлов в /tmp.
SITEDIR?= /etc/site # Где все это лежит
BSDSRCDIR?= /usr/src # Где находится src
BSDOBJDIR?= /usr/obj # Где находится obj
PORTSDIR?= /usr/ports # Где находится ports
Данный настройки указывают расположение исходных текстов системы,
дерева портов и других каталогов, используемых при сборке.
Данный фрагмент включает автоматическую перекодировку заголовков MP3
файлов windows-1251 в koi8-r в программе GQMpeg, собираемой из порта
audio/gqmpeg.
# Установка IRC сервера по умолчанию для BitchX и IrcII на pdp11.org.ru
#
.if ${.CURDIR} == ${PORTSDIR}/net/ircII || ${.CURDIR} == ${PORTSDIR}/net/bitchx
CONFIGURE_ARGS+= --with-default-server=irc.pdp11.org.ru
.endif
Данный фрагмент устанавливает IRC сервер поумолчанию для ircII и
BitchX, собираемых из портов net/ircII и net/bitchx соответственно.
# Научка ipfm запускать несколько копий и создавать pidfile в виде
# /var/run/ipfm-<interface>.pid
#
.if ${.CURDIR} == ${PORTSDIR}/net/ipfm
post-patch:
@${PATCH} ${PATCH_ARGS} < ${SITEDIR}/patches/ipfm.patch
.endif
Данный фрагмент исправляет порт net/ipfm, добавляя в него поддержку
одновременной работы с несколькими сетевыми интерфейсами. При этом PID
файл будет создаваться в виде /var/run/ipfm-<интерфейс>.pid
# Отучка courier-imap писать IPv4->IPv6 mapped адреса в логе (и от IPv6 :)
#
.if ${.CURDIR} == ${PORTSDIR}/mail/courier-imap
CONFIGURE_ARGS+= --without-ipv6
.endif
Данный фрагмент убирает из логов все что похоже на IPv6 для порта
mail/courier-imap.
Данный фрагмент улучшает spamprotect feature для порта mail.hypermail.
При этом вместо почтовых адресов в HTML документах будут фигурировать
только имя пользователя без указания почтового домена.
# Грязный хак для sylpheed чтобы subject не поганил
#
.if ${.CURDIR} == ${PORTSDIR}/mail/sylpheed
post-patch:
@${ECHO_MSG} "===> Applying ugly charset hack"
@cd ${WRKSRC} && ${PATCH} -sp0 <
${SITEDIR}/patches/sylpheed-charset.patch
.endif
Данный фрагмент с помощью грубой физической силы заставляет порт
mail/sylpheed писать поле Subject по русски. Криво, но на безлокальи
сойдет. :)