安装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
本文解决dpkg在处理tar.xz格式control文件时的错误,更新dpkg到1.17.5ubuntu5.8或以上版本可修复此bug。同时,为提高软件包兼容性,建议使用gz压缩control部分,使用xz压缩data部分。
3749





