Support for EL9? (Rocky, Alma, RHEL)

While checking the download options for UrBackup Server, I didn’t find any mention of RHEL 9 (or its clones such as Rocky Linux 9 or Alma Linux 9).

I see this version was mentioned earlier this year in this topic:

Is there any current or planned support for EL9?

Thank you very much.

Not sure. And after latest news Red Hat ends the RHEL clones’ free lunch | InfoWorld assume more and more developers will stop cooperations with rhel derivatives.

You can try to compile by your self. Example below for ArchLinux

  1. Use this guide: UrBackup - Install UrBackup server from sources
mkdir build
cd build/
wget https://hndl.urbackup.org/Server/2.5.31/urbackup-server-2.5.31.tar.gz
tar xf urbackup-server-2.5.31.tar.gz
cd urbackup-server-2.5.31/
  1. Install dependencies:
dnf install gcc gpp g++ zlib-devel libcurl-devel fuse-devel
  1. Run configure:
./configure --with-mountvhd --enable-embedded-cryptopp --enable-embedded-zstd
make -j 8
  1. Follow https://pkgs.org for required packages, you can also use this resource to find same packages for your Linux distribution.
  2. After successful compilation you can compress urbackup-server-2.5.31/ and reuse it on another systems.

Keep in mind that @uroni seems like use latest versions of dependencies while preparing latest versions for public, so you need to chose something with latest versions of dependencies. Otherwise you can use precompiled packages.

Mainly depends on OBS. I just noticed there was an issue there (fixed now) but it also doesn’t have RHEL9:

Then I’m not using it personally and don’t want to look into it, so it depends on people supplying patches to the spec file when it breaks

2 Likes

It seems each build you use latest dependent packages versions. Are you use Arch or Fedora?

I know this is an old thread, but …

FWIW, I needed this (trivial) patch to get the CentOS 8 SRPM rebuilt to install on Rocky Linux 9. The CentOS 8 RPM installation fails with:

[root@backup01 build]# dnf install ./urbackup-server-2.5.33.0-1.1.x86_64.rpm
Last metadata expiration check: 2:34:16 ago on Wed 13 Nov 2024 05:53:52 PM EST.
Error:
 Problem: conflicting requests
  - nothing provides /bin/chown needed by urbackup-server-2.5.33.0-1.1.x86_64 from @commandline
  - nothing provides /bin/mkdir needed by urbackup-server-2.5.33.0-1.1.x86_64 from @commandline
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

(No, I don’t like --skip-broken/–nobest/other “forceme” options)

Trivial Patch:

*** urbackup-server.spec.org    2024-11-13 20:31:16.610647213 -0500
--- urbackup-server.spec        2024-11-13 20:32:14.843657453 -0500
***************
*** 61,67 ****
  Requires: libguestfs-tools
  %endif

! %if 0%{?fedora} >= 17
  Requires(post): /usr/bin/chown
  Requires(pre): /usr/bin/mkdir
  Requires(pre): /usr/bin/sed
--- 61,67 ----
  Requires: libguestfs-tools
  %endif

! %if 0%{?fedora} >= 17 || 0%{?el9}
  Requires(post): /usr/bin/chown
  Requires(pre): /usr/bin/mkdir
  Requires(pre): /usr/bin/sed

I’m not entirely certain what the point of explicitly listing chown/mkdir in the Requires is? I can’t think of any Linux (or Unix) system I’ve ever seen without chown/mkdir. sed perhaps, but not chown/mkdir.

Anyways, additionally, the system needed the following RPM’s installed to build (from a relatively minimal server only install):

dnf -y install gcc
dnf -y install gcc-c++

dnf -y install rpm-build
dnf -y install autoconf automake

dnf -y install libcurl-devel
dnf -y install zlib-devel
dnf -y install libzstd-devel

dnf -y --enablerepo=crb install fuse-devel

The rebuilt RPM seems to work in my (albeit limited) testing so far, and the configure output during rpmbuild seem reasonable.

