[devel] XDG Base Directory Specification (part II)

php-coder =?iso-8859-1?q?php-coder_=CE=C1_altlinux=2Eru?=
Ср Июл 20 13:09:44 MSD 2005


    Доброго времени суток!


    Мое первое письмо по поводу этого стандарта от freedesktop.org не
    нашло откликов, когда я некоторое время назад его сюда присылал. И на
    некоторое время я забросил разборки со стандартами этими :)

    По мнению, zerg@ никто не ответил, "потому, что на столько мало кто
    разбирается". Ну что ж. Нет так нет. Буду сам разбираться тогда ;)

    Опять же по совету zerg@ решил начать с минимума. С перевода.
    Действительно, как можно разобраться в стандарте слабо понимая, что
    вообще в нем написано? :))

    Ниже я привожу свой перевод этого небольшого стандарта с
    freedesktop.org, который лежит, как я понял в основе всех остальных
    стандартов.

    Сразу скажу, что английский я знаю плохо. Ничего серьезного в своей
    жизни не переводил и это мой более-менее серьезный опыт перевода
    вообще. Так что не критикуйте сильно ;) В то же время готов принять
    конструктивную критику и помощь ;)

    Для удобства редактирования, я разместил свой перевод в wiki:

    http://www.freesource.info/wiki/Standarts/XDGBaseDirectorySpecification

    Я был бы рад, если бы кто-нибудь поправил меня, чтобы этот документ
    был максимально приближен к реальности :) Для удобства я разбил
    стандарт на абзацы и представил как английский вариант, так и мой
    перевод -- так что в случае чего будет легко сверяться с оригиналом.

    Вот, сам перевод (мои вопросы в конце):



    
                  XDG Base Directory Specification
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Автор: Waldo Bastian <bastian[at]kde[dot]org>
    Переводчик: php-coder <php-coder[at]altlinux[dot]ru>
    Версия: 0.6
    

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

    Основы
    ------
    
    Спецификация XDG Base Directory основывается на следующих концепциях:

    * Существует единственная базовая директория, относительно которой
      должны располагаться файлы с данными, специфичные для пользователя.
      Эта директория определена в переменной окружения $XDG_DATA_HOME.

    * Существует единственная базовая директория, относительно которой
      должны располагаться конфигурационные файлы, специфичные для
      пользователя. Эта директорияопределена в переменной окружения
      $XDG_CONFIG_HOME.

    * Существуют установленные предпочтения, задающие порядок базовых
      директорий, в которых должен производиться поиск
      файлов с данными. Этот установленный набор директорий определен в
      переменной окружения $XDG_DATA_DIRS.

    * Существуют установленные предпочтения, задающие порядок
      базовых директорий, в которых должен производиться поиск
      конфигурационных файлов. Этот установленный набор директорий
      определен в переменной окружения $XDG_CONFIG_DIRS.

    * Существует единственная базовая директория, относительно
      которой должны располагаться несущественные (кэшированные) данные.
      Эта директория определена в переменной окружения $XDG_CACHE_HOME.

    Переменные окружения
    --------------------
    
    $XDG_DATA_HOME определяет базовую директорию, в которой должны
    храниться файлы данных, специфичные для пользователя. Если
    $XDG_DATA_HOME не определена или содержит пустое значение, то по
    умолчанию должно использоваться значение равное $HOME/.local/share.

    $XDG_CONFIG_HOME определяет базовую директорию, в которой должны
    храниться конфигурационные файлы, специфичные для пользователя. Если
    $XDG_CONFIG_HOME не определена или содержит пустое значение, то по
    умолчанию должно использоваться значение равное $HOME/.config.

    $XDG_DATA_DIRS определяет порядок предпочтений для базовых директорий,
    в которых будет произведен поиск файлов с данными, в дополнение к
    $XDG_DATA_HOME. Директории в переменной $XDG_DATA_DIRS должны быть
    разделены двоеточием.

    Если $XDG_DATA_DIRS не определена или содержит пустое значение, то по
    умолчанию должно использоваться значение равное
    /usr/local/share/:/usr/share/.

    $XDG_CONFIG_DIRS определяет порядок предпочтений для базовых
    директорий, в которых будет произведен поиск конфигурационных файлов,
    в дополнение к $XDG_CONFIG_HOME. Директории в переменной
    $XDG_CONFIG_DIRS должны быть разделены двоеточием.

    Если $XDG_CONFIG_DIRS не определена или содержит пустое значение, то
    по умолчанию должно использоваться значение равное /etc/xdg.

    Порядок базовых директорий обозначает их важность; первая директория
    является наиболее важной. Когда одна и та же информация определена в
    нескольких местах, то информация, определенная относительно более
    важной базовой директории, "берет верх". Базовая директория,
    определенная в $XDG_DATA_HOME, считается более важной, чем любая из
    директорий, определенных в $XDG_DATA_DIRS. Базовая директория,
    определенная в $XDG_CONFIG_HOME, считается более важной, чем любая из
    директорий, определенных в $XDG_CONFIG_DIRS.

    $XDG_CACHE_HOME определяет базовую директорию, в которой должны
    храниться несущественные, специфичные для пользователя, файлы. Если
    $XDG_CACHE_HOME не определена или содержит пустое значение, то по
    умолчанию должно использоваться значение равное $HOME/.cache.

    Ссылки на эту спецификацию
    --------------------------
    
    Другие спецификации могут ссылаться на этот документ, определяя
    расположение для файлов с данными, как $XDG_DATA_DIRS/subdir/filename.
    Это подразумевает следующее:

    * Такой файл должен быть установлен в $datadir/subdir/filename,
      где $datadir по умолчанию равно /usr/share.

    * Специфичная для пользователя версия файла с данными может
      быть создана в $XDG_DATA_HOME/subdir/filename, где $XDG_DATA_HOME
      установлена в значение по умолчанию, если $XDG_DATA_HOME не
      определена.

     * Поиск файла с данными должен начинаться с
       ./subdir/filename относительно всех базовых директорий,
       определенных в $XDG_DATA_HOME и $XDG_DATA_DIRS. Если переменная
       окружения не установлена или содержит пустое значение, то вместо
       нее должно использоваться значение по умолчанию для этой
       переменной.

     Спецификации могут ссылаться на этот документ, определяя
     расположение конфигурационного файла, как
     $XDG_CONFIG_DIRS/subdir/filename. Это подразумевает следующее:

     * По умолчанию конфигурационный файл должен быть
       установлен в $sysconfdir/xdg/subdir/filename, где
       $sysconfdir по умолчанию равно /etc.

     * Специфичная для пользователя версия
       конфигурационного файла может быть создана в
       $XDG_CONFIG_HOME/subdir/filename, где
       $XDG_CONFIG_HOME установлена в значение по умолчанию, если
       $XDG_CONFIG_HOME не определена.

     * Поиск конфигурационного файла должен начинаться с
       ./subdir/filename, относительно всех базовых директорий, указанных
       в $XDG_CONFIG_HOME и $XDG_CONFIG_DIRS. Если переменная окружения не
       установлена или содержит пустое значение, то вместо нее должно
       использоваться значение  по умолчанию для этой переменной.

     Если, при попытке записи в файл, директории в которой он должен
     располагаться не существует, то ее следует создать с правами 0700.
     Если же эта директория уже существует, то права на нее не изменять не
     следует. Приложение должно быть готово к случаю, когда файл не может
     быть записан, по причине не существующей директории и когда эта
     директория не может быть создана по каким-либо причинам. В этом
     случае она может сообщить об ошибке пользователю.

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

     Спецификации, которые ссылаются на $XDG_DATA_DIRS или
     $XDG_CONFIG_DIRS должны определять поведение для случая, когда файл
     существует сразу в нескольких базовых директориях. Они могут, к
     примеру, определить, что следует использовать только файл из наиболее
     важной директории, или, как другой пример, они могут определить
     правила для объединения информации из раличающихся файлов.

     EOF


     Теперь хотел бы выяснить следует ли принимать это всерьез и если да,
     то как воплощать? :) Вот, к примеру, мой Флюкс. Я так понимаю, что
     нужно сделать, чтобы:

     - глобальные конфигурационные файлы он хранил в /etc/xdg/fluxbox,
       вместо /etc/X11/fluxbox, как сейчас

     - пользовательские конфигурационные файлы он хранил в
       ~/.config/fluxbox вместо ~/.fluxbox

     - глобальные файлы с данными, так и остаются в /usr/share/fluxbox

     - если он создает какие-то временные файлы, то складывать их в
       ~/.cache/fluxbox

     - обрабатывал ситуацию с недоступностью конфигов, как и описано

     Верно ли я все понял? И можно ли начинать? ;)


     Спасибо за ваше внимание...

-- 
+ php-coder
+ php-coder[at]altlinux[dot]







Подробная информация о списке рассылки Devel