我想尝试安装cdebconf-udeb
在 Debian Buster Docker 容器中,但apt search cdebconf-udeb
结果是空的。如果我真的想的话,我该如何尝试安装这个软件包呢?
语境
我正在构建一个 Docker 镜像。我的依赖之一是tzdata
它本身依赖于debconf-2.0
(或者debconf
)。
现在debconf-2.0
cdebconf
可以由、debconf
、 或提供cdebconf-udeb
。cdebconf
和都debconf
对 具有(递归)依赖性perl-base
。我想最小化容器的大小并摆脱 Perl 依赖。我想我可以通过安装来尝试这个cdebconf-udeb
,它没有 Perl 依赖项并且仍然会提供debconf-2.0
.但是,我似乎无法在 aptitude 中找到该包。
我确实知道它cdebconf-udeb
仅用于构建 debian-installer 映像,而不适用于普通的 Debian 系统。不过,我仍然想尝试是否可以使用它来最小化我的 Docker 镜像。
我可以安装吗cdebconf-udeb
最小化我的 Docker 容器?
我知道这个类似的问题,但是评论中建议我提出一个新问题。
答案1
这是减小容器尺寸的有趣方法!任何相关的危险将仅限于生成的容器映像......
apt
&公司不知道如何处理 micro- deb
s,因此您需要自己完成它们的工作。对于cdebconf-udeb
,这意味着下载udeb
适合您的目标体系结构的 ,以及libc6-udeb
、libdebian-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
已安装的依赖项。此外,这导致了我想要安装的其他一些软件包的下游问题。