Connor
Connor

Reputation: 64644

dpkg error: contains ununderstood data member

I'm trying to install a jailbreak tweak using make package install but I'm receiving this error from dpkg:

dpkg-deb: file `/tmp/_theos_install.deb' contains ununderstood data member data.tar.xz     , giving up
dpkg: error processing /tmp/_theos_install.deb (--install):
subprocess dpkg-deb --fsys-tarfile returned error exit status 2
Errors were encountered while processing:
/tmp/_theos_install.deb
make: *** [internal-install] Error 1

So as far as I can tell it isn't able to understand the .xz extension, but I'm not sure why that file is being created. Thanks for the help.

Upvotes: 10

Views: 25865

Answers (4)

Supermanuu
Supermanuu

Reputation: 41

Another option that you can try is to unpack the .deb that you where trying to install and repack with no XZ compression.

  1. Unpack:

    mkdir package/ && dpkg -x package.deb package/
    
  2. Pack:

    dpkg-deb --build -Zgzip package/
    

You can then rename the resulting package with:

dpkg-name -o package.deb

Or simply name the package dir with the name of your package.

Important: In order to perform this, you need to install dpkg-dev package:

sudo apt update
sudo apt install dpkg-dev

Upvotes: 1

Neil Stockbridge
Neil Stockbridge

Reputation: 604

In my case I was building a package on Ubuntu 18.04 and trying to install that package on Debian 7 (airgapped). I had to change the line in the Makefile that read:

dpkg --build $(DESTDIR)

..to:

dpkg-deb --build -Zgzip $(DESTDIR)

Thanks Connor!

Upvotes: 0

Connor
Connor

Reputation: 64644

I found out how to fix it. In $THEOS/makefiles/package/deb.mk replace this line:

 $(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

with this line:

$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

Upvotes: 26

rul
rul

Reputation: 824

The .deb file is created because you told Theos build system to do that. The package install rule of the Makefile is creating the Debian package using xz compression. Now, this kind of compression is supported by versions of dpkg equal or higher than 1.15.6.

So, in order to solve your problem, you should update dpkg to a newer version or install Theos without packaging support. Probably a simple make install will do it.

In case that updating dpkg isn't possible and you don't want to install the program without package management support, the other (more painful) method is to change the algorithm in which the package is compressed. Here you have good information about how to do this.

Upvotes: 6

Related Questions