s.k*_*s.k 1 ubuntu debian dpkg checkinstall deb
我在我的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
Run Code Online (Sandbox Code Playgroud)
如何将此.deb
文件安装到我的容器中,而无需再次编译软件(这意味着将所有 C++ 构建工具安装到我的容器中,这是我想避免的......)?
dpkg
在 Debian 中,\xe2\x80\x99t 不支持zstd
压缩。为了能够在 Debian 中提取您的软件包,您需要将其转换:
提取其成分:
\nar -x mypackage-8.0.0_20221030-1_amd64.deb\n
Run Code Online (Sandbox Code Playgroud)\n解压它们:
\nzstd -d control.tar.zst\nzstd -d data.tar.zst\n
Run Code Online (Sandbox Code Playgroud)\n重新压缩它们:
\nxz control.tar\nxz data.tar\n
Run Code Online (Sandbox Code Playgroud)\n重新创建你的包:
\nrm mypackage-8.0.0_20221030-1_amd64.deb \nar -rc mypackage-8.0.0_20221030-1_amd64.deb debian-binary control.tar.xz data.tar.xz\n
Run Code Online (Sandbox Code Playgroud)\ndpkg
这将生成一个 Debian\xe2\x80\x99s至少可以尝试处理的包。由于您的软件包是在 Ubuntu 22.04 上构建的,因此您\xe2\x80\x99 很容易遇到依赖性问题。
为了获得最佳结果,您确实应该在要运行该包的平台上构建该包。就您而言,这意味着要么用作ubuntu:22.04
您的容器\xe2\x80\x99s 基础映像,要么在 Debian 11 容器中重建您的软件包。
归档时间: |
|
查看次数: |
1654 次 |
最近记录: |