LINUX.ORG.RU

Какое назначение директории ~/.local/share/?

 ,


0

2

Вопрос чисто теоретический.

Судя по названию можно подумать, что это какой-то аналог /usr/share/ и /usr/local/share/. По факту это получается пользовательский аналог /var/ только без стандартной внутренней структуры. Так?


Ответ на: комментарий от wandrien

Кстати, может уже придумали, где в хомяке должен быть аналог /var/?

XDG_STATE_HOME=~/.state/, пока не входит в официальный стандарт XDG.

E ★★★
()
Ответ на: комментарий от annulen

Поддерживаю. Просто и изящно.

Программа использует лишь один файл (конфиг)? - .programrc. Срет временными кэшами и тп? - директория .program.

Что здесь еще можно придумывать? Что с этими пациентами вокруг?))

anonymous
()
Ответ на: комментарий от annulen
  1. Там нет ни слова про writable.

  2. Зато есть вот что:

A number of efforts have been made in the past to standardize the layout of home directories, including the XDG Base Directories specification and the GLib conventions on user directory contents. Additional efforts in this direction are possible in the future. To accomodate software which makes use of these specifications and conventions, distributions may create directory hierarchies which follow the specifications and conventions. Those directory hierarchies may be located underneath home directories.

wandrien ★★
()
Ответ на: комментарий от annulen

Вот поэтому я и считаю, что FHS с его подходом «какаем в $HOME», что XDG с его подходом «какаем в ~/.config/, ~/.cache/ и ~/.local/» – одного поля ягоды.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Только реестр, только хардкор! Виндовс рулит, линакс сакс

annulen ★★★★★
()
Ответ на: комментарий от annulen

Таким способом наркоманы из freedesktop создали ещк одну fhs как с пересекающимися назначениями директорий (.icons, .themes, .fonts) так и нет. Двтгая туда сюда эти директории, из корня в .local, из .local в .local/share, и конца этим пляскам не видать в скором времени.

anonymous
()
Ответ на: комментарий от wandrien

Там нет ни слова про writable.

Да, дейтсвительно. Зато есть про дот-файлы и дот-каталоги.

Но если у юзера нет права на запись в хомяк, скорее всего его нет вообще нигде в системе, кроме /tmp разве что, так уж повелось

annulen ★★★★★
()
Ответ на: комментарий от wandrien

Ну хорошо хоть научились кэш в конфиги не класть, а то и такое случалось.

Расскажи об этом Chromium’у.

aquadon ★★★★★
()
Ответ на: комментарий от wandrien

Кстати, может уже придумали, где в хомяке должен быть аналог /var/?

XDG_STATE_HOME=~/.state/, пока не входит в официальный стандарт XDG.

Спасибо. Неплохо!

А ты говоришь не XKCD. Да вот же, форменное XKCD. У меня софт на Vala по умолчанию уже что-то пишет в директорию ~/.var/. Послезавтра в XDG добавят ~/.state/, а этот софт как и писал в ~/.var/, так и продолжит это делать, потому что всем пофиг.

В сухом остатке в корне $HOME форменный XKCD 927: ошмётки FHS, логи иксов, history-файлы, ~/.config/, ~/.local/, ~/cache/, ~/.var/, а завтра появится и ~/.state/, который будет дублировать собой ~/.var/.

Скоро шутки про каталог ~/.node_modules/ впору будет переносить на $HOME дистрибутивов Linux.

Я уже чтобы найти какую-то настройку или файл делаю find ~ -name * или grep -Ri "*", потому что в этой помойке найти что-то за разумное время невозможно, проще минуту «пошуршать хомяком».

EXL ★★★★★
()
Ответ на: комментарий от EXL

Вот, а если бы был только FHS и все ему четко следовали, то гемора было бы на порядок меньше

annulen ★★★★★
()
Ответ на: комментарий от wandrien
~/cfg/
~/lib/
~/var/

Я бы проголосовал за банальное, но удобнейшее:

~/.data/app1/config/
~/.data/app1/cache/
~/.data/app1/log/
~/.data/app1/plugin/
~/.data/app1/state/

~/.data/app2/config/
~/.data/app2/cache/
~/.data/app2/log/
~/.data/app2/plugin/
~/.data/app2/state/

~/.data/app3/config/
~/.data/app3/cache/
~/.data/app3/log/
~/.data/app3/plugin/
~/.data/app3/state/

В хомяке нет помойки, в единственной пользовательской директории – удобная для поиска структура.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Впечатление, что тебе просто поныть захотелось сегодня.

Ну исправят эти полтора приложения, которые используют .var, на использование переменной окружения как положено. А если не исправят, значит они нахрен не нужны.

Не вижу никакого бардака. Есть основная масса приложений, которые следуют мейнстриму через тулкиты. Есть некоторое количество монструозных приложений, до которых всё доходит годами, если вообще доходит. И есть кучка отщепенцев.

