首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在基于Debian的码头容器中安装一个在Ubuntu上带有checkinstall的deb文件构建

在基于Debian的码头容器中安装一个在Ubuntu上带有checkinstall的deb文件构建
EN

Unix & Linux用户
提问于 2022-10-30 13:32:56
回答 1查看 1K关注 0票数 1

我在我的Ubuntu22.04笔记本电脑上编译了一个C++软件,并使用checkinstall来安装它。这个文件构建了相应的.deb文件,这很好。

但是现在我想将这个.deb文件安装到一个基于"Debian /Linux11(斗牛眼)“的码头容器中,dpkg显示了这个错误:

代码语言:javascript
复制
# dpkg --install mypackage-8.0.0_20221030-1_amd64.deb 
dpkg-deb: error: archive 'mypackage-8.0.0_20221030-1_amd64.deb' uses unknown compression for member 'control.tar.zst', giving up
dpkg: error processing archive mypackage-8.0.0_20221030-1_amd64.deb (--install):
 dpkg-deb --control subprocess returned error exit status 2
Errors were encountered while processing:
 mypackage-8.0.0_20221030-1_amd64.deb

我如何在不必再次编译软件的情况下将这个.deb文件安装到我的容器中(这意味着将所有C++构建工具安装到我的容器中,这是我想要避免的……)?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-10-30 14:13:50

dpkg in Debian 不支持zstd压缩.为了能够在Debian中提取您的包,您需要转换它:

  • 提取其成分: ar -x mypackage-8.0.0_20221030-1_ar 64. its
  • 解压缩: zstd -d control.tar.zst zstd -d data.tar.zst
  • 重新压缩它们: xz control.tar xz data.tar
  • 重新创建您的包:re 8.0.0_20221030-1_amd64.deb ar -rc mypackage-8.0.0_20221030-1_amd64.deb debian control.tar.xz data.tar.xz

这将产生Debian的dpkg至少可以尝试处理的包。因为您的包是在Ubuntu22.04上构建的,所以很容易遇到依赖问题。

为了获得最好的结果,您应该在要运行它的平台上构建包。在您的示例中,这意味着要么使用ubuntu:22.04作为容器的基本映像,要么在Debian 11容器中重新构建包。

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/723013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档