Compare commits

...

2 Commits
v7.1 ... v7.3

Author SHA1 Message Date
nnz1024
b853acbc75 Version v7.3 (2011-08-19 19:26) [AUTO] 2017-08-17 23:05:38 +03:00
nnz1024
51dbc5ede3 Version v7.2 (2011-08-03 17:29) [AUTO] 2017-08-17 23:05:38 +03:00

84
s4a.tex
View File

@@ -1943,6 +1943,90 @@ init-скрипта, или даже сами не~являющиеся скри
\item Приоритет OOM killer'а для демона.
\end{itemize}
А теперь давайте ответим на вопрос: что плохого в +/etc/sysconfig+
(+/etc/default+) и почему этим каталогам нет места в мире systemd?
\begin{itemize}
\item Прежде всего, утрачены основная цель и смысл существования этих
каталогов: файлы конфигурации юнитов systemd не~являются
программами, в отличие от init-скриптов SysV. Эти файлы
представляют собой простые, декларативные описания конкретных
задач и функций, и обычно содержат не~более шести строк. Они
легко могут быть сгенерированы и проанализованы без
использования Bourne shell. Их легко читать и понимать. Кроме
того, их легко модифицировать: достаточно скопировать их из
+/lib/systemd/system+ в +/etc/systemd/system+, после чего внести
необходимые изменения в скопированный файл. При этом можно быть
уверенным, что изменения не~будут затерты пакетным менеджером.
Изначальная причина появления обсуждаемых каталогов~---
необходимость разделять код и параметры конфигурации~--- больше
не~существует, так как файлы описания юнитов не~являются кодом.
Проще говоря, обсуждаемые каталоги пытаются решить проблему,
которой уже не~существует.
\item Обсуждаемые каталоги и файлы в них очень сильно привязаны к
специфике дистрибутивов. Мы же планируем, используя systemd,
способствовать стандартизации и унификации дистрибутивов. В
частности, одним из факторов такой стандартизации является
рекомендация распространять соответствующие файлы конфигурации
юнитов сразу с апстримным продуктом, а не~возлагать эту работу
на создателей пакетов, как это делалась во времена SysV.
Так как расположение обсуждаемых каталогов и настраиваемые через
них параметры сильно отличаются от дистрибутива к дистрибутиву,
пытаться поддерживать их в апстримных файлах конфигурации юнитов
просто бессмысленно. Хранение конфигурации в обсуждаемых
каталогов~--- один из факторов, превращающих Linux в зоопарк
несовместимых решений.
\item Большинство настроек, задаваемых через эти каталоги, являются
избыточными в мире systemd. Например, различные службы позволяют
задать таким методом параметры исполнения процесса, в частности,
идентификатор пользователя/группы, ограничения ресурсов,
привязки к ядрам CPU, приоритет OOM killer'а. Однако, эти
настройки поддерживаются лишь некоторыми init-скриптами, причем
одна и та же настройка в различных скриптах может называться
по-разному. С другой стороны, в мире systemd, все эти настройки
доступны для всех служб без исключения, и всегда задаются
одинаково, через одни и те же параметры конфигурационных файлов.
\item Файлы конфигурации юнитов имеют множество удобных и простых в
использовании настроек среды исполнения процесса, гораздо
больше, чем могут предоставить файлы из +/etc/sysconfig+.
\item Необходимость в некоторых из этих настроек весьма сомнительна.
Например, возьмем вышеупомянутую возможность задавать
идентификатор пользователя/группы для процесса. Эту задачу
должен решать разработчик ПО или дистрибутива. Вмешательство
администратора в эту настройку, как правило, лишено смысла~---
только разработчик располагает всей информацией,
позволяющий предотвратить конфликты идентификаторов и имен
пользователей и групп.
\item Формат файлов, используемых для сохранения настроек, плохо
подходит для данной задачи. Так как эти файлы, как правило,
являются включаемыми shell-скриптами, ошибки при их чтении очень
трудно отследить. Например, ошибка в имени переменной приведет к
тому, что переменная не~будет изменена, однако никакого
предупреждения при этом не~выводится.
\item Кроме того, такая организация не~исключает влияния
конфигурационных параметров на среду исполнения: например,
изменение перменных +IFS+ и +LANG+ может существенно повлиять на
результат интерпретации init-скрипта.
\item Интерпретация этих файлов требует запуска еще одного экземпляра
оболочки, что приводит к задержкам при загрузке\footnote{Прим.
перев.: Здесь автор несколько заблуждается. Скрипты, включенные
через директиву +source+, исполняются тем же экземпляром
оболочки, что и вызвавший их скрипт.}.
\item Файлы из +/etc/sysconfig+ часто пытаются использовать в качетсве
суррогатной замены файлов конфигурации для тех демонов, которые
не~имеют встроенной поддержки конфигурационных файлов. В
частности, вводятся специальные переменные, позволяющие задать
аргументы командной строки, используемые при запуске демона.
Встроенная поддержка конфигурационных файлов является более
удобной альтернативой такому подходу, ведь глядя на ключи
<<+-k+>>, <<+-a+>>, <<+-f+>>, трудно догадаться об их
назначении. Очень часто, из-за ограниченности словаря, на
различных демонов одни и те же ключи действуют совершенно
по-разному. (Для одного демона ключ <<+-f+>> содержит указание
демонизироваться при запуске, в то время как для другого эта
опция действует прямо противоположным образом.) В отличие от
конфигурационных файлов, строка запуска не~может включать
полноценных комментариев.
\end{itemize}
\end{document}