Обнаружил, что переменные окружения `XDG_DATA_DIRS` и `XDG_CONFIG_DIR` не инициализированы на чистой максимально полной установке ALTLinux Workstation p9 и p10 со всеми обновлениями. И на StarterKit MATE p10 тоже, но это не так важно. Для сравнения состояние этих переменных на свежей установке Ubuntu MATE 20.04 LTS такое: ``` $ export | grep -E "XDG_(CONFIG|DATA)" declare -x XDG_CONFIG_DIRS="/etc/xdg/xdg-mate:/etc/xdg" declare -x XDG_DATA_DIRS="/usr/share/mate:/usr/local/share:/usr/share:/var/lib/snapd/desktop" ``` В этом контексте Snap и Flatpak не обсуждаю, т.к. оба работоспособны в p10, а в p9 для второго в MATE достаточно выполнить `sudo chmod +x /etc/profile.d/flatpak.sh` (обход https://bugzilla.altlinux.org/38397). Определены переменные в UM с нужным содержимым в следующих конфигурационных файлах: ``` $ grep -Er "XDG_(CONFIG|DATA)_DIR.*local" /etc/ 2>/dev/null /etc/profile.d/apps-bin-path.sh: export XDG_DATA_DIRS="/usr/local/share:/usr/share" /etc/openal/alsoft.conf:# $XDG_DATA_DIRS/openal/hrtf (defaults to /usr/local/share/openal/hrtf and /etc/X11/Xsession.d/55mate-session_materc: XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/ /etc/X11/Xsession.d/60x11-common_xdg_path:DEFAULT_XDG_DATA_DIRS='/usr/local/share/:/usr/share/' ``` Текущая реализация в ALT приводит к потере ярлыков из `/usr/local/share/applications`.
На Сизифе точно также.
Они не должны быть инициализированы. У них есть умолчательные значения по спецификации.
Попробуйте сами. То есть в Debian их зря уже лет 5 инициализируют?! Текущая реализация в ALT приводит к потере ярлыков из `/usr/local/share/applications`. Инициализируйте, пожалуйста, эти переменные нормально.
Привожу полный разбор ситуации. Прошу отнестись серьезно и повторить в результате решение, применяемое в Debian/Ubuntu MATE. # Состояние 0 На свежей установке ALW у вас получаются неопределенными обе переменные `XDG_DATA_DIRS` и `XDG_CONFIG_DIR`. Вы цитируете спецификацию в том аспекте, что среда MATE DE, поставляемая по умолчанию, увидит, что переменные пустые, и сама заполнит их значениями по умолчанию в виде `XDG_CONFIG_DIRS="/etc/xdg/xdg-mate:/etc/xdg"` и `XDG_DATA_DIRS="/usr/share/mate:/usr/local/share:/usr/share"`. Это правильно, но лишь отчасти. Стоит в процесс переопределения этих переменных включиться другому DE - и вся эта идея благополучно рассыпется. # Состояние++ Доустановка пакета `kde5-profile` приведет к таким значениям: ``` $ export | grep -E "XDG_(CONFIG|DATA)" declare -x XDG_CONFIG_DIRS="/etc/kf5/xdg:/etc/xdg" declare -x XDG_DATA_DIRS="/usr/share/kf5:/usr/share" ``` ^^^ в выводе выше обратите внимание на отсутствие в переменной `XDG_DATA_DIRS` директорий `/usr/share/mate` и `/usr/local/share`. То есть часть директорий уже потерялась. # Состояние++ Доустановка пакета `flatpak` приведет к таким значениям: ``` $ export | grep -E "XDG_(CONFIG|DATA)" declare -x XDG_CONFIG_DIRS="/etc/kf5/xdg:/etc/xdg" declare -x XDG_DATA_DIRS="/usr/share/kf5:/home/$USER/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" ``` ^^^ в выводе выше в переменной `XDG_DATA_DIRS` появилась директория `/usr/local/share`, но `/usr/share/mate` по-прежнему отсутствует. # Состояние++ Доустановка пакета `snapd` приведет к таким значениям: ``` $ export | grep -E "XDG_(CONFIG|DATA)" declare -x XDG_CONFIG_DIRS="/etc/kf5/xdg:/etc/xdg" declare -x XDG_DATA_DIRS="/usr/share/kf5:/home/$USER/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop" ``` ^^^ в выводе выше в переменной `XDG_DATA_DIRS` есть директория `/usr/local/share`, но `/usr/share/mate` по-прежнему отсутствует. # Вывод Вы не можете предугадать поведение реального пользователя ALTW, поэтому, пожалуйста, просто повторите решение Debian/Ubuntu с инкрементным дозаполнением указанных переменных. Значения по умолчанию должны отражать специфику рабочего стола, установленного по умолчанию, т.е. для ALW с MATE это `XDG_CONFIG_DIRS="/etc/xdg/xdg-mate:/etc/xdg"` и `XDG_DATA_DIRS="/usr/share/mate:/usr/local/share:/usr/share"`. На присутствии директории `/etc/xdg/xdg-mate` я не настаиваю, похоже что в ALT (да и Debian) нет пакетов с файлами в этой директории.
(Ответ для Norbert X на комментарий #3) > Попробуйте сами. То есть в Debian их зря уже лет 5 инициализируют?! Это не запрещено. > Текущая реализация в ALT приводит к потере ярлыков из > `/usr/local/share/applications`. Это личная пробема того, кто туда их кладёт.
Вы не можете предугадать поведение реального пользователя ALTW, поэтому, пожалуйста, просто повторите решение Debian/Ubuntu с инкрементным дозаполнением указанных переменных. Значения по умолчанию должны отражать специфику рабочего стола, установленного по умолчанию, т.е. для ALW с MATE это `XDG_CONFIG_DIRS="/etc/xdg/xdg-mate:/etc/xdg"` и `XDG_DATA_DIRS="/usr/share/mate:/usr/local/share:/usr/share"`. На присутствии директории `/etc/xdg/xdg-mate` я не настаиваю, похоже что в ALT (да и Debian) нет пакетов с файлами в этой директории.
Прошу еще раз внимательно прочитать комментарий 4 (https://bugzilla.altlinux.org/show_bug.cgi?id=43236#c4) и сделать как там написано. В Ubuntu MATE (где я вхожу в команду и делаю QA) мы бы такого отношения к пользователем не допустили. Если вы будете продолжать игнорировать возможные проблемы сосуществования сред рабочего стола, то ALTLinux дальше поликлиник не пойдет, универсальной конкурентносбособной импортозамещающей системой не станет. Поэтому, просто сделайте нормально, как в Ubuntu/Debian.
Все необходимые вам изменения на вашей системе вы можете сделать самостоятельно.
Дефолты должны быть правильными. Просто реализуйте их. Я этот баг 3 вылавливал. Сделайте нормально для людей.
Дефолты должны быть правильными. Просто реализуйте их. Я этот баг 3 дня вылавливал. Сделайте нормально для людей.
Многократное упрямое переключение бага в RESOLVED NOTABUG считаю неконструктивным. Я 18 лет администрирую системы Linux, 10 лет использую MATE, 3 года QA в Ubuntu MATE, значит что-то знаю... Два последних момента добавляю: 1. В SimplyLinux у вас все нормально сделано, там переменные не пустые. 2. Для систем с MATE предлагаю разместить скрипт по пути /etc/profile.d/mate, решающий проблему, одной командой это можно сделать так: ``` cat << \EOF | sudo tee /etc/profile.d/mate.sh if [ "$DESKTOP_SESSION" == "mate" ]; then if [ -z "$XDG_DATA_DIRS" ]; then XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/ else XDG_DATA_DIRS=/usr/share/mate:"$XDG_DATA_DIRS" fi export XDG_DATA_DIRS if [ -z "$XDG_CONFIG_DIRS" ]; then export XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg fi fi EOF sudo chmod +x /etc/profile.d/mate.sh ``` За основу скрипта взял https://sources.debian.org/src/mate-session-manager/1.26.0-1/debian/55mate-session_materc/?hl=17#L17 и некоторые строки из https://git.launchpad.net/ubuntu/+source/xorg/tree/debian/local/Xsession.d/60x11-common_xdg_path?h=ubuntu/focal . Ожидаю включения скрипта выше в дистрибутивы с MATE. П.С. Если я не учел какие-то особенности ALTLinux, и скрипт нужно переместить в другое место по типу /etc/xdg/mate/xinitrc или добавить какие-то еще переменные, то прошу меня извинить, переместите тогда куда следует и поправьте по месту.