Appears coreutils fails to provide mkdir, but does provide chown, despite the installation error message.

[root@backup01 ~]# rpm -q --provides coreutils
/bin/cat
/bin/chmod
/bin/echo
/bin/ln
/bin/rm
/bin/touch
bundled(gnulib)
coreutils = 8.32-35.el9
coreutils(x86-64) = 8.32-35.el9
coreutils-full = 8.32-35.el9
libstdbuf.so()(64bit)

Go figure…

Anyways, hope it helps someone… perhaps we could get the patch above applied to the EL8 build, and then abuse the EL8 repo?

Cheers,

David

1 Like

Thx! Like this? https://build.opensuse.org/package/rdiff/home:uroni/urbackup-server?linkrev=base&rev=93

They don’t seem to add newer RedHats to OBS :frowning:

Hi, Yeah, RedHat itself seems less than community focused with their last few releases. I suspect due to their IBM overlords.

Anyways I couldn’t hit that URL directly, it requested a login, but poking around if you’re talking about the change:

https://build.opensuse.org/projects/home:uroni/packages/urbackup-server/files/urbackup-server.spec?expand=1

Then, yeah, that was my trivial change.

But thinking about that more, my change only permits a clean build on EL9. It won’t necessarily fix a RPM built on EL8 to install correctly in EL9.

Let me install a CentOS8 VM and get back with you… I suspect the EL8 built RPM will still have bad requirements…

David

If this list is accurate:

https://en.opensuse.org/openSUSE:Build_Service_supported_build_targets

Then they’re way behind on several widely used distros. RHEL, Fedora, and Ubuntu stick out to me.

My suspicion was correct, the trivial change above is insufficient, an RPM built on EL8 is still incomplete on EL9.

Looking through the spec file, I found a number of places where there were “If Fedora, or EL7, or EL9”. (Eh? where’s EL8?) … I went through and fixed them to include EL8. I also gave and simply #if’d out the Requires for chown/mkdir under EL7/8/9.

The complete SPEC file I’m using is attached. (renamed to .txt)

The diff is also below, but obviously kinda ugly in forum format, if anyone wants to peruse.

Seems to work for me, and looks like it does the right things (with regards to systemd service files, firewalld services files, user/group addition, etc…) And seems to work – at least for the one client I’m testing it with.

HTH,

David

urbackup-server.spec.txt (8.0 KB)

