Ключевые слова:make, config, openbsd, (найти похожие документы)
From: OpenBSD.ru <www@openbsd.ru.>
Date: Mon, 2 Jan 2005 18:21:07 +0000 (UTC)
Subject: Использование файла mk.conf в OpenBSD
Оригинал: http://www.openbsd.ru/docs/howto-mkconf.html
Использование файла mk.conf
Зачем это надо?
Многие администраторы 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
Данные настройки определяют какие стандартные компоненты должны быть
включены в собираемую из исходных текстов систему.
# Настройки suexec для хостинга
#
PATCH_SUEXEC?= Yes # Научить suexec понимать login.conf
SUEXEC_DOCROOT?= /home/www # Корневой каталог серверов
SETUID_SUEXEC?= Yes # Устанавливать как setuid
Данные настройки определяют требуется ли поддержка 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
Данный настройки указывают расположение исходных текстов системы,
дерева портов и других каталогов, используемых при сборке.
# Научка GQmpeg конвертировать windows-1251 заголовки в koi8-r
#
.if ${.CURDIR} == ${PORTSDIR}/audio/gqmpeg
CONFIGURE_ARGS+= --enable-russian
.endif
Данный фрагмент включает автоматическую перекодировку заголовков 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.
# Улучшение SPAM-protect feature в hypermail
#
.if ${.CURDIR} == ${PORTSDIR}/mail/hypermail
post-patch:
@${ECHO_MSG} "===> Applying SPAM-protect patch"
@cd ${WRKSRC} && ${PATCH} -sp0 < ${SITEDIR}/patches/hypermail.patch
.endif
Данный фрагмент улучшает 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 по русски. Криво, но на безлокальи
сойдет. :)
# Разборки с suexec
#
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin/httpd && defined(PATCH_SUEXEC) \
&& ${PATCH_SUEXEC:U} == YES && exists(${SITEDIR}/patches/suexec.patch)
prereq: ${.OBJDIR}/config.status
@if [ -L src/support/suexec.c ]; then \
sh ${SITEDIR}/patches/suexec.sh ${SUEXEC_DOCROOT}; \
echo "Patching suexec"; \
rm -f src/support/suexec.c; \
cp ${.CURDIR}/src/support/suexec.c src/support; \
patch -sp0 < ${SITEDIR}/patches/suexec.patch; \
rm -f src/support/suexec.c.orig; \
fi
.endif
.if ${.CURDIR} == ${BSDSRCDIR}/usr.sbin && defined(SETUID_SUEXEC) && \
${SETUID_SUEXEC:U} == YES
afterinstall:
@chmod u+s ${DESTDIR}/usr/sbin/suexec
.endif
Данный фрагмент занимается разборками с suexec на тему вышеописанных
настроек.
# Разборки с sendmail
#
.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail && \
exists(/usr/local/include/sasl/sasl.h) && \
defined(SENDMAIL_SASL) && ${SENDMAIL_SASL:U} == YES
ENVDEF+= -DSASL -I/usr/local/include/sasl
.if exists(/usr/local/lib/sasl2)
LDADD+= -L/usr/local/lib -lsasl2
.else
LDADD+= -L/usr/local/lib -lsasl
.endif
.endif
.if ${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail && \
defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES
WANT_LIBMILTER= 1
.if !make(install)
SUBDIR:= libmilter ${SUBDIR}
.elif defined(INSTALL_LIBMILTER) && ${INSTALL_LIBMILTER:U} == YES
SUBDIR:= libsm libmilter ${SUBDIR}
afterinstall:
install -o ${BINOWN} -g ${BINGRP} -d ${DESTDIR}/usr/include/libmilter
install -o ${BINOWN} -g ${BINGRP} -m ${NONBINMODE} \
${.CURDIR}/include/libmilter/*.h \
${DESTDIR}/usr/include/libmilter
.endif
.endif
.if (${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/libmilter || \
${.CURDIR} == ${BSDSRCDIR}/gnu/usr.sbin/sendmail/sendmail) && \
defined(SENDMAIL_LIBMILTER) && ${SENDMAIL_LIBMILTER:U} == YES
WANT_LIBMILTER= 1
.endif
Разборки с sendmail на тему вышеописанных настроек.