Repository navigation
Install with apk
apk resolves dependencies, checks signatures, upgrades and removes. Do the base image
steps first, including section 5 (the variables and the /usr/local link).
apk is a package too. Unpack it by hand once, then let it install itself properly. apk-tools needs
zlib, zstd, openssl and ca-certificates. Each is in the half of the release that its name's
first letter belongs to.
qnx# mkdir -p /data/boot/root && cd /data/boot
qnx# curl -fsSL -o INDEX $GH_RELEASES/packages-8.0-$ARCH/INDEX # names 0-9, a-l
qnx# curl -fsSL -o INDEX-m-z $GH_RELEASES/packages-8.0-$ARCH-m-z/INDEX # names m-z
qnx# for PKG in zlib zstd openssl ca-certificates apk-tools; do
case $PKG in [0-9a-l]*) SHARD= ;; *) SHARD=-m-z ;; esac
PKG_FILE=$(grep -m1 "^$PKG|" INDEX$SHARD | cut -d'|' -f4)
PKG_SHA256=$(grep -m1 "^$PKG|" INDEX$SHARD | cut -d'|' -f5)
curl -fsSLO $GH_RELEASES/packages-8.0-$ARCH$SHARD/$PKG_FILE
[ "$(openssl dgst -sha256 $PKG_FILE | sed 's/.*= *//')" = "$PKG_SHA256" ] && echo "ok $PKG_FILE" || echo "BAD $PKG_FILE"
gzip -dc $PKG_FILE | (cd /data/boot/root && tar -xf -)
done
qnx# ls /data/boot/root/usr/local/bin/apkEvery line must say ok.
qnx# mkdir -p /data/oss/etc/apk/keys
qnx# echo "$GH_RELEASES/apk-8.0-$ARCH/APKINDEX.tar.gz" > /data/oss/etc/apk/repositories
qnx# echo "$GH_RELEASES/apk-8.0-$ARCH-m-z/APKINDEX.tar.gz" >> /data/oss/etc/apk/repositories
qnx# echo "$GH_RELEASES/tests-8.0-$ARCH/APKINDEX.tar.gz" >> /data/oss/etc/apk/repositories
qnx# echo "$GH_RELEASES/tests-8.0-$ARCH-m-z/APKINDEX.tar.gz" >> /data/oss/etc/apk/repositories
qnx# curl -fsSL -o /data/oss/etc/apk/keys/openqnx-oss-20261029.rsa.pub \
https://raw.githubusercontent.com/openqnx/oss/main/keys/openqnx-oss-20261029.rsa.pub
qnx# BOOT_APK=/data/boot/root/usr/local
qnx# LD_LIBRARY_PATH=$BOOT_APK/lib:/data/oss/qnx-runtime/lib $BOOT_APK/bin/apk --root /data/oss --force-no-chroot --initdb add apk-tools ca-certificates
qnx# cd /; rm -rf /data/bootqnx# alias apk='/usr/local/bin/apk --root /data/oss --force-no-chroot'
qnx# export SSL_CERT_FILE=/usr/local/ssl/cert.pem # now the one from the ca-certificates package
qnx# apk update--force-no-chroot lets package triggers run (for example glib compiling GSettings schemas on install).
qnx# apk search -v curl # names and versions
qnx# apk add curl # with its dependencies
qnx# apk add curl=<version> # one version (apk search -v, or the package site)
qnx# apk add curl-dev # headers, pkg-config, static libraries
qnx# apk info -L curl # the files it installed
qnx# apk del curl # remove (and dependencies nothing else needs)
qnx# curl --versionOlder revisions bring matching dependencies. For example, apk add nodejs=24.14.1-r0 comes with
ada 3.4.4, and the newest revision comes with ada 4.0.0. A package's page on the
package site lists the dependency versions each revision works with.
Make the image with the large /data (Base QEMU images, section 2) first.
qnx# mkdir -p /data/oss/dl && cd /data/oss/dl
qnx# curl -fsSL $GH_RELEASES/packages-8.0-$ARCH/INDEX $GH_RELEASES/packages-8.0-$ARCH-m-z/INDEX \
| grep -v '^#' | cut -d'|' -f1 | sort -u \
| grep -vxE 'sdl2-compat(-dev)?' > all-names.txt # sdl2-compat cannot be installed with sdl2
qnx# wc -l all-names.txt
qnx# apk update
qnx# apk add $(cat all-names.txt) # takes long, aarch64 especially
qnx# apk info | wc -lIf it is interrupted, run the same apk add again. Remove everything: apk del $(cat all-names.txt).
qnx# apk add qnx-test-curl qnx-port-tests
qnx# QNX_PORT_TESTS_VERBOSE=1 /usr/local/bin/qnx-port-tests/run-on-target.sh test_curlEvery check says ok, and the run ends with PASS test_curl and passed: 1 failed: 0. The package
site shows the same test's recorded log for comparison.
qnx# apk add oss-desktop # labwc, swaybg, the Xfce panel, terminal, file manager
qnx# nohup oss-desktop > /tmp/oss-desktop.out 2>&1 &
qnx# export XDG_RUNTIME_DIR=/tmp/xdg-runtime-0 WAYLAND_DISPLAY=wayland-0
qnx# apk add geany && geany & # a GTK program on the desktop
qnx# apk add qdirstat && QT_QPA_PLATFORM=qnx qdirstat & # Qt draws on QNX Screen directly
qnx# apk add mame && mame & # SDL2 programs use QNX ScreenScreenshots of what this looks like: docs/screenshots.