Вопрос или проблема
Только что обновил Ubuntu до версии 16.04 и впервые пробую snap-пакеты.
Мне понадобился meshlab для просмотра некоторых stl-файлов. Столкнулся с проблемой входа в систему через p-i-t-n. Обнаружил, что установка snap-пакетов через командную строку не требует входа в систему. Сделал:
sudo snap install meshlab
и вуаля, meshlab установлен, входа через p-i-t-n не было. Работает нормально из командной строки. Однако программа не отображается в лаунчере. Почему так? Snap-пакеты не отображаются в лаунчере? Как это исправить?
Если вы используете zsh, директории snap binary и desktop не будут автоматически добавлены в ваши переменные окружения. Чтобы решить эту проблему, я добавил следующую строку в /etc/zsh/zprofile (взято из Arch):
emulate sh -c 'source /etc/profile'
Это обработает ваш файл /etc/profile с эмуляцией bash, который, в свою очередь, подключает /etc/profile.d/* и устанавливает необходимые пути PATH и т.д.
Чтобы добавить только директории snap в ваш путь, без включения остальных настроек profиля bash по умолчанию:
emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'
Скопируйте ярлыки приложений из /var/lib/snapd/desktop/applications/
в /usr/share/applications/
Пример:
sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/
Мне пришлось сделать это на GalliumOS 3.0 (на основе Xubuntu)
Для меня это также связано с комбинацией Wayland/ZSH под Ubuntu 18.04 – хотя /var/lib/snapd/desktop
указан в переменной XDG_DATA_DIRS
(это выполняется с помощью /etc/profile.d/apps-bin-path.sh
), лаунчер не распознает приложения из этой папки.
Быстрое решение – это создание символьной ссылки на нужные файлы desktop, например:
ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications
Это встроено в систему snap, но вам нужно добавить ссылку в вашу панель. Чтобы запустить программу, введите
snap run meshlab
как только она запустится, щелкните правой кнопкой мыши на значке и выберите “добавить на панель”.
На Kubuntu 18.04 решением для меня было добавление
export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"
в пользовательский файл, например, snap-apps.sh
в ~/.config/plasma-workspace/env
. Но это применимо только к Plasma 5 и, возможно, уже исправлено в Ubuntu 18.10.
Как уже упоминалось в ответе dsager, стандартный /etc/profile.d/apps-bin-path.sh
, по-видимому, не работает.
Мне помогла команда
ln -s /var/lib/snapd/desktop/applications ~/.local/share/applications/snap
Эта команда создает ссылку на папку с ярлыками приложений snap в мою локальную папку. Теперь я могу запускать snap приложения, как и другие.
Snap-пакеты не отображаются в лаунчере?
Они отображаются, если snap содержит корректные .desktop файлы. Только у Meshlab’s meshlabserver
есть корректный .desktop файл (и действительно, он отображается в моем лаунчере). Однако meshlab
.desktop файл пытается выполнить meshlab.meshlab
, тогда как должен использовать meshlab
. В результате он не отображается.
Как это исправить?
Если вы выполните snap info meshlab
, вы увидите контактную информацию издателя. Я предлагаю вам сообщить им о проблеме. До тех пор, вы всегда можете запускать meshlab
из командной строки или создать свой собственный .desktop файл для него.
Я не смог прокомментировать чужой пост. Однако это чтобы добавить к ответу dsager, который помог мне на Fedora 28 (насколько я могу судить, используется Wayland)
Я добавил следующий фрагмент в свой ~/.bash_profile, чтобы создать ссылки на каждый файл в /var/lib/snapd/desktop/applications при входе в систему. Аналогично, это можно изменить для удаления ссылок для приложений, которых больше не существует, изменив пути в строках for и if, затем заменив ln на rm.
for i in /var/lib/snapd/desktop/applications/*.desktop; do
if [ ! -f ~/.local/share/applications/${i##*/} ];then
ln -s /var/lib/snapd/desktop/applications/${i##*/} ~/.local/share/applications/${i##*/};
fi;
done
Существует, вероятно, множество других способов достичь этого, но это работает.
Чтобы запустить Meshlab из вашего списка приложений, вам нужно с терминала выполнить snap run meshlab
и остановить его, тогда вы увидите Meshlab в своем списке приложений
Snap бинары хранятся в /snap/bin
, по крайней мере, в Debian 10 (buster). Добавьте директорию в $PATH
и перезагрузите bash профайл, ~/.bashrc
.
echo -n "export PATH=/snap/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
Та же ситуация с blender.
snap run blender
работает, однако проблему не решает.
Мне пришлось скопировать blender.desktop
из /snap/blender/current/blender.desktop
в /usr/share/applications
(с sudo
) и тогда все решилось: blender отображается в меню gnome и nautilus ассоциирует его с .blend
файлами.
Похоже, что это какая-то недоработка между snaps и gnomes.
Возможно, нам нужен “снаппи” gnome (или это гномистый snap ;^).
На моей машине все установленнные snapы отображаются в лаунчере только после выхода из системы и нового входа. Я только что установил Krita и Standard Notes. Вышел из системы и снова вошел, и они появились в лаунчере. То же самое со Spotify.
У меня была проблема, что после установки zsh ни один из моих snap-пакетов не отображался в стартовом меню или на Latte Dock в KDE (никакие приложения не отображались, хотя они существовали).
Что помогло – это один из ответов сверху.
Я сделал следующее:
sudo cp /var/lib/snapd/desktop/applications/* /usr/share/applications/
Возможно, вам нужно будет перезагрузить компьютер после этого, чтобы приложения отобразились.
В моем случае, впервые, editor Kate установленный через snap на Mint, показывает иконку в меню лаунчера и на панели запуска.
Но иконка исчезает после недавнего автоматического обновления snap. Следуя ответу H2onvety, я попробовал отредактировать его desktop файл с помощью редактора меню, обнаружил, что он указывает на старую версию kate editor, которой больше нет в системе (Icon=/snap/kate/158/meta/gui/icon.png
). Тогда я изменил его на Icon=/snap/kate/current/meta/gui/icon.png
, и иконка в меню лаунчера вернулась, отсоединив и повторно прикрепив ее на панель, я исправил проблему неотображения иконки в панели запуска.
Я столкнулся с той же проблемой на Ubuntu 18.04. Похоже, это проблема с Wayland. Решением для меня было переключиться с Wayland на Xorg.
У меня обычный bash-shell (не zsh) в Kubuntu 21.10, и у меня была эта проблема только с одним snap (Opera), тогда как другие были видны в лаунчере.
Вот как вручную решить проблему в графическом интерфейсе в KDE Plasma:
Откройте с текстовым редактором .desktop файл программы в
/var/lib/snapd/desktop/applications
и скопируйте путь к исполняемому файлу в “Команда:” в Редакторе меню KDE (открывается при щелчке правой кнопкой мыши на лаунчере и выборе Изменить приложения).
Также из .desktop файла обратите внимание на путь к значку программы и в Редакторе меню KDE найдите его в этом местоположении (если не найдете подходящий значок среди текущей темы значков).
Этот скрипт сработал для меня, основываясь на предыдущих вопросах. Он создает .desktop ссылки для всех snap приложений.
Моя среда – Ubuntu Server + i3 + Nautilus
#!/bin/bash
# Исходная директория, где Snap хранит .desktop файлы
source_dir="/var/lib/snapd/desktop/applications"
# Целевая директория, где будут созданы символические ссылки
target_dir="$HOME/.local/share/applications"
# Убедитесь, что целевая директория существует
mkdir -p "$target_dir"
# Перебираем все .desktop файлы в исходной директории
for desktop_file in "$source_dir"/*.desktop;
do
# Получаем базовое имя .desktop файла
file_name=$(basename "$desktop_file")
# Создаем символическую ссылку в целевой директории
ln -s "$desktop_file" "$target_dir/$file_name"
done
echo "Созданы символические ссылки для всех Snap приложений."
Flatpak решает эту проблему с файлом в /etc/X11/Xsession.d/20flatpak, который добавляет бинарные файлы в PATH и ярлыки приложений в XDG_DATA_DIRS. Копия этого файла также находится в /etc/profile.d/flatpak.sh. Предположительно, первый для вашей рабочей среды, а второй для вашей терминальной сессии.
Как уже упоминалось другими, snapd имеет файл в /etc/profile.d/apps-bin-path.sh, но не имеет соответствующей копии в /etc/X11/Xsession.d. Поэтому исправление настолько простое:
$ sudo cp /etc/profile.d/apps-bin-path.sh /etc/X11/Xsession.d/20snap
Мне нравится этот подход, потому что он соответствует последовательному подходу к flatpak и, вероятно, будет легко найти, когда я задамся вопросом, как я это исправил через год.
.
Ответ или решение
Если вы встретились с ситуацией, когда программы, установленные через Snap на Ubuntu, не отображаются в лаунчере, это может быть связано с рядом причин. Понимание проблемы и знание того, как ее можно решить, поможет вам быстро вернуть работу вашего ПО в нормальное русло.
Теория
Snap-пакеты — это универсальный способ дистрибуции программного обеспечения, который обеспечивает единое окружение для приложений на разных дистрибутивах Linux. Однако, иногда программы, установленные через Snap, не появляются в лаунчере операционной системы Ubuntu. Это может происходить из-за особенностей интеграции Snap с системной средой рабочего стола, которые зависят от конфигурации используемой системы и версии Ubuntu.
Примеры
-
Проблемы с десктопными файлами: Так, в случае программы MeshLab, часть проблемы может заключаться в некорректном десктопном файле, где указание на исполняемый файл может быть неверным.
-
Отсутствие обновления путей: Иногда переменные окружения, такие как
XDG_DATA_DIRS
, могут не обновляться правильно, особенно если вы используете альтернативные оболочки командной строки, такие как ZSH вместо стандартной Bash. -
Смешанные окружения: Использование разных графических серверов, таких как Wayland вместо Xorg, также может привести к тому, что Snap-приложения не будут отображаться корректно.
Применение
-
Проверка и исправление десктопных файлов: Вы можете проверить, корректно ли настроены десктопные файлы для ваших приложений. Например, для MeshLab редактируйте файл десктопа, чтобы исправить путь к исполняемому файлу.
-
Обновление переменных окружения: Добавьте необходимые пути непосредственно в конфигурационные файлы окружения. Например, добавьте
export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"
в~/.bash_profile
или соответствующий файл для своей оболочки. -
Создание символических ссылок: Для обеспечения доступности приложений в лаунчере можно создать символические ссылки на десктопные файлы Snap в локальные директории приложений:
ln -s /var/lib/snapd/desktop/applications/*.desktop ~/.local/share/applications/
-
Копирование файлов: Перенос файлов .desktop из директории Snap в системную директорию приложений также является рабочим способом решения:
sudo cp /var/lib/snapd/desktop/applications/* /usr/share/applications/
После копирования может потребоваться перезагрузка системы для обновления информации в лаунчере.
-
Переключение с Wayland на Xorg: Если вы используете Wayland и у вас возникают проблемы, попробуйте переключиться на Xorg. Это может решить проблему несоответствия путей или переменных окружения.
-
Использование независимых профилей: Можно адаптировать решения, используемые другими системами дистрибуции пакетов, такими как Flatpak, для исправления аналогичных проблем с интеграцией Snap.
Заключение
Проблемы с интеграцией Snap-пакетов в вашем окружении рабочего стола могут быть вызваны множеством факторов, от неправильных путей в десктопных файлах до конфигурации системы. Применение вышеупомянутых решений позволит вам попытаться устранить данную проблему, улучшая функциональность вашего рабочего пространства. Не забудьте следить за обновлениями вашей системы и Snap-пакетов, так как исправление таких проблем может быть включено в будущие обновления.