muhas 15.03.2010 15:02

Я рекомендуюВсе пользовательский конфиги в одном каталоге

Не так давно на welinux в комментариях к одному из постов состоялась беседа о том что хорошо бы хранить все конфиги не в ~/ а в определенном каталоге. Мало того что кому-то это хорошо так ещё и стандарт такой имеется. Согласно этому стандарту все пользовательские настройки должны храниться в переменной $XDG_CONFIG_HOME, а если она не установлена то в каталоге ~/.config.
Однако, по разным причинам, многими программами этот стандарт не поддерживается.

На помощь таким программам приходит LD_PRELOAD-able библиотека libetc с помощью которой любая попытка открыть dot-файл (файл с точкой в начале) перенаправляется в $XDG_CONFIG_HOME т.е. конфиги всех программ можно хранить в папке определенной стандартом. Библиотека достаточно старая, и я удивлен почему о ней знает не так много людей

Для использования достаточно экспортировать несколько переменных
1
2
export LD_PRELOAD=libetc.so.0 # загружаем библиотеку
export LIBETC_BLACKLIST=/bin/ls:/bin/mv:/bin/cp:/bin/ln:/usr/bin/find:/bin/rm # на эти программы внимания не обращать

Ну и XDG_CONFIG_HOME можно выставить.

После сих нехитрых манипуляций пути будут транслироваться из ~/.* в $XDG_CONFIG_HOME/* (~/.config/*)

Более подробно о использовании библиотеки можно прочитать в её README файле

Домашняя страничка libetc

Заметки аскетичного гика


Тэги: libetc xdg конфиг
+ 25 -
Похожие Поделиться

mrded 15.03.2010 15:09 #
ваще не пойму, как народ догадался тупо в ~/ все хламить..
SIO 15.03.2010 15:15 #
Не знаю, почему вам это не нравится, а по мне так вполне удобно. Скрытые файлы глаза не мозолят, зато если надо поредактировать - писать на пару символов меньше
muhas 15.03.2010 15:22 #
некоторых вот линуксовое расположения софта беспокоит (привет, gobolinux!)

так что каждому свое ^_^
SIO 15.03.2010 15:28 #
Ага, вместо решения реальных проблем все тянутся переписывать какие-никакие, а стандарты... Знаю, сам такой. Правда, не уверен, что в FHS упомянуто, где именно внутри хомяка все это барахло должно валяться =)
muhas 15.03.2010 15:49 #
в FHS вообще многого не пишется. а xdg не только о расположении конфигов, а ещё о пользовательском share (загляни в ~/.local/), менюхах и прочем...
mrded 15.03.2010 15:14 #
а все ~/.* файлы сами в ~/.config/* перемеятятся, или придется вручную перекидывать?
muhas 15.03.2010 15:20 #
вручную
mrded 15.03.2010 17:28 #
вот попробовал на ~/.Skype
перенес ее в ~/.config/

скайп при запуске предлагает завести новую учетную запись. че я не так сделал?
muhas 15.03.2010 17:32 #
~/.config/Skype
т.е переносить без точки.
хотя может сама либа так работает
predator 16.03.2010 00:38 #
в README написано, что либа не работает со статически собранными программами
bosha 15.03.2010 15:38 #
И кто там орал что XDG стандарты не нужны? Со мной же кажется кто-то спорил, или может были ещё споры? ?
muhas 15.03.2010 15:48 #
ну пусть буду я ^_^
я всегда утверждал и буду утверждать что они могут быть кому-то действительно не нужны =) (правда в основном про XDG_CONFIG_HOME)
ведь если я хочу в ~/ хранить то XDG_CONFIG_HOME=$HOME но тогда это будут уже не дотфайлы, а обычные и сие есть непростительная глупость
bosha 15.03.2010 16:15 #
В чём же глупость? Мне лично, куда проще когда в ~/.config. Конце концов можно cd .config сделать, и будет заметно удобнее :)
muhas 15.03.2010 16:20 #
В чём же глупость?
в том что у тебя в ~/.config не скрытые файлы а при XDG_CONFIG_HOME=$HOME в хомяке будут конфиги не скрытые - а это как-то некузяво
bosha 15.03.2010 16:46 #
Я вообще не понял о чём ты пишешь. Давай уже перестанем, а? :)
wiz 15.03.2010 16:01 #
А при загрузке сразу на всю систему её можно повесить? Или хотя бы на своего юзера, а не только на запускаемое из терминала.
muhas 15.03.2010 16:05 #
ну в логин шеле экспортируй и всё после логина пойдет как надо. а на всех тоже можно где-нить в rc.local прописать если
opium_inside 15.03.2010 16:42 #
а /etc/environment для кого?
muhas 15.03.2010 16:53 #
логично. я просто по привычке всё что до логина в rc.local пихаю =)
TiGR 15.03.2010 16:52 #
Я одного не понимаю - почему по дефолту это не используется?
muhas 15.03.2010 16:59 #
кому-то видимо нафиг не здался стандарт xdg ^_^
greatperson 15.03.2010 17:26 #
А можно глупый вопрос? Как заполучить эту библиотеку, куда её положить? Есть ли готовый пакетик для Убунты?
muhas 15.03.2010 17:33 #
для убунты не знаю, длф archlinux yaourt -S libetc и дальше export LD_PRELOAD...
mrded 15.03.2010 18:16 #
качаешь архив, распаковываешь.
make
make install
Shtsh 15.03.2010 21:15 #
вместо make install используй checkinstall
digiwhite 15.03.2010 21:19 #
Соберите уже deb.
booley 16.03.2010 14:41 #
Enjoy :D
mrded 16.03.2010 00:25 #
я из README скопировал:)
kstep 15.03.2010 20:06 #
Сделал дебиан пакет для этой либы (по ссылке пост в моём блоге с выложенным пакетом). Это первый деб-пакет в моей жизни, так что больно не бейте в случае чего =)
digiwhite 15.03.2010 21:34 #
Рад, что и мой гигантский пост пригодился ;).
digiwhite 15.03.2010 21:58 #
Если есть желание, может положить себе на хостинг amd64 deb пакеты:
digiwhite 15.03.2010 22:07 #
dev пакет убрал. Ненужен он нафик. И не прописывал никаких пост инсталляционных скриптов. Вот :)
kstep 16.03.2010 13:37 #
Добавил. Спасибо!
wiz 16.03.2010 17:11 #
а как на такие примочки реагирует wine например?
muhas 17.03.2010 00:12 #
также как и все =)

ты попробуй, небойся, ничего страшного не произойдет. если опасаешся то просто в консоли експорт LD_PRELOAD сделай, а потом с консоли этой и запускай для проверки а с других всё по старому будет (если не потомки этой)
Ardling 31.03.2010 09:39 #
клево! Спасибо за наводку. Давно о таком думал, а то весь хоум завален дотпапками.