28

I'm running Debian, namely:

# uname -A Linux martlins2 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64 GNU/Linux 

and for some time I see some errors telling that some parts of some packages uses unknown compression while doing apt update. In particular, the cause of the issue lays in the middle of the dpkg:

# apt update (...) # apt upgrade (...) dpkg-deb: error: archive '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up Traceback (most recent call last): File "/usr/share/apt-listchanges/DebianFiles.py", line 124, in readdeb output = subprocess.check_output(command) File "/usr/lib/python3.9/subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.9/subprocess.py", line 528, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['dpkg-deb', '-f', '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb', 'Package', 'Source', 'Version', 'Architecture', 'Status']' returned non-zero exit status 2. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/bin/apt-listchanges", line 323, in <module> main(config) File "/usr/bin/apt-listchanges", line 104, in main pkg = DebianFiles.Package(deb) File "/usr/share/apt-listchanges/DebianFiles.py", line 358, in __init__ parser.readdeb(self.path) File "/usr/share/apt-listchanges/DebianFiles.py", line 127, in readdeb raise RuntimeError(_("Error processing '%(what)s': %(errmsg)s") % RuntimeError: Error processing '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb': Command '['dpkg-deb', '-f', '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb', 'Package', 'Source', 'Version', 'Architecture', 'Status']' returned non-zero exit status 2. dpkg-deb: error: archive '/tmp/apt-dpkg-install-XiLPN8/01-libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb' uses unknown compression for member 'control.tar .zst', giving up dpkg: error processing archive /tmp/apt-dpkg-install-XiLPN8/01-libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb (--unpack): dpkg-deb --control subprocess returned error exit status 2 (...) Errors were encountered while processing: /tmp/apt-dpkg-install-XiLPN8/01-libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb (...) E: Sub-process /usr/bin/dpkg returned an error code (1) 

To proove it, I've run the dpkg command (simplified) directly:

# dpkg -f /var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb 'Package' dpkg-deb: error: archive '/var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up 

The file really does use such compression:

# file /var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb /var/cache/apt/archives/libdrm-amdgpu1_2.4.107+git2109030500.d201a4~oibaf~i_amd64.deb: Debian binary package (format 2.0), with control.tar.zs, data compression zst 

I do have installed the zstd package:

# apt search zstd (...) libzstd1/stable,stable,now 1.4.8+dfsg-2.1 amd64 [installed,automatic] fast lossless compression algorithm (...) zstd/stable,stable,now 1.4.8+dfsg-2.1 amd64 [installed] fast lossless compression algorithm -- CLI tool 

Furthermore, I found following dpkg bugreport: https://bugs.launchpad.net/ubuntu/+source/dpkg/+bug/1764220 saying the zstd support have been added in 1.18.4ubuntu1.7 version. My version of dpkg is 1.20.9:

# dpkg --version Debian 'dpkg' package management program version 1.20.9 (amd64). (...) 

so that may not be an issue.

I've also removed the whole contents of the /var/cache/apt/archives/* and re-update && upgraded. Didn't help.

Do you have any tips what to do with that? Is there/Are there an further packages missing? Does the Debian version doesn't have such feature? Is it an configuration issue? Is there any workaround?

3 Answers 3

41

Debian’s dpkg package didn’t support zstd compression prior to version 1.21.18. Support was added just in time for Debian 12.

I’m guessing you’ve added a Ubuntu PPA; you shouldn’t use those with Debian.

1
  • Oh, you're right! Lessons learned: Check not only the /etc/apt/sources.list/, but also the /etc/apt/sources.list.d/* ones. Commented Oct 7, 2021 at 20:17
31

If you are running Debian < 12 and need to install a .deb package that uses zstd, you can repack it:

# Extract files from the archive ar x some-package.deb # Uncompress zstd files an re-compress them using xz zstd -d < control.tar.zst | xz > control.tar.xz zstd -d < data.tar.zst | xz > data.tar.xz # Re-create the Debian package in /tmp/ ar -m -c -a sdsd /tmp/some-package.deb debian-binary control.tar.xz data.tar.xz # Clean up rm debian-binary control.tar.xz data.tar.xz control.tar.zst data.tar.zst 

You should now be able to install the newly generated package:

apt-get install /tmp/some-package.deb

5
  • 1
    I had a deb repository running on a Debian 10 server. Had this issue when adding a recent Ubuntu deb to the repo (TigerVNC). This solution worked. Commented Jul 18, 2023 at 21:02
  • 1
    Works perfectly. Ran into this on Debian 8 (Netgear ReadyNAS OS fork). Commented Feb 8, 2024 at 23:48
  • 1
    I had to use ar rcs some_package.deb debian-binary control.tar.xz data.tar.xz for the repacking instead. Commented Feb 15, 2024 at 8:54
  • 1
    I also had a leftover file called _gpgorigin otherwise it has worked perfectly for the new vscode update on debian 11. Commented Oct 4, 2024 at 11:41
  • same here : worked perfectly for the new vscode update on debian 11 Commented Oct 9, 2024 at 23:25
3

To expand on @stephen-kitt's answer, this can also occur in Ubuntu when one adds a debian official repo like bookworm to /etc/apt/sources.list and then accidentally upgrades dpkg to the Debian version.

The fix in this case is to remove the source and sudo apt upgrade dpkg/jammy-updates or whatever ubuntu package shows up in apt list.

1
  • or if you are fortunate enough to read this before your sources are jammy, you can use ubuntu 20 (focal): sudo apt upgrade dpkg/focal-updates Commented Sep 24, 2022 at 23:41

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.