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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章