Ошибка 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 не будет опубликован. Обязательные поля помечены *