Ситуация
При запуске программы через меню приложений возникает эта ошибка, программа не запускается.
Я встречал это на Oracle SQLDeveloper любой версии 20+, который устанавливался из официального rpm в среде Ubuntu + KDE с помощью sudo alien -dic
. Ошибки не было в MATE. Может не встречаться в GNOME. Встретил только в KDE.
Ошибки нет, если запустить программу напрямую из терминала.
Ошибки нет, если запустить desktop-файл через gio launch
.
Выдача прав a+x на desktop-файлы не помогает.
Запуск через kioclient5 exec
прерывается ошибкой:
Неизвестная ошибка 100
execvp: Ошибка формата выполняемого файла
Отправьте сообщение об ошибке на https://bugs.kde.org
Проблема
Команда в desktop-файле:
[Desktop Entry]
...
Exec=sqldeveloper
...
Проверяем в терминале:
$ which sqldeveloper
/usr/local/bin/sqldeveloper
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: ASCII text
$ head -2 "$(which sqldeveloper)"
/opt/sqldeveloper/sqldeveloper.sh
$ cat /opt/sqldeveloper/sqldeveloper.sh
#!/bin/bash
cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*
Вывод простой: штатный desktop-файл ссылается на шелл-скрипт без шибенга, который запускает шелл-скрипт с шибенгом. Проблема именно в первом.
Решение
- Изменить параметр
Exec
в desktop-файле на корректный скрипт или бинарник. - Добавить шибенг в первый шелл-скрипт, тогда результат должен быть таким:
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: Bourne-Again shell script, ASCII text executable
Предполагаю, что аналогичное решение подойдёт для другого ПО. По крайней мере, стоит попробовать.