diff --git a/s4a.tex b/s4a.tex index 641dcb1..7982b5b 100644 --- a/s4a.tex +++ b/s4a.tex @@ -2026,8 +2026,87 @@ init-скрипта, или даже сами не~являющиеся скри опция действует прямо противоположным образом.) В отличие от конфигурационных файлов, строка запуска не~может включать полноценных комментариев. + \item Некоторые из настроек, задаваемых в +/etc/sysconfig+, являются + полностью избыточными. Например, во многие дистрибутивах + подобным методом указывается, установлены ли аппаратные часы + компьютера по Гринвичу, или по местному времени. Однако эта же + настройка задается третьей строкой файла +/etc/adjtime+, + поддерживаемого во всех дистрибутивах. Использование + избыточного и не~стандартизированного параметра конфигурации + только добавляет путаницу и не~несет никакой пользы. + \item Многие файлы настроек из +/etc/sysconfig+ позволяют отключать + запуск соответствующей службы. Однако эта операция уже + поддерживается штатно для всех служб, через команды + +systemctl enable+/+disable+ (или +chkconfig on+/+off+). + Добавление дополнительного уровня настройки не~приносит никакой + пользы и лишь усложняет работу администратора. + \item Что списка принудительно загружаемых модулей ядра: в настоящее + время существуют куда более удобные пути для автоматической + подгрузки модулей при загрузке системы. Например, многие модули + +udev+ подгружает автоматически, при обнаружении + соответствующего оборудования. Этот же принцип распространяется + на ACPI и другие высокоуровневые технологии. Одно из немногих + ислючений из этого правила~--- к сожалению, в настоящее время + не~поддерживается автоматическая загрузка модулей на основании + информации о возможностях процессора, однако это будет + исправлено в ближайшем будущем. В случае, если нужный вам модуль + ядра все же не~может быть подгружен автоматически, все равно + существует гораздо более удобные методы указать его + принудительную подгрузку~--- например, создав соответствующий + файл в каталоге + \hreftt{http://0pointer.de/public/systemd-man/modules-load.d.html}{/etc/modules-load.d/} + (стандартный метод настройки принудительной подгрузки модулей). + \item И наконец, хотелось бы отметить, что каталог +/etc+ определен как + место для хранения системных настроек (<>, согласно FHS). Наличие внутри него подкаталога + +sysconfig+, который тоже содержит системную конфигурацию, + является очевидно избыточным. \end{itemize} +Что же можно предложить в качестве современной, совместимой с systemd +альтернативы этим каталогам? Ниже приведен список советов, как поступить с тем +или иным параметром конфигурации: +\begin{itemize} + \item Попробуйте просто отказаться от них. Если они полностью избыточны (например, + настройка аппаратных часов на Гринвич/местное время), то убрать + их будет довольно легко (если не~рассматривать вопросы + обеспечения совместимости). Если аналогичные по смыслу опции + штатно поддерживаются systemd, нет никакого смысла дублировать + их где-то еще. (Перечень опций, которые можно задать для любой + службы, приведен на страницах справки + \href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)} + и + \href{http://0pointer.de/public/systemd-man/systemd.service.html}{systemd.service(5)}.) + Если же ваша настройка просто добавляет еще один уровень + отключения запуска службы, откажитесь от нее, чтобы не~плодить + лишние сущности. + \item Найдите для них более подходящее место. Например, в случае с + некоторыми общесистемными настройками (такими, как локаль или + часовой пояс), мы надеемся аккуратно подтолкнуть дистрибутивы в + правильно направлении (см. предыдущий эпизод). + \item Добавьте их поддержку в штатную систему настройки демона через + собственные файлы конфигурации. К счастью, большинство служб, + работающих в Linux, являются свободным программным обеспечением, + так что сделать это довольно просто. +\end{itemize} + +Существует лишь одна причина поддерживать эти файлы еще некоторое +время: необходимо обеспечить совместимость при обновлении. Тем не~менее, в новых +пакетах от этих файлов лучше отказаться. + +Если требование совместимости критично, вы можете задейстовать эти +конфигурационные файлы даже в том случае, если настраиваете службы через +штатные unit-файлы systemd. Если ваш файл из +sysconfig+ содержит лишь +определения переменных, можно воспользоваться опцией ++EnvironmentFile=-/etc/sysconfig/foobar+ (подробнее об этой опции см. +\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}), +которая позволит определить соответствующие переменные окружения, которые будут +использованы при запуске службы. Если же для задания настроек вам необходим +полноценный язык программирования, вы можете им воспользоваться. Например, +создайте в +/usr/lib//+ простой скрипт, который включает +соответствующие файлы, а затем запускает бинарник демона через +exec+. После +чего просто укажите этот скрипт в опции +ExecStart=+ вместо бинарника демона. + \end{document} vim:ft=tex:tw=80:spell:spelllang=ru