RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Файл make.conf содержит общесистемные параметры,
которые будут применяться к каждому построению с использованием
make(1) и стандартного файла sys.mk. Это достигается
следующим образом: make(1) обрабатывает системный Makefile
sys.mk после любого другого файла по умолчанию, а sys.mk
включает make.conf.
Файл make.conf использует стандартный синтаксис
Makefile. Однако, make.conf не должен содержать
никаких зависимостей по отношению к make(1). Наоборот,
make.conf задает make(1) переменные, которые управляют
действием других Makefile's.
По умолчанию make.conf располагается в
/etc/make.conf, хотя альтернативное местоположение может быть
указано make(1) переменной __MAKE_CONF. Возможно, вам
придется переопределить расположение make.conf, если общесистемные
настройки не подходят для конкретной сборки. Например, настройка
__MAKE_CONF на /dev/null эффективно сбрасывает
контроль всех сборок к действию по умолчанию.
Главная цель make.conf заключается в
контролировании компилирования исходников FreeBSD, документации и портированных
приложений, которые обычно расположены в /usr/src,
/usr/doc и /usr/ports. Как правило, системный
администратор создает make.conf, когда значения некоторых
управляемых переменных должны быть изменены с их значения по умолчанию.
Процедура системной сборки происходит в четырех широких
областях: мир, ядро, документация и порты. Переменные, установленные в
make.conf, могут быть применимы в одной, двух или во всех четырех
этих областях. Кроме того, управляющие переменные могут быть заданы через ключ
-D при вызове make(1) или в
environ(7).
Ниже перечислены короткие пояснения для каждой переменной,
которые вы можете указывать во время сборки. Значения, присвоенные переменным
типа bool, игнорируются; само по себе обозначение этой переменной
содержит в себе значение.
ALWAYS_CHECK_MAKE (bool)
Указывает make(1) проверять наличие самого
главного Makefile в дереве исходников (обычно в
/usr/src). Как правило, она задается только при сборке мира и
сборки целей мира при обновлении с более ранних версий FreeBSD.
CFLAGS (str)
Управление настройкой копилятора, когда компилируется C
код. Уровни оптимизации, отличные от -O и -O2, не
поддерживаются. BDECFLAGS, предложенные Bruce Evans
для разработки и тестирования, используются, чтобы задать
настройки для gcc(1), они могут быть использованы, если задать
так: CFLAGS+=${BDECFLAGS}
CPUTYPE (str)
Контролирует, какой процессор должен быть целевым для
генерируемого кода. Этим параметром контролируется процессорозависимая
оптимизация в определенном коде (в настоящее время только OpenSSL),
также изменяются значения CFLAGS и COPTFLAGS,
содержащие соответствующие директивы для gcc(1). Автоматическое
переопределние CFLAGS и COPTFLAGS можно запретить,
используя соответственно переменные NO_CPU_CFLAGS и
NO_CPU_COPTFLAGS. Обратитесь к
/usr/share/examples/etc/make.conf для ознакомления с допустимыми
опциями CPUTYPE.
CVS_UPDATE (bool)
Укажите, чтобы использовать cvs(1) при
обновлении ваших портов командой "make update''.
CXXFLAGS (str)
Контролирует настройки компилятора, когда компилируется C++
код. CXXFLAGS изначально установлен в значение CFLAGS.
Если вы хотите добавить значения к CXXFLAGS, используйте
"+='' вместо "=''.
DOCSUPFILE (str)
supfile для документации, который будет использользован по
команде "make update''. По умолчанию располагается здесь
/usr/share/examples/cvsup/doc-supfile.
INSTALL (str)
Команда установки по умолчанию. Для установки только
файлов, для которых цель отличается или не существует, используйте:
INSTALL="install -C"
Имейте ввиду, что некоторые Makefile (в том числе
/usr/share/mk) могут быть содержать жесткие опции для команды
установки.
LOCAL_DIRS (str)
Можно задать список директорий, которые будут
прорабатываться, когда выполняется сборка в /usr/src.
MAKE_SHELL (str)
Контролирует shell внутри make(1) для
выполнения команд скриптов Makefile's. На текущий момент
поддерживаются sh(1), ksh(1) и csh(1).
MAKE_SHELL?=sh
MTREE_FOLLOWS_SYMLINKS (str)
Задайте этот параметр в "-L", чтобы
mtree(8) следовал символическим ссылкам.
NO_CPU_CFLAGS (str)
Установка этой переменной будет препятствовать
автоматическому добавлению специфичных для процессора флагов компилятора
CFLAGS.
NO_CPU_COPTFLAGS (str)
Установка этой переменной будет препятствовать
автоматическому добавлению специфичных для процессора флагов компилятора
COPTFLAGS.
NO_DOCUPDATE (bool)
Задайте, если не хотите, чтобы дерево документов
обновлялось по команде "make update''.
NO_PORTSUPDATE (bool)
Задайте, если не хотите, чтобы дерево портов обновлялось по
команде "make update''.
PORTSSUPFILE (str)
Указывает supfile портов, когда используется команда
"make update''. По умолчанию это файл
/usr/share/examples/cvsup/ports-supfile.
SUP (str)
Указывает местоположение csup(1) или
cvsup(1) при выполнении команды "make update''.
SUPFILE (str)
Первый файл supfile, когда выполняется команда
"make update''. По умолчанию это файл
/usr/share/examples/cvsup/standard-supfile.
SUPFILE1 (str)
Второй файл supfile, когда выполняется команда
"make update''. По умолчанию это файл
/usr/share/examples/cvsup/secure-supfile.
SUPFILE2 (str)
Третий файл supfile, когда выполняется команда "make
update''. По умолчанию это файл
/usr/share/examples/cvsup/secure-supfile.
SUPFLAGS (str)
Флаги для команды sup(1), когда выполняется
команда "make update''. По умолчанию "-g -L 2".
SUPHOST (str)
hostname sup-сервера, используемый, когда
выполняется команда "make update''.
SUP_UPDATE (bool)
Задайте для использования cvsup(1), чтобы
обновить ваши порты при выполнении команды "make update''.
СБОРКА ЯДРА
Ниже представлен список параметров, которые применяются только
во время сборки ядра:
BOOTWAIT (int)
Задайте время ожидания нажатия клавиши (миллисекунды), по
истечении которого загрузится ядро по умолчанию. Нажатие клавишь принимается
BIOS'ом, до загрузки с диска, что позволяет пользователю выбрать произвольную
загрузку, даже если время установлено в 0.
COPTFLAGS (str)
Управляет настройками компилятора, когда собирается ядро.
Оптимизация уровней выше [-O (-O2, ...)] не гарантирует правильной работы.
KERNCONF (str)
Указывает какие конфигурации ядра должны быть собраны
командой "${MAKE} buildkernel" и инсталлированы командой
"${MAKE} installkernel". Например: KERNCONF=MINE DEBUG
GENERIC OTHERMACHINE
соберет ядра, заданные конфигурационными файлами MINE, DEBUG,
GENERIC и OTHERMACHINE; и проинсталлирует ядро, заданное
конфигурационным файлом MINE. По молчанию это
GENERIC.
MODULES_OVERRIDE (str)
Укажите список модулей, которые вы хотите построить,
заместо построения всех модулей.
NO_KERNELCONFIG (bool)
Задайте этот параметр, чтобы не запускалась команда
"${MAKE} depend" через команду "${MAKE}
buildkernel".
NO_MODULES (bool)
Задайте, чтобы вместе с ядром не собирались модули.
PORTS_MODULES
Задайте список портов, которые вы хотите перестраивать
каждый раз, когда собираете ядро.
WITHOUT_MODULES (str)
Задайте список модулей, которые вы не хотите собирать.
Внимательно: этот параметр применяется после MODULES_OVERRIDE.
СБОРКА МИРА
Ниже представлен список параметров, которые применяются во
время сборки мира:
BOOT_COMCONSOLE_PORT (str)
Адрес порта, для использования консоли, если загрузочные
блоки были настроены на использование последовательной консоли вместо
клавиатуры/видео карты.
BOOT_COMCONSOLE_SPEED (int)
Скорость передачи данных, при использовании консоли, если
загрузочные блоки были настроены на использование последовательной консоли
вместо клавиатуры/видео карты.
BOOT_PXELDR_ALWAYS_SERIAL (bool)
Компилирование внутрь кода pxeboot(8), что
заставляет использовать последовательную консоль. Такой подход аналогичен
использованию ключа -h в boot(8) блоках.
BOOT_PXELDR_PROBE_KEYBOARD (bool)
Компилирование внутрь кода pxeboot(8), что
позволяет распознавать клавиатуру. Если ни одна консоль не найдена, то
загружается с двойной конфигурационной консолью. Такой подход аналогичен
использованию ключа -D в boot(8) блоках.
ENABLE_SUID_K5SU (bool)
Задайте это, если вы хотите использовать утилиты
ksu. В противном случае, мир будет собран без задания
set-user-ID бита.
ENABLE_SUID_NEWGRP (bool)
Задайте это для установки newgrp(1) с битом
set-user-ID. В противном случае, newgrp(1) не сможет
изменять группы пользователей.
ENABLE_SUID_SSH (bool)
Задайте это для установки ssh(1) с включенным
битом set-user-ID.
LOADER_TFTP_SUPPORT (bool)
По умолчанию pxeboot(8) загрузчик получает
доступ к ядру через NFS. Задайте эту опцию и перекомпилируйте
/usr/src/sys/boot, чтобы получить доступ к Ядру через TFTP. Это
позволяет pxeboot(8) загружать пользовательским BOOTP бездисковое ядро, которое
все еще монтирует серверный /, вместо того, чтобы загружать серверное ядро.
LOADER_FIREWIRE_SUPPORT (bool)
Задайте эту опцию и перекомпилируйте
/usr/src/sys/boot/i386, чтобы добавить dcons(4)
консольный драйвер к loader(8) и разрешить доступ поверх
FireWire(IEEE1394), используя dconschat(8). На текущий момент,
поддерживаются только i386 и amd64.
MODULES_WITH_WORLD (bool)
Задайте модули, собираемые с системой, заместо ядра.
NO_CLEAN (bool)
Задайте этот параметр для запрета очистки во время команды
"make buildworld". Вы не должны использовать этот параметр, пока вы
не понимается что он значит.
NO_CLEANDIR (bool)
Задайте этот параметр для запуска "${MAKE}
clean'' вместо "${MAKE} cleandir''.
NO_MANCOMPRESS (bool)
manual pages будут собраны без сжатия.
NO_SHARE (bool)
Поддиректория share не будет собрана.
NO_SHARED (bool)
Задайте этот параметр, чтобы /bin и
/sbin собрались статически слинкованными, что может быть плохо.
Если задан, то все утилиты, которые используют bsd.prog.mk должны
быть слинкованы статично.
PPP_NO_NAT (bool)
ppp(8) соберется без поддержки network address translation
(NAT).
PPP_NO_NETGRAPH (bool)
ppp(8) соберется без поддержки Netgraph.
PPP_NO_RADIUS (bool)
ppp(8) соберется без поддержки RADIUS.
PPP_NO_SUID (bool)
Задайте этот параметр, чтобы запретить инсталлировать
ppp(8) в качестве set-user-ID root программы.
SENDMAIL_*** ...
Отключу сборку Sendmail в src.conf, поэту все параметры,
связанные с Sendmail не рассматриваю вообще.
TOP_TABLE_SIZE (int)
top(1) использует хеш-таблицы для имен
пользователей. Размер этого хеша может быть настройн в соответствии с числом
локальных пользователей. Размер таблицы должно быть простое число в два раза
больше количества строк в /etc/passwd. Значение по умолчанию 20011.
WANT_FORCE_OPTIMIZATION_DOWNGRADE (int)
Если параметр задан, то системный компилятор будет собирать
с оптимизацией ниже на один уровень. Известно, что gcc(1) -O2 и
выше могут вызвать ошибки компиляции.
СБОРКА ДОКУМЕНТАЦИИ
Ниже представлен список параметров, которые применяются во
время сборки документации:
DISTDIR (str)
Указывает, где располагаются файлы дистрибутивов. Обычно это
папка distfiles в PORTSDIR.
DOC_LANG (str)
Список языков и кодировок, которые собираются и
устанавливаются.
PRINTERDEVICE (str)
Формат по умолчанию для документации системы, зависит от
вашего принтера. Может быть задан в "ascii" для простых принтеров, или "ps" для
postscript или графических принтеров с ghostscript фильтрами, или и то и то.
Параметры, указанные в этом руководстве могут быть устаревшими
по отношению к реально доступным параметрам, использующимся на текущий момент в
make.conf. Пожалуйста ознакомьтесь с
/usr/share/examples/etc/make.conf, в котором перечислены доступные
на данный момент параметры.
CAVEATS
Обратите внимание, что MAKEOBJDIRPREFIX и
MAKEOBJDIR - переменные среды, и их нельзя определять в
make.conf.