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.)
So if I go on a mad chmod spree, making /usr/bin/lemmy_server and all of its dependencies readable/executable (which is super insecure) I finally get to this log message in journalctl:
Jun 07 13:50:57 ip-172-31-4-153 lemmy_server[3868]: thread 'main' panicked at 'C
ouldn't run DB Migrations', /home/ubuntu/.cargo/registry/src/index.crates.io-6f1
7d22bba15001f/lemmy_db_schema-0.17.3/src/utils.rs:165:25
Which is this code:
pub fn run_migrations(db_url: &str) {
// Needs to be a sync connection
let mut conn =
PgConnection::establish(db_url).unwrap_or_else(|_| panic!("Error connecting to {db_url}"));
info!("Running Database migrations (This may take a long time)...");
let _ = &mut conn
.run_pending_migrations(MIGRATIONS)
.unwrap_or_else(|_| panic!("Couldn't run DB Migrations"));
info!("Database migrations complete.");
}
Yesterday I started an Ubuntu 22.04.2 LTS install from scratch posting too. I got stuck with various issues also (the published instructions are for 20.04 so that might account for some of it).
... 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.