TL; DR: созданные файлы на самом деле являются исполняемыми файлами нового формата.С ними все в порядке.Наутилус / файловые менеджеры по ошибке не распознают их как исполняемые файлы.Существуют решения, такие как создание файла * .desktop для запуска приложения.
Анализ
Это явление является побочным эффектом изменения в том, как Electron создает двоичные файлы Linux.Коммит 9294facf изменил двоичный формат с ELF на PIE .Изменение довольно мало и влияет только на один файл (BUILD.gn).Изменение появилось в Electron начиная с версии 4.0.0.
Файловые менеджеры используют команду file
, чтобы решить, что делать с файлом (например, открыть программу просмотра изображений, текстовый редактор или выполнить файл).,file
не может различить разделяемые библиотеки и исполняемые файлы PIE и поэтому неправильно классифицирует файлы PIE (см. Соответствующий отчет об ошибке ).
Решения
Запуск с терминала
Поскольку проблема существует только для графических файловых менеджеров, вы можете просто запустить исполняемый файл из терминала или из скрипта.Это несколько связано с нетехническими конечными пользователями, а не с тем, что хочет OP.
Ожидание восходящего исправления
Подождите, пока file
распознает PIE как исполняемые файлы.В свою очередь, это, вероятно, приведет к тому, что файловые менеджеры, такие как Nautilus, будут корректно запускать PIE.Пока не ясно, когда это произойдет.Если это произойдет, скорее всего, он будет включен только в будущие выпуски дистрибутивов.
Используйте файл рабочего стола
Создайте файл рабочего стола для запуска приложения.Это обычный способ запуска настольных приложений в любом случае.
Создайте файл с именем myapp.desktop
со следующим содержимым.
[Desktop Entry]
Name=My Application
Exec=/path/to/binary
Terminal=false
Type=Application
StartupNotify=true
Encoding=UTF-8
Затем отметьте исполняемый файл рабочего стола, введя chmod +x myapp.desktop
,Двойной щелчок по файлу должен запустить приложение, как и ожидалось.
Дополнительная информация
Соответствующее обсуждение в проекте электронного упаковщика: https://github.com/electron-userland/electron-packager/issues/901.(Суть: эта проблема не была вызвана электронным упаковщиком, смотрите вверх по течению)
Соответствующая проблема в электронном проекте: https://github.com/electron/electron/issues/15406. (Суть: они хотели включить PIE в Linux. Не наша ошибкасмотри вверх по течению)