Сборка и подписание десктоп-приложения для Linux
Linux не требует обязательного подписания кода, но предоставляет несколько форматов дистрибуции с разной аудиторией: AppImage (универсальный), Snap (Ubuntu), Flatpak (Fedora/Gnome).
Форматы пакетов
| Формат | Магазин | Аудитория |
|---|---|---|
| AppImage | Нет (self-contained) | Все дистрибутивы |
| Snap | Snapcraft | Ubuntu/Canonical экосистема |
| Flatpak | Flathub | Fedora, Gnome-oriented |
| .deb | Собственный репозиторий | Debian/Ubuntu |
| .rpm | Собственный репозиторий | Fedora/RHEL/CentOS |
Electron-builder: AppImage и deb/rpm
# electron-builder.yml
linux:
target:
- target: AppImage
- target: deb
- target: rpm
icon: build/icons
category: Utility
deb:
depends: ['libnotify4', 'libxtst6', 'libnss3']
appImage:
systemIntegration: ask # спрашивать при первом запуске
# Сборка
npx electron-builder --linux
AppImage: self-contained исполняемый файл
AppImage содержит все зависимости внутри. Пользователь скачивает один файл, даёт права на выполнение и запускает — без установки:
chmod +x AppName-1.0.0.AppImage
./AppName-1.0.0.AppImage
Snap-пакет
# snapcraft.yaml
name: appname
version: '1.0.0'
summary: Application Name
description: |
Full description of the application.
grade: stable
confinement: strict
apps:
appname:
command: usr/lib/appname/appname
plugs:
- desktop
- network
- home
parts:
appname:
plugin: dump
source: dist/linux-unpacked
source-type: local
# Публикация в Snap Store
snapcraft login
snapcraft upload appname_1.0.0_amd64.snap --release=stable
Flatpak
<!-- com.company.AppName.yml -->
app-id: com.company.AppName
runtime: org.freedesktop.Platform
runtime-version: '23.08'
sdk: org.freedesktop.Sdk
command: appname
finish-args:
- --share=network
- --socket=x11
- --socket=wayland
- --filesystem=home
modules:
- name: appname
buildsystem: simple
build-commands:
- install -Dm755 appname /app/bin/appname
GPG-подписание пакетов
# Подписание deb-пакета
dpkg-sig --sign builder AppName_1.0.0_amd64.deb
# Подписание RPM
rpm --addsign AppName-1.0.0.x86_64.rpm
Сроки
Настройка сборки AppImage + deb/rpm + публикация в Snap: 2–3 рабочих дня.







