dpkg-deb: error: archive 'xxxxx.deb' has premature member 'control.tar.xz' before 'control.tar.gz'

安装dpkg报错:

dpkg-deb: error: archive 'xxxxx.deb' has premature member 'control.tar.xz' before 'control.tar.gz' ,giving up

这个问题的原因是:dpkg无法解析tar.xz格式的control.tar.xz文件。
解决方案:
更新dpkg即可,这是dpkg工具的bug,只在旧版的dpkg会出现这个问题。在dpkg_1.17.5ubuntu5.8以及之后的版本都不会出现这个问题,dpkg_1.17.5ubuntu5.8这个版本也是ubuntu14.04自带源内的版本。

旧版的系统上更新dpkg就可以解决

软件的提供者

对于软件安装包的提供者而言,一定是希望安装包具有更好的兼容性。最好可以使用xz压缩data部分,仍然用gzip打control部分。旧版的dpkg-deb,默认会把control和data分开用不同的格式打包,control默认始终使用gzip的格式打包。而新版的dpkg-deb(1.19.0)之后都会使用相同的格式压缩control和data。如果你指定了-Z xz ,那就都是xz。

还好,dpkg-deb提供了一个参数:--no-uniform-compression加上这一句就可以了。

默认是:--uniform-compression,代表使用统一的格式进行压缩。加上--no-uniform-compression后不再统一,control使用gz压缩。
详见:http://www.tin.org/bin/man.cgi?section=1&topic=dpkg-deb

你可能感兴趣的:(Linux)