> [build@backup08 ~]$ diff -c urbackup-server.spec.org urbackup-server.spec
> *** urbackup-server.spec.org	2024-11-16 14:42:02.381939824 -0500
> --- urbackup-server.spec	2024-11-16 19:07:26.694071678 -0500
> ***************
> *** 55,75 ****
>   Requires: guestfs-tools
>   %endif
>   
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   Requires: libcurl  >= 7.20.0
>   Requires: zlib
>   Requires: libguestfs-tools
>   %endif
>   
> ! %if 0%{?fedora} >= 17 || 0%{?el9}
>   Requires(post): /usr/bin/chown
>   Requires(pre): /usr/bin/mkdir
>   Requires(pre): /usr/bin/sed 
>   %else
>   Requires(post): /bin/chown
>   Requires(pre): /bin/mkdir
>   Requires(pre): /bin/sed 
>   %endif
>   
>   %if 0%{?suse_version}
>   Requires(pre): pwdutils
> --- 55,82 ----
>   Requires: guestfs-tools
>   %endif
>   
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   Requires: libcurl  >= 7.20.0
>   Requires: zlib
>   Requires: libguestfs-tools
>   %endif
>   
> ! %if 0%{?fedora} >= 17
>   Requires(post): /usr/bin/chown
>   Requires(pre): /usr/bin/mkdir
>   Requires(pre): /usr/bin/sed 
>   %else
> + # Not Fedora, is it EL? 
> + %if 0%{?el7}%{?el8}%{?el9}
> + # Do not explicitly Requires chown/mkdir for EL7/8/9, the utilities are in coreutils, and unlikely to be missing.
> + Requires(pre): /usr/bin/sed 
> + %else
> + # Neither Fedora, or EL
>   Requires(post): /bin/chown
>   Requires(pre): /bin/mkdir
>   Requires(pre): /bin/sed 
>   %endif
> + %endif
>   
>   %if 0%{?suse_version}
>   Requires(pre): pwdutils
> ***************
> *** 120,126 ****
>   mkdir -p %{buildroot}%{_bindir}
>   ln -s /usr/sbin/service %{buildroot}%{_bindir}/rc%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
>   mkdir -p %{buildroot}%{_initrddir}
>   mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
> --- 127,133 ----
>   mkdir -p %{buildroot}%{_bindir}
>   ln -s /usr/sbin/service %{buildroot}%{_bindir}/rc%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
>   mkdir -p %{buildroot}%{_initrddir}
>   mkdir -p %{buildroot}%{_prefix}/lib/firewalld/services
> ***************
> *** 131,137 ****
>   %if 0%{?suse_version}
>   install -m 644 defaults_server %{buildroot}%{_fillupdir}/sysconfig.%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   install -m 644 %{_builddir}/%{name}-%{version}/defaults_server %{buildroot}%{_sysconfdir}/sysconfig/%{name}
>   install -m 640 %{_builddir}/%{name}-%{version}/urbackup-server-firewalld.xml %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
>   %endif
> --- 138,144 ----
>   %if 0%{?suse_version}
>   install -m 644 defaults_server %{buildroot}%{_fillupdir}/sysconfig.%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   install -m 644 %{_builddir}/%{name}-%{version}/defaults_server %{buildroot}%{_sysconfdir}/sysconfig/%{name}
>   install -m 640 %{_builddir}/%{name}-%{version}/urbackup-server-firewalld.xml %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
>   %endif
> ***************
> *** 150,156 ****
>   :
>   %service_add_pre %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   getent passwd urbackup > /dev/null || useradd -r -g urbackup  \
>    -s /sbin/nologin urbackup >/dev/null 2>&1
>   :
> --- 157,163 ----
>   :
>   %service_add_pre %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   getent passwd urbackup > /dev/null || useradd -r -g urbackup  \
>    -s /sbin/nologin urbackup >/dev/null 2>&1
>   :
> ***************
> *** 162,168 ****
>   %fillup_only -n %{name}
>   %service_add_post %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   %systemd_post %{name}.service
>   %endif
>   
> --- 169,175 ----
>   %fillup_only -n %{name}
>   %service_add_post %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   %systemd_post %{name}.service
>   %endif
>   
> ***************
> *** 170,176 ****
>   %if 0%{?suse_version}
>   %service_del_preun %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   %systemd_preun %{name}.service
>   %endif
>   
> --- 177,183 ----
>   %if 0%{?suse_version}
>   %service_del_preun %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   %systemd_preun %{name}.service
>   %endif
>   
> ***************
> *** 178,184 ****
>   %if 0%{?suse_version}
>   %service_del_postun %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   %systemd_postun_with_restart %{name}.service
>   %endif
>   /sbin/ldconfig
> --- 185,191 ----
>   %if 0%{?suse_version}
>   %service_del_postun %{name}.service
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   %systemd_postun_with_restart %{name}.service
>   %endif
>   /sbin/ldconfig
> ***************
> *** 209,215 ****
>   %if 0%{?suse_version}
>   %config %{_fillupdir}/sysconfig.%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el9}
>   %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
>   %{_prefix}/lib/firewalld/services/%{name}.xml
>   %endif
> --- 216,222 ----
>   %if 0%{?suse_version}
>   %config %{_fillupdir}/sysconfig.%{name}
>   %endif
> ! %if 0%{?fedora}%{?el7}%{?el8}%{?el9}
>   %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
>   %{_prefix}/lib/firewalld/services/%{name}.xml
>   %endif