Eu compilei um software C++ no meu laptop Ubuntu 22.04 e costumava checkinstall
instalá-lo. Isso cria o .deb
arquivo correspondente e isso é bom.
Mas agora eu quero instalar esse .deb
arquivo em um contêiner docker baseado em "Debian GNU/Linux 11 (bullseye)" e dpkg
mostra este erro:
# 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
Como eu poderia instalar este .deb
arquivo em meu container sem ter que compilar o software novamente (o que significará instalar todas as ferramentas de construção C++ em meu container, o que eu quero evitar...)?
dpkg
no Debian não suportazstd
compressão . Para poder extrair seu pacote no Debian, você precisa convertê-lo:extrair seus componentes:
descompacte-os:
recomprima-os:
recrie seu pacote:
Isto irá produzir um pacote que o Debian
dpkg
pode pelo menos tentar processar. Como seu pacote foi construído no Ubuntu 22.04, você corre o risco de ter problemas de dependência.Para obter melhores resultados, você deve realmente construir o pacote na plataforma em que deseja executá-lo. No seu caso, isso significa usar
ubuntu:22.04
como imagem base do seu contêiner ou reconstruir seu pacote em um contêiner Debian 11.