Всегда так было, во всех областях.

wandrien ★★
()
Ответ на: комментарий от EXL

а завтра появится и ~/.state/, который будет дублировать собой ~/.var/

Стандарт XDG требует только наличия переменных XDG_* и предлагает дефолтные значения. Пользователь может их переопределять самостоятельно.

Когда (если) добавят в стандарт, сделаешь в профайле export XDG_STATE_HOME=~/.var и проблема исчезнет.

BTW, беглый поиск ничего не нашёл такого про Vala. Скорее всего, это проблемы конкретного приложения и от языка не зависят. Можно потыкать авторов лицом в XDG.

E ★★★
()
Ответ на: комментарий от EXL

Этот сетап ты и сейчас можешь себе настроить. Гугли XDG и переопределяй переменные в профайле. Любой XDG-совместимый софт их подхватит автоматически.

UPD: А нет, пардон, я слишком поверхностно просмотрел твою хотелку. По умолчанию XDG такое не поддерживает, хотя отдельные xdg библиотеки можно легко допилить под себя, они обычно возвращают что-то вроде xdg.save_data_path('myprogname'), xdg.save_config_path('myprogname').

E ★★★
()
Последнее исправление: E (всего исправлений: 1)
Ответ на: комментарий от E

Он хочет категорию и имя приложения поменять местами.

Через XDG не получится, будет лишний элемент пути: приложение/категория/приложение.

wandrien ★★
()
Ответ на: комментарий от E

BTW, беглый поиск ничего не нашёл такого про Vala. Скорее всего, это проблемы конкретного приложения и от языка не зависят. Можно потыкать авторов лицом в XDG.

Кроме Vala – банальный Flatpak:

https://github.com/flatpak/flatpak/issues/1651#issuecomment-396370107

Вот лучше потыкать Matthias’а Clasen’а. Почему-то когда случается какая-то лажа, всегда всплывает именно его имя.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Наверное, они перенесут в ~/.state? И другие программы перенесут иначе какая-то лажа получается c ~/.local/share…

zb2
() автор топика
Ответ на: комментарий от zb2

Там по коммиту выше планируется дефолт не в ~/.state, а в ~/.local/state. Что еще лучше. Пока получается такая схема:

~/.config
~/.cache
~/.local/bin
~/.local/shared
~/.local/state

Неплохо.

wandrien ★★
()
Ответ на: комментарий от zb2

Еще не забывать про "$XDG_RUNTIME_DIR" для всяких сокетов и runtime-мусора. Он по дефолту вне хомяка, но тоже у каждого пользователя свой.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 2)

~/.local/share — это такой ~/.config, в который юзеру лезть нужно крайне редко. Большинство приложений там складывает всякое автоматически сгенерированное, но не предназначенное для сноса, как, например то, что складывается в ~/.cache.

Вообще, ~/.local/share — это скорее аналог /var/db, чем аналог /usr/share (но и это тоже).

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

XDG специфицировали её как предназначенную для «data files», но забыли уточнить «data files в смысле как /usr/share» или «data files в смысле как /var». Авторы приложений решили, что оба варианта правильные.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Авторы приложений решили, что оба варианта правильные.

Я-то в курсе, а топикстартер как бы не. ☺

Ну и да, раз уж я завёл про /var/db, стоит дообъяснить…
/usr/share — это статические “data files”, /var/dbдинамические, они могут быть сгенерированы/изменены в рантайме. Так как юзеру такие read-only данные в хомяке не нужны (зачем, если они уже есть в /usr/share), то резонно юзать эту диру в качестве пользовательского /var/db.

mord0d ★★★★★
()
Ответ на: комментарий от anonymous

Программа использует лишь один файл (конфиг)? - .programrc. Срет временными кэшами и тп? - директория .program. Что здесь еще можно придумывать? Что с этими пациентами вокруг?))

Это просто и изящно пока не сделаешь ls -a ~. Зачем мне вся эта дрисня вперемешку с МОИМИ файлами и директориями? Почему оно все не может лежать в одной-двух директориях, которые легко бэкапить?

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от EXL

Я бы проголосовал за банальное, но удобнейшее:

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

Im_not_a_robot ★★★★★
()

Приведу пример полезности директории ~/.local лично для себя:

  1. В ~/.local/share/applications можно переопределить системные .desktop файлы или добавить свои;

  2. В ~/.local/share/mime можно добавить свой mime-тип, например у меня там определен mime для org-mode файлов;

  3. В ~/.local/share/icons можно переопределить или добавить иконки для системных и своих приложений.

  4. ~/.local/share/fonts/ добавить шрифты.

Все это может делать пользователь не меняя системных файлов. Всем этим лично я пользуюсь.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Есть еще просто ~/.fonts/. Я что-то и не думал проверить, что ~/.local/share/fonts/ будет работать. А ведь должен, всё логично.

