Форматы пакетов

Что собирается, как и как проверяется каждый формат. Все форматы для Linux, 64 бита, x86, без подписи; их происхождение подтверждают аттестация сборки GitHub и SHA256SUMS.

Четыре формата

ФорматЧем собираетсяКак проверен
.debElectron Forge, @electron-forge/maker-debСобран и запущен здесь: прочитаны предохранители, открыто окно, проверка установленного пакета и обновления на распакованном пакете, desktop-file-validate, lintian --fail-on error.
.rpm@electron-forge/maker-rpm с resources/linux/rpm.spec.ejs (собирается только там, где есть rpmbuild)Собран и проверен здесь: chrome-sandbox SUID root, зависимости, ярлык, проверка установленного пакета на распакованном пакете. Установка через dnf в Fedora идёт только в CI.
.tar.gz с run.sh, install.sh, uninstall.shscripts/make-linux-portable.jsСобран и запущен здесь: run.sh --version и окно, install.sh в новую домашнюю папку, установка поверх первой копии, uninstall.sh сохраняет профиль, --purge удаляет его.
AppImagescripts/make-linux-portable.js с APPIMAGE_RUNTIME=<runtime-x86_64>Содержимое образа собрано и запущено здесь; готовый файл .AppImage и загрузка его runtime делаются и проверяются только в CI.

Пакетов для ARM нет, для Windows и macOS тоже.

Файлы выпуска

ФайлЧто это
nodewise-studio_<версия>_amd64.debПакет для Debian и Ubuntu.
nodewise-studio-<версия>-1.x86_64.rpmПакет для Fedora и openSUSE.
nodewise-studio-<версия>-x86_64.AppImageОдин файл, который запускается в большинстве дистрибутивов.
nodewise-studio-<версия>-linux-x64.tar.gzРаспакованное приложение с run.sh, install.sh и uninstall.sh.
nodewise-studio-<версия>.cdx.jsonSBOM: каждый компонент, который поставляется, в форме CycloneDX.
SHA256SUMSКонтрольные суммы всех файлов выше.

Версия 0.9 называла свои файлы старым именем приложения; её уведомление о новой версии ищет файлы под этим именем, поэтому в выпуске 1.0 прямого скачивания оно, вероятно, не найдёт. Пока не проверено.

Песочница

.deb и .rpm ставят помощник chrome-sandbox из Chromium с SUID root и всегда сохраняют песочницу. У распакованного приложения (.tar.gz, AppImage) не может быть SUID-помощника, а Ubuntu 24.04 и новее ограничивают другой способ песочницы; там run.sh и AppImage запускают приложение с --no-sandbox и пишут почему. Иначе приложение там не запустилось бы вовсе.

Установка для одного пользователя

install.sh ставит в ~/.local/share/nodewise-studio, команду запуска в ~/.local/bin, пункт меню и значки в ~/.local/share. Он не перезаписывает команду запуска, которую сделал не он, не работает, пока приложение запущено, и заменяет старую копию одним шагом. Копию версии 0.9, которую её install.sh поставил в домашнюю папку под старым названием приложения, он удаляет её же uninstall.sh (настройки остаются, их заберёт приложение); если та копия запущена, она остаётся, и install.sh об этом говорит. uninstall.sh удаляет только то, что поставил install.sh, и сохраняет профиль; --purge удаляет и профиль.

Что попадает в пакет

Только то, что работает: dist/ (main, preload, сборка окна, лицензии, встроенная справка), node_modules для main, package.json и значок окна (packagerConfig.ignore в forge.config.js). От better-sqlite3 идёт только модуль для Linux x64. Предохранители (@electron-forge/plugin-fuses) выключают запуск как Node, NODE_OPTIONS, параметры отладчика и загрузку приложения не из app.asar; scripts/check-fuses.js читает их из каждого собранного файла. Файл copyright обоих пакетов: лицензия приложения, а за ней лицензии всего, что идёт вместе с ним.

Команды

xvfb-run -a npm run package:linux   # сборка, все форматы, их проверки
npm run make:linux                  # .deb (и .rpm, где есть rpmbuild), затем tar.gz (и AppImage)
npm run smoke:linux                 # проверки собранных пакетов
node scripts/check-fuses.js <exe>   # предохранители файла
node scripts/make-sbom.js out.cdx.json
SMOKE_PACKAGE=deb node scripts/smoke-installed-package.js check

Файлы появляются в out/make/deb/x64/, out/make/rpm/x64/ и out/make/portable/. Инструменты: fakeroot и dpkg для .deb, rpm для .rpm, squashfs-tools и runtime AppImage type 2 для AppImage, desktop-file-utils, lintian и shellcheck для проверок. Сборка из исходников

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/dev/Package-Formats.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.