Ошибка KDE: “execvp: Ошибка формата выполняемого файла”

Ситуация

При запуске программы через меню приложений возникает эта ошибка, программа не запускается.

Я встречал это на 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-файл ссылается на шелл-скрипт без шибенга, который запускает шелл-скрипт с шибенгом. Проблема именно в первом.

Решение

  1. Изменить параметр Exec в desktop-файле на корректный скрипт или бинарник.
  2. Добавить шибенг в первый шелл-скрипт, тогда результат должен быть таким:
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: Bourne-Again shell script, ASCII text executable

Предполагаю, что аналогичное решение подойдёт для другого ПО. По крайней мере, стоит попробовать.

2 комментария

  1. Добрый день.
    Ситуация.
    Убунта 22.04. Wine 8. Установлен NetFramework 4.8. Установлена программа Виндовая. Для запуска этой программы установлен файловый менеджер Krusader. С помощью него зашел в папку с установленной программой и запускаю ехе файл. появляется ошибка execvp ошибка формата выполняемого файла.
    Как решить?

    1. Салют. Я бы для начала попробовал запустить этот exe вайном напрямую из терминала. Если ошибка повторится, значит, вероятно, проблема с бинарником. Можно проверить вывод команды file на этот бинарник. Убедился бы в разрядности бинарника, он может быть банально собран под другую архитектуру/разрядность. Плюс посмотрел бы правильно ли в системе настроена ассоциация exe-файлов с wine. Нашёл бы desktop-файл, на который настроена ассоциация — возможно, это могло бы дать почву для поисков. Можно попробовать его стартануть через kioclient5 или gio. Это так, первое что пришло в голову без погружения.

      Эта ошибка неоднозначна и причина, скорее всего, вне моей компетенции. Здесь описан лишь один конкретный простой успешный случай решения. Если у вас KDE, можете попробовать обратиться в t.me/kde_ru. Там сидят довольно прошаренные кедоводы (и вроде как несколько разработчиков). Авось кто отзовётся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *