I’m trying this on Ubuntu 22.04 Rust’s cargo install seems to keep creating permission problems between what I have to install, compile and what gets published in the cargo “registry”, which causes issues at runtime when I run as lemmy:lemmy through systemctl.

If I run: cargo install lemmy_server --target-dir /usr/bin/ --locked --features embed-pictrs as a non-root user, I get permission denied issues with /usr/bin/.future-incompat-report.json and /usr/bin/release

If I run the build as a root user, and then manually copy the binaries to /usr/bin and chmod them to lemmy:lemmy, then try to run as lemmy:lemmy, it appears the binary is trying to access some “registry” files in /root/.cargo/registry (for which of course it does not have permissions.)

How do I fix this?

  • … Build as non-root, install as root? AUR PKGBUILD just werks. All the functions in here are run as non-root though, the package() function installs to a fake directory tree, and then pacman, run as root, copies that into real tree. It works out to be one file total. Not sure why cargo install wants to put some other garbage in.

    • Oh and warning to anyone who wants to use that AUR package: You’ll need to fix pkgver and _commit before running it. Actually fixing pkgver may not be necessary. But yeah, grab the commit hash for 0.17.3 tag.