SparkNotePad provides native packaging support for modern Linux distributions via CMake and CPack:
.deb).rpm)All official packages are compiled on LTS base environments (Ubuntu 22.04 LTS / glibc 2.35) to guarantee binary backward and forward compatibility across:
| 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 |
In RPM-based systems (Fedora, RHEL, openSUSE):
CPACK_RPM_PACKAGE_AUTOREQ ON.rpmbuild inspects the ELF DT_NEEDED dynamic tags of the binary (SparkNotePad).libQt6Widgets.so.6, libQt6Core.so.6, libQt6Gui.so.6, libQt6PrintSupport.so.6, libQt6Core5Compat.so.6, libc.so.6.Provides: libQt6Widgets.so.6()(64bit)).sudo dnf install ./sparknotepad-1.3.5-1.x86_64.rpm
dnf queries the repository index for every required SONAME and automatically downloads and installs qt6-qtbase-gui, qt6-qt5compat, etc.
In Debian-based systems (Ubuntu, Debian, Mint):
dpkg and apt) does not query repositories by raw ELF SONAME strings at install time. It requires explicit package names in the Depends: field of debian/control.CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON while Qt was installed from an external SDK or GitHub Actions path (e.g., /home/runner/Qt/...), dpkg-shlibdeps cannot map those shared libraries to system Debian package names. Consequently, Qt packages are omitted from Depends:.CPACK_DEBIAN_PACKAGE_DEPENDS in cmake/PackagingLinux.cmake.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:
libqt6core6 ➜ libqt6core6t64libqt6gui6 ➜ libqt6gui6t64libqt6widgets6 ➜ libqt6widgets6t64libqt6network6 ➜ libqt6network6t64libqt6printsupport6 ➜ libqt6printsupport6t64libqt6core5compat6 ➜ libqt6core5compat6t64Meanwhile, 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+.
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 tellsaptthat the target is a local file rather than a remote repository package name.aptwill automatically inspect all dependencies, fetch missing packages from official mirrors, install them, and configure SparkNotePad in a single automated step.
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
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
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
# 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:
build/sparknotepad_1.3.5_amd64.debbuild/sparknotepad-1.3.5-1.x86_64.rpm