Различия между версиями 5 и 6
Версия 5 от 2008-09-14 12:46:58
Размер: 9512
Редактор: VsevolodKrishchenko
Комментарий:
Версия 6 от 2008-09-14 13:03:37
Размер: 10700
Редактор: VsevolodKrishchenko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 9: Строка 9:
Важным следствием хранения конфигурации в текстовых файлов является возможность использовать стандартный набор утилит для обработки текста, таких как `sed`, `grep` , `tail`, `head`, `cat`. Особенно следует здесь отметить утилиту для автоматической замены в файлах `sed`. Важным следствием хранения конфигурации в текстовых файлов является возможность использовать стандартный набор утилит для обработки текста, таких как `sed`, `grep` , `tail`, `head`, `cat`. Особенно следует здесь отметить утилиту для автоматической замены в файлах `sed`. Остается напомнить, что программы типа !OpenOffice Writer текстовыми редакторами не являются: их принято называть текстовыми процессорами, и работают они с размеченным текстом.
Строка 13: Строка 14:
 * '''Пространство имён --- файловая система'''. Для того, чтобы настройки одной поограммы не путалтись с настройками другой, необходимо использовать пространства имён. В нашем случае пространство имён дает файловая система: зачем множить сущности (некоторую древовидную классификацию настрроек), если дерево каталогов уже есть? В каталоге `/etc` лежат файлы, необходимые для настройки остальной части системы, а пользовательские настройки лежат в каталоге пользователя в файлах и каталогах, имя которых начинается с точки ("."), по-умолчанию пользователю их не видно.
  * '''У каждого пакета --- свои файлы конфигурации'''. Каждый файл принадлежит какому-то одному пакету, и имена подкаталогов в `/etc` соответствуют названиям пакетов, хотя и далеко не всегда с ними точно совпадают. Последний момент связан с тем, что имена каталогов, например `/etc/ssh`, обычно одинаковы для различных unix-подобных систем, а вот имена пакетов определеются внутренней политикой ПСПО и обычно совпадабт с названием программы.
 * '''Гибкость представления --- пишите, что хотите'''. Это приводит к разнообразию форматов: какие-то конфигурации линейны, какие-то --- древовидны, а какие-то вообще являются сценарием языка shell. За этот "зоопарк" часто упрекают unix-системы, но с другой стороны это позволяет выбирать удобный формат под коонкретную задачу.
 * ''Чтение и модификация с использованием разнообразных средств'''. С одной стороны, для ряда задач есть графические конфигураторы программы. В каком-то смысле они удобные, но обычно они делют настройку графического интерфейса и стандартных типовых задач. А каковы должны быть инструменты, которые бы позволили читать и изменять практически любой конфигурационный файл? Поскольку мы договорились, что конфиги представляются в виде текста, то у нас есть способ работы с текстом --- текстовый редактор, в случае, если нет задач автоматизации. Но редактор текста должен обладать не совсем таким набором возможностей, каким должен обладать редактор конфигурационных файлов. При редактировании литературного текста обычно необходимо проверять орфографию, писать и писать, и потом в конце переставить пару абзацев. Когда работаете с конфиг-файлов, элементы разметки или другие синт. единицы служат объектами оперирования, то есть, вы находите секцию, в которой хранится свойство, и изменяете это свойство. Поэтому редактор, который редактирует конфиг, должен быстро производить поиск, модификацию и модификацию автоматическую. типичный пример: заменить имя хоста. Почему бы это не оформить в виде парсера? Некоторые задачи можно решить вручную, но некоторые задачи можно решить машиной, и лучше, чтобы таких задач было как можно больше. И в таких случаях нужны процессоры обработки текста. Поэтому в линуксе есть много программ, которые работают с ФС, с пакетом, которые занимаются с плоской обработкой текста. Именно эти программы и являются инструментом, которые позволяют что угодно делать с настройкой.
'''Пространство имён --- файловая система'''. Для того, чтобы настройки одной поограммы не путалтись с настройками другой, необходимо использовать пространства имён. В нашем случае пространство имён дает файловая система: зачем множить сущности (некоторую древовидную классификацию настрроек), если дерево каталогов уже есть? В каталоге `/etc` лежат файлы, необходимые для настройки остальной части системы, а пользовательские настройки лежат в каталоге пользователя в файлах и каталогах, имя которых начинается с точки ("."), по-умолчанию пользователю их не видно.
Строка 18: Строка 16:
vim, emacs. Сначала надо научиться ими пользоваться, а потом им пользоваться. '''У каждого пакета --- свои файлы конфигурации'''. Каждый файл принадлежит какому-то одному пакету, и имена подкаталогов в `/etc` соответствуют названиям пакетов, хотя и далеко не всегда с ними точно совпадают. Последний момент связан с тем, что имена каталогов, например `/etc/ssh`, обычно одинаковы для различных unix-подобных систем, а вот имена пакетов определеются внутренней политикой ПСПО и обычно совпадабт с названием программы.

'''Гибкость представления --- пишите, что хотите'''. Это приводит к разнообразию форматов: какие-то конфигурации линейны, какие-то --- древовидны, а какие-то вообще являются сценарием языка shell. За этот "зоопарк" часто упрекают unix-системы, но с другой стороны это позволяет выбирать удобный формат под коонкретную задачу.

'''Чтение и модификация с использованием разнообразных средств'''. С одной стороны, для ряда задач есть графические конфигураторы программы. В каком-то смысле они удобные, но обычно они делют настройку графического интерфейса и стандартных типовых задач. А каковы должны быть инструменты, которые бы позволили читать и изменять практически любой конфигурационный файл? Поскольку мы договорились, что конфиги представляются в виде текста, то у нас есть следующие инструменты для работы с текстом:
  * текстовый редактор (если нет задачи автоматизации изменений);
  * утилиты для обработки текста и работы с файлами и язык shell в случае необходимости или желания автоматизировать изменения;
  * интерпретаторы языков программирования (awk, perl, python) для более сложных операций с файлами конфигурации;
  * наконец, с текстовыми файлами конфигурации может работать специализированная программа на любом языке программирования (к таким относится, например, графический конфигуратор KDE).

Таким образом, в линуксе есть много программ, которые работают с файловой системой и с содержимым файлов, и именно эти программы и являются инструментом, который позволяет выполнять с текстовыми настройками любые манипуляции, в том числе автоматически.

## Но редактор текста должен обладать не совсем таким набором возможностей, каким должен обладать редактор конфигурационных файлов. При редактировании литературного текста обычно необходимо проверять орфографию, писать и писать, и потом в конце переставить пару абзацев. Когда работаете с конфиг-файлов, элементы разметки или другие синт. единицы служат объектами оперирования, то есть, вы находите секцию, в которой хранится свойство, и изменяете это свойство. Поэтому редактор, который редактирует конфиг, должен быстро производить поиск, модификацию и модификацию автоматическую. типичный пример: заменить имя хоста. Почему бы это не оформить в виде парсера? Некоторые задачи можно решить вручную, но некоторые задачи можно решить машиной, и лучше, чтобы таких задач было как можно больше. И в таких случаях нужны процессоры обработки текста.

##vim, emacs. Сначала надо научиться ими пользоваться, а потом им пользоваться.

Текстовые конфиги

Проблема хранения и редактирования конфигурации в ОС Линукс до сих пор это решается старым, проверенным в unix-системах, способом: любой файл настроек --- человекочитаемый текст. Один из вопросов, который возникает в процессе диалога с гуру --- а что такое плоский текст? Когда говорят про текстовый файл, то имеет в виду файл в виде плоского текста (англ. plain text). Если текст --- некий поток символов, то плоский текст хранит только собственно информацию, а размеченный текст хранит и некотрую метаинформацию о, например, их внешнем виде. Таким образом, когда вы видете содержимое плоского текстового файла, то вы видите именно то, что должны видеть. Размеченный же текст можно показывать в виде плоского текста и в формате представления. Когда говорят, что любой файл является текстовым, то это значит, что он всегда доступен как текст плоский, то есть его можно редактировать текстовым редактором.

В качестве отступления напомним, какие в ПСПО бывают текстовые редакторы. Все текстовые редакторы можно резделить на:

  • классические редакторы (vi, vim, emacs), которые могу раобоать как в консоле, так и в графическом окружении;
  • современные редакторы, требующие графической среды (например, редактор kate для среды KDE);
  • простое редакторы для эпизодического использования (в ПСПО входит простой редактор mcedit).

Важным следствием хранения конфигурации в текстовых файлов является возможность использовать стандартный набор утилит для обработки текста, таких как sed, grep , tail, head, cat. Особенно следует здесь отметить утилиту для автоматической замены в файлах sed. Остается напомнить, что программы типа OpenOffice Writer текстовыми редакторами не являются: их принято называть текстовыми процессорами, и работают они с размеченным текстом.

Опишем теперь общие концепции системы настроек в unix-подобных системах.

Пространство имён --- файловая система. Для того, чтобы настройки одной поограммы не путалтись с настройками другой, необходимо использовать пространства имён. В нашем случае пространство имён дает файловая система: зачем множить сущности (некоторую древовидную классификацию настрроек), если дерево каталогов уже есть? В каталоге /etc лежат файлы, необходимые для настройки остальной части системы, а пользовательские настройки лежат в каталоге пользователя в файлах и каталогах, имя которых начинается с точки ("."), по-умолчанию пользователю их не видно.

У каждого пакета --- свои файлы конфигурации. Каждый файл принадлежит какому-то одному пакету, и имена подкаталогов в /etc соответствуют названиям пакетов, хотя и далеко не всегда с ними точно совпадают. Последний момент связан с тем, что имена каталогов, например /etc/ssh, обычно одинаковы для различных unix-подобных систем, а вот имена пакетов определеются внутренней политикой ПСПО и обычно совпадабт с названием программы.

Гибкость представления --- пишите, что хотите. Это приводит к разнообразию форматов: какие-то конфигурации линейны, какие-то --- древовидны, а какие-то вообще являются сценарием языка shell. За этот "зоопарк" часто упрекают unix-системы, но с другой стороны это позволяет выбирать удобный формат под коонкретную задачу.

Чтение и модификация с использованием разнообразных средств. С одной стороны, для ряда задач есть графические конфигураторы программы. В каком-то смысле они удобные, но обычно они делют настройку графического интерфейса и стандартных типовых задач. А каковы должны быть инструменты, которые бы позволили читать и изменять практически любой конфигурационный файл? Поскольку мы договорились, что конфиги представляются в виде текста, то у нас есть следующие инструменты для работы с текстом:

  • текстовый редактор (если нет задачи автоматизации изменений);
  • утилиты для обработки текста и работы с файлами и язык shell в случае необходимости или желания автоматизировать изменения;
  • интерпретаторы языков программирования (awk, perl, python) для более сложных операций с файлами конфигурации;
  • наконец, с текстовыми файлами конфигурации может работать специализированная программа на любом языке программирования (к таким относится, например, графический конфигуратор KDE).

Таким образом, в линуксе есть много программ, которые работают с файловой системой и с содержимым файлов, и именно эти программы и являются инструментом, который позволяет выполнять с текстовыми настройками любые манипуляции, в том числе автоматически.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

VsevolodKrishchenko, VsevolodKrishchenko, VsevolodKrishchenko


CategoryLectures CategoryCmc CategoryUneex

LecturesCMC/LinuxSoft2007/09/03TextConfigs (последним исправлял пользователь VsevolodKrishchenko 2008-10-04 11:15:44)