rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by duplicati*.noarch.rpm

Hello,

I’m running a Duplicati Client on a Win10 machine with the target system being a homebrew NAS based on Linux Opensuse Leap 15.1 as Samba Fileserver locally over LAN.

I’m VERY happy with how Duplicati is designed and it works for me perfectly.

Besides the Client installation on the Win10 machine, I have also maintained the installation of Duplicati under Opensuse. I’m using this local installation of Duplicati for integrity tests, (running “test all” and also a full restore from time to time on the linux box).

The installation of the duplicati*noarch.rpm has been successful in the past, the issue with libappindicator is also sorted, everything was fine up to the duplicati-2.0.4.38 (canary) / duplicati-2.0.5.1 (beta) respectively.

However, starting with duplicati-2.0.5.101 (canary) in January 2020 i can’t install the duplicati*noarch.rpm any more:

rpm -Uvh --nodeps duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:duplicati-2.0.5.103-2.0.5.103_can################################# [ 50%]
error: unpacking of archive failed: cpio: Bad magic
error: duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch: install failed

rpm -Uvh --test duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch.rpm
error: Failed dependencies:
        libappindicator is needed by duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch
        rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch

The “Bad Magic” seems to be caused by the issue of the “PayloadIsZstd”.

I have tried to educate me about this rpmlib and Zstd, but there is not much info out there or I have missed it. I appears to me that the rpm package is now compressed with a different method that is not supported by the rpm of Opensuse Leap 15.1. However, I might be wrong.

Also, is it only me having the isssue?
Can anyone give a hint how to resolve this issue, please?

Thanks in advance!
Paul

Hello, welcome to the forum!

A change was made less than a month ago to the rpm package dependencies. Intention was to require mono 5.x or higher. Not sure if it is related to your issue but the timing is suspicious.

What version of mono is on this system?

Thank you very much for the kind welcome!

The system is Opensuse Leap 15.1 with a current patch level.
mono-core package version is 5.10.1-lp151.2.59
rpm package version is 4.14.1-lp151.13.0

The old duplicati versions up to 2.0.51 still install just fine.

Paul

Ok, I’m going to try and reproduce your problem… stay tuned…

Wow, … thank you!

The rpm compression has changed from xz to zstd for some reason. Maybe that causes the issue?

$ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' duplicati-2.0.5.1-2.0.5.1_beta_20200118.noarch.rpm
xz
$ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' duplicati-2.0.5.101-2.0.5.101_canary_20200123.noarch.rpm
zstd
$ 

Changes/Switch RPMs to zstd compression from Fedora.

[RFC] Changes/Switch RPMs to zstd compression #11 from openSUSE about dealing with this change.

Bug 1715799 - Re-enable zstd compression support in RHEL-8 rpm Red Hat Enterprise Linux 8 on this.

I assume Duplicati is more interested in a universal install rather than speed. Would forcing xz get that?
Sorry I don’t know much about how the Fedora build works. Might need to get in an expert or several…

Meanwhile, there’s a chance rpm2cpio can convert the file, if you want to see whether it runs if installed.

Sounds like a few distributions are moving towards zstd for packaging. Arch has done so as well.

But can a distro that uses zstd as its own standard generally also install older standards such as xz? Duplicati presumably doesn’t want to do multiple builds, but an old standard may work on new distro. There are also lots of old distros installed, and Duplicati presumably wants to fit as many as possible.
What surprises me, if this is a compression mismatch, is that it’s not been found before. Few installs?
Possibly there’s an alternate theory, but I thought I’d put this one out as a possible one to start with…

Yep that looks like the problem. I was able to reproduce the issue. OpenSUSE 15.1 lacks the library needed to extract the files from the RPM.

Thank you for the hint, but it seems that rpm2cpio on opensuse leap 15.1 can’t handle zstd neither.

rpm2cpio duplicati-2.0.5.101-2.0.5.101_canary_20200123.noarch.rpm | cpio -t
spits out just some garbage for duplicati versions 2.0.5.101 and up. Works nicely for older versions, though.

Hello, I seem to be having the similar problem on CentOS 7.5
I installed zstd and tried rpm -Va --nofiles --nodigest but no love.

Dependencies Resolved

============================================================================================================================================
Package Arch Version Repository Size

Installing:
duplicati noarch 2.0.5.103-2.0.5.103_canary_20200218 /duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch 32 M
Installing for dependencies:
atk x86_64 2.28.1-1.el7 base 263 k
desktop-file-utils x86_64 0.23-2.el7 base 67 k
emacs-filesystem noarch 1:24.3-22.el7 base 58 k
fribidi x86_64 1.0.2-1.el7_7.1 updates 79 k
gdk-pixbuf2 x86_64 2.36.12-3.el7 base 570 k
glib-sharp2 x86_64 2.12.45-0.xamarin.7.epel7 download.mono-project.com_repo_centos7_ 70 k
graphite2 x86_64 1.3.10-1.el7_3 base 115 k
gtk-sharp2 x86_64 2.12.45-0.xamarin.7.epel7 download.mono-project.com_repo_centos7_ 779 k
gtk-update-icon-cache x86_64 3.22.30-3.el7 base 28 k
gtk2 x86_64 2.24.31-1.el7 base 3.4 M
harfbuzz x86_64 1.7.5-2.el7 base 267 k
hicolor-icon-theme noarch 0.12-7.el7 base 42 k
jasper-libs x86_64 1.900.1-33.el7 base 150 k
libXcomposite x86_64 0.4.4-4.1.el7 base 22 k
libXcursor x86_64 1.1.15-1.el7 base 30 k
libXft x86_64 2.3.2-2.el7 base 58 k
libXi x86_64 1.7.9-1.el7 base 40 k
libXinerama x86_64 1.1.3-2.1.el7 base 14 k
libXrandr x86_64 1.5.1-2.el7 base 27 k
libappindicator x86_64 12.10.0-13.el7 base 37 k
libappindicator-sharp x86_64 12.10.0-12.el7 epel 27 k
libdbusmenu x86_64 16.04.0-4.el7 base 132 k
libdbusmenu-gtk2 x86_64 16.04.0-4.el7 base 34 k
libindicator x86_64 12.10.1-6.el7 base 63 k
libthai x86_64 0.1.14-9.el7 base 187 k
pango x86_64 1.42.4-4.el7_7 updates 280 k

Transaction Summary

Install 1 Package (+26 Dependent packages)

Total size: 38 M
Installed size: 54 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
ERROR You need to update rpm to handle:
rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch
RPM needs to be updated
You could try running: rpm -Va --nofiles --nodigest
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2020-03-13.19-30.cAPk7D.yumtx
[root@s192-169-155-147 sourcefiles]# rpm -Va --nofiles --nodigest duplicati-2.0.5.103-2.0.5.103_canary_20200218.noarch

Today I updated my system from Linux Opensuse Leap 15.1 to Opensuse Leap 15.2 and the installation issue described in my original post is gone. Seems that the rpm tool installed with the latest Opensuse version is now capable of understanding the new “Zstd” format.

I was able to update the Duplicati rpm to 2.0.5.106 and then to 2.0.5.107. Very nice, indeed.
Unfortunately the latest release for 2.0.5.108 is missing the rpm package, but this is already another ticket.

1 Like