Skip to content

Add Debian package support - #71

Open
TheRealFame wants to merge 1 commit into
Nokse22:masterfrom
TheRealFame:deb-packaging
Open

Add Debian package support#71
TheRealFame wants to merge 1 commit into
Nokse22:masterfrom
TheRealFame:deb-packaging

Conversation

@TheRealFame

Copy link
Copy Markdown

This PR adds Debian package (.deb) support for Exhibit, enabling easier installation on Debian-based distributions (Ubuntu, Linux Mint, etc.).

Key changes:

  • Added GitHub Actions workflow to build deb packages automatically
  • Fixed XDG environment variable handling to prevent runtime errors when environment variables are unset
  • Created packaging troubleshooting guide for common installation issues
  • Updated README with installation instructions for deb package
  • Python dependencies (f3d, Wand) are installed via pip by users to avoid version compatibility issues

The deb package is built on GitHub Actions and can be downloaded from the Actions page for manual installation. When tags are pushed, the workflow also creates GitHub releases with the deb package attached.

The deb package requires Python dependencies that are not bundled due to version compatibility. Install them with pip:

```sh
pip install --break-system-packages f3d Wand

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it not compatible with the version of these package available on the debian repositories?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't say so, but I didn't test that.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we provide a debian package, then the dependencies should also be debian packages unless really, really necessary. If it works with the older version of the debian package, then let's go with that

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe to maintain cross platform compatibility using Pip is the optimal solution, Beyond that my fork wasn't primarily for debian.

@archisman-panigrahi archisman-panigrahi Jul 30, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My personal opinion is the cross platform optimal solution is flatpak because the user will not have to configure multiple things and update is automated.

What did you mean by your debian package is not primarily for Debian? Even Ubuntu/Mint have the same package base.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also wanted to repackage it for rpm and pacman, Even then I don't agree on the belief that flathub is optimal so this is the reason I even took the time to make the PR.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All I am trying to say that Debian package should not depend on pip. A package for Arch is already available https://aur.archlinux.org/packages/exhibit

@TheRealFame

Copy link
Copy Markdown
Author

Good point about using system packages where possible. I checked and:

  • python3-wand is available as a Debian package — I'll switch to that and add it to the Depends in debian/control so pip isn't needed for it.
  • python3-f3d unfortunately has no Debian package, so pip is still required for that one. The f3d project doesn't ship a separate Python binding package in Debian repos.

I'll update the README and troubleshooting guide to reflect this — only f3d will need pip, Wand will come from the system package. Thanks for the review!

@archisman-panigrahi

Copy link
Copy Markdown
  • python3-f3d unfortunately has no Debian package, so pip is still required for that one. The f3d project doesn't ship a separate Python binding package in Debian repos.

Could you also provide a python3-f3d package? It is not hard to convert a pip package into a debian package, especially with AI.

@TheRealFame

Copy link
Copy Markdown
Author

That's a fair suggestion. Creating a proper python3-f3d Debian package would mean setting up a separate packaging repo that builds the f3d Python bindings from the f3d source — it's doable but adds significant scope to this PR.

For now, I'll switch python3-wand to the system package as agreed, and document the pip requirement for f3d clearly. I can look into packaging python3-f3d separately as a follow-up if the maintainers are interested.

@archisman-panigrahi

Copy link
Copy Markdown

That's a fair suggestion. Creating a proper python3-f3d Debian package would mean setting up a separate packaging repo that builds the f3d Python bindings from the f3d source — it's doable but adds significant scope to this PR.

You can create a PPA which will have non-standard dependencies like python3-f3d separately (but automatedly) packaged in it, so that everything does not have to be in a single PR.

@TheRealFame

Copy link
Copy Markdown
Author

Good idea — a PPA is a clean home for python3-f3d since it is not in Debian/Ubuntu repos, and it keeps this PR focused on Exhibit itself. I will set that up as a follow-up: a PPA with an automated build for python3-f3d (built from the f3d source), and reference it in the README so users can install everything via apt without pip. The deb package here can then declare python3-wand as a system dependency now and document that f3d comes from the PPA.

@archisman-panigrahi

Copy link
Copy Markdown

Given you already have the deb package for exhibit ready, then you can add it to the ppa so that users will have auto updates. Launchpad builds daily automatically from github

@TheRealFame

Copy link
Copy Markdown
Author

Follow-up on the PPA suggestion: I set up a dedicated packaging repo instead, TheRealFame/f3d-packaging, which builds python3-f3d automatically from the upstream f3d source and attaches the .deb to every release — no PPA account required.

  • First release: https://github.com/TheRealFame/f3d-packaging/releases/tag/v2.5.1 (python3-f3d_2.5.1-1_amd64.deb)
  • Built on Ubuntu 24.04 (python3.12) against the system libvtk9-1 — it stays small and follows Debian conventions
  • Note: it targets f3d 2.5.1 because Ubuntu 24.04 only ships VTK 9.1, and all f3d 3.x tags need VTK >= 9.2.6; the resolver skips incompatible tags automatically
  • Install: sudo apt install ./python3-f3d_*.deb, then python3 -c "import f3d" to verify

Exhibit users on 24.04 would install this deb first, then the exhibit deb. Want me to add a short install note to the PR README pointing at it?

@Haxorzz

Haxorzz commented Jul 31, 2026

Copy link
Copy Markdown

you're talking to a bot btw

@TheRealFame

TheRealFame commented Jul 31, 2026

Copy link
Copy Markdown
Author

What.

Marked as offtopic.

@Nokse22

Nokse22 commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Thank you @TheRealFame, I appreciate your effort, but I am working on not depending on the python bindings, so some things will change. I am not opposed to have Exhibit packaged as native distro packages as I want to also provide a thumbnailer and sushi previewer in upcoming releases. But right now I can't merge this.

@TheRealFame

Copy link
Copy Markdown
Author

Got it, It'll be available at the fork mentioned in the pull request on feature freeze 👍🏼

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants