TL;DR: созданные файлы на самом деле являются исполняемыми файлами нового формата. В них нет ничего плохого. Nautilus/файловые менеджеры по ошибке не распознают их как исполняемые файлы. Есть решения, такие как создание файла *.desktop для запуска приложения.
Анализ
Это явление возникает как побочный эффект изменения в том, как Electron собирает бинарные файлы Linux. Коммит 9294facf изменил двоичный формат с ELF на PIE. Изменение довольно небольшое и затрагивает только один файл (BUILD.gn). Изменение появилось в Electron, начиная с версии 4.0.0.
Файловые менеджеры используют команду file
, чтобы решить, что делать с файлом (например, открыть программу просмотра изображений, текстовый редактор или выполнить файл). file
не различает разделяемые библиотеки и исполняемые файлы PIE и поэтому неправильно классифицирует файлы PIE (см. соответствующий отчет об ошибке).
Решения
Запустить из терминала
Поскольку проблема существует только для графических файловых менеджеров, вы можете просто запустить исполняемый файл из терминала или из скрипта. Это несколько связано с нетехническими конечными пользователями, а не с тем, что хочет ОП.
Дождитесь исправления вверх по течению
Подождите, пока 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
. Двойной щелчок по файлу должен запустить приложение, как и ожидалось.
Дополнительная информация
Соответствующее обсуждение в проекте electronic-packager: https://github.com/electron-userland/electron-packager/issues/901. (Суть: эта проблема не была вызвана электронным упаковщиком, посмотрите вверх по течению)
Соответствующая проблема в электронном проекте: https://github.com/electron/electron/issues/15406. а>. (Суть: они хотели включить PIE в Linux. Это не наша ошибка, смотрите выше)
person
snwflk
schedule
08.03.2019