Хорошо, что эти legacy каталоги с data-файлами в корне хомяка теперь можно в подкаталог спрятать.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)

Туда можно всё дерьмо сливать, не засирая $HOME, например, у меня туда кладётся weatherreport с wttr.in, там же лежит симлинк для обоины(сижу с dwm), ну и мои var файлы, то бишь, конкретно для юзера(меня). С помощью системной переменной $XDG_DATA_HOME можно напихать туда файлов(те же обои, etc.), и использовать их в своих скриптах.

Zbitya
()

Я вот искренне не понемаю, отчего просто не воспроизвели стандартную иерархию в ~/. local, share и bin там уже есть. Сколько киловтф бы это сэкономило для народного хозяйства.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Так она и воспроизведена. Но нужна больше для переопределения системных файлов.

Вот, скажем, поставляемый с дистрибутивом .desktop файл для программы htop выглядит так:

<...>
Exec=htop
Terminal=true
<...>

А мне бы хотелось, чтобы окно терминала, в котором он запускается имело имя htop, плюс хорошо бы использовать отдельный профиль gnome-terminal с другой геометрией и более компактным шрифтом. Можно поменять системный файл, который сломается при обновлении. Я просто копирую файл /usr/share/applications/htop.desktop в ~/.local/share/applications/ и переопределяю нужные строчки:

Exec=gnome-terminal --title "htop" --profile "htop" -- htop
Terminal=false

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

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Im_not_a_robot

она и воспроизведена

Где var, где lib, почему etc хер пойми где, за пределами корня иерархии?

Кстати, идея — сделать ~/.local/etc симлинком на ~/.config.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Ну тут – да, согласен. Видимо пошли на поводу у юзер-френдли, для которых .configs звучит гораздо понятней, чем .local/etc. Но откровенно говоря, если отбросить традиции, то лучше бы бессмысленное /etc переименовать в /configs или /cfg, если вы любитель краткости – сразу понятное любому человеку. А /etc оставить симлинком.

«etc», если кто не знает, это сокращение от «etcetera», которое означает буквально «и так далее».

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Im_not_a_robot

Через переменные окружения можно сделать .local/etc, не вопрос. В этом и сила.

бессмысленное /etc переименовать в /configs

А /usr в /system?

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

Так что /etc — это надолго.

wandrien ★★
()
Ответ на: комментарий от Im_not_a_robot

.configs звучит гораздо понятней, чем .local/etc

Лучше безобразно, но единообразно %)

Nervous ★★★★★
()
Ответ на: комментарий от pavlick

По-моему, вместо XDG надо было сделать директорию в HOME вроде user_data, и обязать тильду, cd и все возможные варианты вести в нее, а софт пускай гадил бы в хомяк по сложившейся традиции. Один хрен хомяк чистым не будет никогда - скрипты, .config и смежные.

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

С другой же стороны - как вобще скрытые файлы могут мешать? Постоянно просматривать HOME с ls -a как-то нелепо… Но и постоянное удерживание в голове мысли, что в папке может лежать ещё что-то ненужное, раздражает.

PS: Интересно в какой из операционных систем скрытые файлы появились первыми. Сам замысел прямо-таки не фонтан.

cpio
()
Ответ на: комментарий от cpio

Я в итоге на этом остановился:

pavlick ~ $ cat .bash_profile
...
export CDD=${HOME}/ud
...

pavlick ~ $ cat .bashrc
...
alias cdd="cd ${HOME}/ud"
...

Плюс байндинг в vifm. В хомяке сделал ud. Пусть все эти чушки гадят в хомяк, х с ним. Вроде норм. А как-то загнался, хотел весь софт заставить гадить точно согласно XDG, вдохновился темой XDG даже когда софт не хочет, но забил в конце концов, шибко хлопотно.

pavlick ★★
()
Ответ на: комментарий от E

Почему не /var? Ах, его же отдали flatpak’у)

anonymous
()
Ответ на: комментарий от pavlick

XDG даже когда софт не хочет - это самое настоящее извращение. Столько костылей и хлопот при условии, что программа не всегда запускается по alias’у (иногда по .desktop файлу, иногда через dmenu/rofi/…, иногда из скрипта); и в итоге всё равно создаёт свою злосчастную скрытую говняшку в HOME.

alias cdd="cd ${HOME}/ud"

Слишком много нажатий :) При условии что это папка со всеми личными файлами, используется этот alias наверное частенько; лучше укоротить. Скорее всего alias на заглавную C свободен, cdd<Enter> - 4 нажатия, <Shift>c<Enter> - 3 нажатия. Экономия целых 25%!

cpio
()

я вот случайно заметил что игры из стима устанавливаются в .local/share/Steam/steamapps/common/, но в домашней папке есть и стим .steam/steam/steamapps/common/ и содержимое одинаково, как так? То есть если создать файл в одной папке, он появится и в другой.

ekt85
()
Последнее исправление: ekt85 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.