如何在 Debian 中安装 udeb 软件包?

如何在 Debian 中安装 udeb 软件包?

我想尝试安装cdebconf-udeb在 Debian Buster Docker 容器中,但apt search cdebconf-udeb结果是空的。如果我真的想的话,我该如何尝试安装这个软件包呢?

语境

我正在构建一个 Docker 镜像。我的依赖之一是tzdata它本身依赖于debconf-2.0(或者debconf)。

现在debconf-2.0cdebconf可以由、debconf、 或提供cdebconf-udebcdebconf和都debconf对 具有(递归)依赖性perl-base。我想最小化容器的大小并摆脱 Perl 依赖。我想我可以通过安装来尝试这个cdebconf-udeb,它没有 Perl 依赖项并且仍然会提供debconf-2.0.但是,我似乎无法在 aptitude 中找到该包。

我确实知道它cdebconf-udeb仅用于构建 debian-installer 映像,而不适用于普通的 Debian 系统。不过,我仍然想尝试是否可以使用它来最小化我的 Docker 镜像。

我可以安装吗cdebconf-udeb最小化我的 Docker 容器?

我知道这个类似的问题,但是评论中建议我提出一个新问题。

答案1

这是减小容器尺寸的有趣方法!任何相关的危险将仅限于生成的容器映像......

apt&公司不知道如何处理 micro- debs,因此您需要自己完成它们的工作。对于cdebconf-udeb,这意味着下载udeb适合您的目标体系结构的 ,以及libc6-udeblibdebian-installer4-udeb和 的那些libtextwrap1-udeb。然后您可以安装所有带有dpkg -i.因为 micro-deb不使用多体系结构,所以这些库不会与它们的“老大哥”发生冲突。

将要在某些情况下,最终会出现重复的库,并且我不确定微变deb体是否包含标准变体支持的所有功能,因此您可能会遇到问题。对于任何依赖于您最终将放弃的基本包的东西也是如此,例如perl-base(包不应该声明它们对基本包的依赖关系,除非它们需要版本化的依赖项;任何包都可以假设所有基本包已安装)。

答案2

根据斯蒂芬的回答,我尝试遵循:

# docker build --tag udeb-experiment --file ./Dockerfile .
FROM debian:buster-slim

RUN apt-get update \
    && apt-get install --quiet --yes --no-install-recommends \
        wget \
    && apt-get clean \
    && mkdir /tmp/debs \
    && cd /tmp/debs \
    && wget http://ftp.de.debian.org/debian/pool/main/g/glibc/libc6-udeb_2.28-10_amd64.udeb \
    && wget http://ftp.de.debian.org/debian/pool/main/c/cdebconf/cdebconf-udeb_0.249_amd64.udeb \
    && wget http://ftp.de.debian.org/debian/pool/main/libd/libdebian-installer/libdebian-installer4-udeb_0.119_amd64.udeb \
    && wget http://ftp.de.debian.org/debian/pool/main/libt/libtextwrap/libtextwrap1-udeb_0.1-14.2_amd64.udeb \
    && dpkg -i --force overwrite ./*.udeb \
    && apt-get purge --auto-remove --yes --allow-remove-essential \
        wget \
    && apt-get clean \
    && rm --recursive --force /var/lib/apt/lists/* /tmp/debs

这会用 udeb 覆盖一些库。然而,这并没有减少大小,也没有摆脱 perl 依赖。 Apt 仍然列出了debconf已安装的依赖项。此外,这导致了我想要安装的其他一些软件包的下游问题。

相关内容