我在我的 Ubuntu 22.04 笔记本电脑上编译了一个 C++ 软件,并用来checkinstall
安装它。这构建了相应的.deb
文件,这很好。
但现在我想将该.deb
文件安装到基于“Debian GNU/Linux 11 (bullseye)”的 docker 容器中并dpkg
显示此错误:
# 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++ 构建工具安装到我的容器中,我想避免这种情况......)?
dpkg
在 Debian中不支持zstd
压缩。为了能够在 Debian 中提取您的软件包,您需要对其进行转换:提取其成分:
解压它们:
重新压缩它们:
重新创建你的包:
这将产生一个 Debian
dpkg
至少可以尝试处理的软件包。由于您的软件包是在 Ubuntu 22.04 上构建的,因此您很可能会遇到依赖问题。为了获得最佳结果,您应该真正在要运行它的平台上构建包。在您的情况下,这意味着要么
ubuntu:22.04
用作容器的基础映像,要么在 Debian 11 容器中重建您的包。