Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Linux Release Guide (Ubuntu + AppImage)

This is the canonical maintainer flow for Linux releases.

Scope

Supported Linux artifacts:

  • Smriti-ubuntu-amd64.deb
  • Smriti-x86_64.AppImage

Published by tag-driven CI workflow:

  • .github/workflows/release.yml

CI also runs package smoke checks on tag releases:

  • .deb install + launch smoke test
  • AppImage extract/layout check + launch smoke test

1) Pre-release checks

Run from repo root:

cargo fmt --all --check
cargo check
cargo test

Optional:

cargo clippy --all-targets

2) Local Linux packaging smoke tests

2.1 Build Ubuntu/Debian package

./scripts/release_local.sh ubuntu

Expected output:

  • target/debian/*.deb

Install test:

sudo dpkg -i target/debian/*.deb
smriti

2.2 Build AppImage

./scripts/release_local.sh linux-appimage

Expected output:

  • Smriti-x86_64.AppImage

Run test:

chmod +x Smriti-x86_64.AppImage
./Smriti-x86_64.AppImage

3) Publish Linux artifacts via CI

Create and push a release tag:

git checkout master
git pull origin master
git tag -a vX.Y.Z -m "Smriti vX.Y.Z"
git push origin vX.Y.Z

CI will create a draft release with assets.

4) Verify release assets

Ensure draft release contains at least:

  • Smriti-ubuntu-amd64.deb
  • Smriti-x86_64.AppImage
  • SHA256SUMS

Note: Draft release creation is blocked unless Linux smoke-test jobs pass.

Verify checksums:

sha256sum -c SHA256SUMS

5) Publish release

Open draft release, review notes, publish.

6) Post-release checks

Validate website links:

  • Ubuntu .deb: /releases/latest/download/Smriti-ubuntu-amd64.deb
  • AppImage: /releases/latest/download/Smriti-x86_64.AppImage

7) Troubleshooting

If app starts but models/GeoNames are not found:

  • verify assets are inside package/AppImage
  • verify SMRITI_ASSET_DIR is set in AppImage AppRun
  • verify runtime path resolution handles /usr/lib/smriti (and the legacy /usr/lib/photovault fallback for upgrading users)