Install Heimdall on Rocky Linux 8?


I have to flash an old Samsung mobile phone in order to replace Android with LineageOS. In the past, I’ve used Heimdall for this, which works great. Before Rocky Linux I ran OpenSUSE Leap on my workstation & laptop, which had binary packages in the official repositories. Unfortunately, Rocky Linux seems to have no corresponding packages in any official or third-party (EPEL, RPMFusion, etc.) repositories. Flatpak seems to have nothing either.

Has anybody here successfully built / installed / used Heimdall under Rocky Linux 8 ?

It seems Heimdall only appeared in Fedora 37 and later, which means it didn’t make it for either RHEL8 or RHEL9 - also assuming the fact whether Red Hat would actually include this anyway.

Best bet would be to build it with mock, using the Fedora source rpm here:

I already gave these a spin. Unfortunately they all fail to build near the end with the following error message:

-- Installing: /builddir/build/BUILDROOT/heimdall-2.0.2-1.el8.x86_64/usr/bin/heimdall-frontend
+ install -D -m 0755 x86_64-redhat-linux-gnu/bin/heimdall /builddir/build/BUILDROOT/heimdall-2.0.2-1.el8.x86_64/usr/bin/heimdall
install: cannot stat 'x86_64-redhat-linux-gnu/bin/heimdall': No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.fyMZRG (%install)

RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.fyMZRG (%install)
Finish: rpmbuild heimdall-2.0.2-1.el8.src.rpm
Finish: build phase for heimdall-2.0.2-1.el8.src.rpm
ERROR: Exception(heimdall-2.0.2-1.el8.src.rpm) Config(rocky+epel-8-x86_64) 2 minutes 10 seconds
INFO: Results and/or logs in: /var/lib/mock/rocky+epel-8-x86_64/result
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M 083ee50d33764b65a328bf5017f31748 -D /var/lib/mock/rocky+epel-8-x86_64/root -a -u mockbuild --capability=cap_ipc_lock --bind=/tmp/mock-resolv.qmhfvjq3:/etc/resolv.conf --bind=/dev/mapper/control --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c /usr/bin/rpmbuild -bb --noclean --target x86_64 --nodeps /builddir/build/SPECS/heimdall.spec

I did manage to build Heimdall from the source on GitHub though. Installed a handful of build dependencies, launched the compilation, and got two resulting binaries in /usr/local/bin.

If someone has an idea why building the SRPM with mock fails, I’d be grateful.