dpkg错误:包含未识别的数据成员

9

我正在尝试使用make package install来安装越狱插件,但是我收到了来自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

据我所知,它无法理解.xz扩展名,但我不确定为什么会创建该文件。感谢您的帮助。
4个回答

26

我找到了解决方法。在$THEOS/makefiles/package/deb.mk中,将这一行替换为:

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

使用这行代码:

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

我遇到了同样的问题,使用的是Ubuntu,但找不到deb.mk文件。 - Sachin Singh
如果我再要来看这个……一次……我就要尖叫了! - Alex Gray
其他调整程序员建议使用 -Zlzma。 - britta
2
这给我又带来了一个错误: 找不到"./com.mytest.tweak2_0.0.1-1_iphoneos-arm.deb"文件进行安装。终止操作。你有什么想法吗? - mylord
终于找到了! - hoangpx

6
.deb文件是因为您告诉Theos构建系统去创建它的。Makefile中的package install规则使用xz压缩创建Debian包。现在,这种压缩方式只支持版本等于或高于1.15.6的dpkg
所以,为了解决您的问题,您应该更新dpkg到一个新版本或者安装没有打包支持的Theos。可能一个简单的make install就可以完成。
如果不能更新dpkg并且又不想安装不带软件包管理支持的程序,另一种(更痛苦的)方法是改变软件包压缩的算法。在这里,您可以得到有关如何操作的好信息。

虽然我不建议你这样做,但如果你想这么做,你可以在Makefile文件中找到规则的作用。 - rul
我认为我无法更新dpkg,因为我已经拥有了ios的最新版本。那你有什么建议呢? - Connor
我缺乏有关您想要做什么的信息,但如果我是您,我首先会尝试安装不支持包管理的工具(可能使用 make install,就像我在我的回答中所说的那样)。如果不可能,我会尝试更改压缩方法。我已经更新了我的回答,提供了更多相关信息。 - rul
其他调整开发人员建议使用-Zlzma。 - britta
我认为我已经拥有最新版本了。是吗? RoverMR-2:tweak2 rover$ brew upgrade dpkg 错误:dpkg-1.17.21已经安装。 - mylord
显示剩余3条评论

0
在我的情况下,我正在Ubuntu 18.04上构建一个软件包,并尝试在Debian 7(离线)上安装该软件包。我不得不更改Makefile中的一行,该行读取:
dpkg --build $(DESTDIR)

..到:

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

谢谢Connor!


0

你可以尝试的另一个选项是解压你要安装的.deb文件,然后重新打包时不使用XZ压缩。

  1. 解包:

    mkdir package/ && dpkg -x package.deb package/
    
  2. 打包:

    dpkg-deb --build -Zgzip package/
    

然后,您可以使用以下命令重命名生成的程序包:

dpkg-name -o package.deb

或者直接将package目录命名为您的包名。

重要提示:为了执行此操作,您需要安装dpkg-dev软件包:

sudo apt update
sudo apt install dpkg-dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接