SparkNotePad

SparkNotePad Linux Packaging Guide (.deb & .rpm)

1. Overview

SparkNotePad provides native packaging support for modern Linux distributions via CMake and CPack:

All official packages are compiled on LTS base environments (Ubuntu 22.04 LTS / glibc 2.35) to guarantee binary backward and forward compatibility across:


2. Package Specifications & Dependency Architecture

Attribute Debian (.deb) RPM (.rpm)
Package Name sparknotepad sparknotepad
Output Filename sparknotepad_<version>_<arch>.deb sparknotepad-<version>-1.<arch>.rpm
Section / Group editors Applications/Editors
License GPL-3.0-or-later GPL-3.0-or-later
Direct Dependencies Declared with multi-version fallback (\|) for classic Qt6 and t64 (64-bit time_t) Auto-detected ELF SONAME requirements (AutoReq: 1)
System Libraries libc6 (>= 2.35), libstdc++6 (>= 11), libgcc-s1 (via CPACK_DEBIAN_PACKAGE_SHLIBDEPS) libc.so.6, libstdc++.so.6 (via DNF provides)
Recommends xdg-utils xdg-utils
Desktop Entry /usr/share/applications/SparkNotePad.desktop /usr/share/applications/SparkNotePad.desktop
Application Icon /usr/share/icons/hicolor/scalable/apps/SparkNotePad.svg /usr/share/icons/hicolor/scalable/apps/SparkNotePad.svg

3. Why RPM Automatically Installs Dependencies vs. DEB

3.1 The RPM Mechanism (Fedora / DNF)

In RPM-based systems (Fedora, RHEL, openSUSE):

3.2 The Debian/Ubuntu Mechanism (DEB / APT)

In Debian-based systems (Ubuntu, Debian, Mint):

3.3 The 64-bit time_t Transition (t64)

Starting with Ubuntu 24.04 LTS (Noble) and Debian 13 (Trixie), Debian implemented the 64-bit time_t architecture transition (Y2038 protection), renaming standard runtime libraries:

Meanwhile, Ubuntu 22.04 LTS (Jammy) and Debian 12 (Bookworm) retain the non-t64 package names. SparkNotePad uses Debian’s alternative dependency operator (|):

libqt6core6 (>= 6.2.4) | libqt6core6t64,
libqt6gui6 (>= 6.2.4) | libqt6gui6t64,
libqt6widgets6 (>= 6.2.4) | libqt6widgets6t64,
libqt6network6 (>= 6.2.4) | libqt6network6t64,
libqt6printsupport6 (>= 6.2.4) | libqt6printsupport6t64,
libqt6core5compat6 (>= 6.2.4) | libqt6core5compat6t64,
qt6-qpa-plugins,
libglx0,
libopengl0

This syntax instructs APT to install the classic package on Debian 12 / Ubuntu 22.04, or the t64 package on Ubuntu 24.04+ / Debian 13+.


4. How to Install: The Crucial Tool Difference (apt vs. dpkg)

Many users historically ran:

# ⚠️ Legacy command: Does NOT resolve or download dependencies from mirrors!
sudo dpkg -i sparknotepad_1.3.5_amd64.deb

dpkg is a low-level package unpacker. It has no network access and cannot query APT repositories. If any dependency is missing, dpkg -i aborts with an unmet dependencies error.

On Debian 9+, Ubuntu 16.04+, and all modern derivatives:

# ✅ Modern high-level APT command (equivalent to 'dnf install ./file.rpm')
sudo apt install ./sparknotepad_1.3.5_amd64.deb

Note: The leading ./ (or absolute path /path/to/...) is mandatory. It tells apt that the target is a local file rather than a remote repository package name. apt will automatically inspect all dependencies, fetch missing packages from official mirrors, install them, and configure SparkNotePad in a single automated step.


5. Building Packages Locally

5.1 System Prerequisites

Ubuntu 22.04 LTS / Debian 12 (Bookworm)

sudo apt update
sudo apt install -y --no-install-recommends \
    build-essential cmake ninja-build pkg-config \
    qt6-base-dev qt6-base-dev-tools qt6-5compat-dev \
    qt6-tools-dev qt6-tools-dev-tools linguist-qt6 \
    libgl1-mesa-dev libxkbcommon-dev libxkbcommon-x11-0 \
    libfontconfig1-dev libfreetype6-dev libxcb-cursor-dev \
    rpm dpkg-dev

Ubuntu 24.04 LTS (Noble) / Ubuntu 26.04 / Debian 13 (Trixie)

sudo apt update
sudo apt install -y --no-install-recommends \
    build-essential cmake ninja-build pkg-config \
    qt6-base-dev qt6-base-private-dev qt6-base-dev-tools \
    qt6-5compat-dev qt6-tools-dev qt6-tools-dev-tools linguist-qt6 \
    libgl1-mesa-dev libxkbcommon-dev libxkbcommon-x11-0 \
    libfontconfig1-dev libfreetype6-dev libxcb-cursor-dev \
    rpm dpkg-dev

Fedora / RHEL / CentOS Stream

sudo dnf install -y \
    gcc-c++ cmake ninja-build rpm-build pkgconf-pkg-config \
    qt6-qtbase-devel qt6-qt5compat-devel qt6-qttools-devel \
    mesa-libGL-devel libxkbcommon-devel libxkbcommon-x11-devel \
    fontconfig-devel freetype-devel xcb-util-cursor-devel

5.2 Build via CMake Targets

# 1. Configure Release build
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release

# 2. Compile application
cmake --build build --parallel

# 3. Assemble Debian package (.deb)
cmake --build build --target deb

# 4. Assemble Red Hat package (.rpm)
cmake --build build --target rpm

The resulting packages are generated in the build/ root: