众所周知,debootstrap可以帮助我们安装一个无比精简的Debian系统。但是,在使用了dnf直接安装精简版Fedora后,我不禁思考:为什么我不能用Debian自带的包管理器(?)来部署一个系统,反而要用额外的程序呢?于是我开始了尝试。
apt-get似乎并未提供很方便地在其他目录安装软件包的功能。所以,最后的方案是用apt-get获取软件包,用apt-cache分析依赖以及用dpkg安装软件包。
首先要安装所有标记为essential的包,这些是一个Debian系统必须的包。这可以用apt-cache命令列出来。
% apt-cache show "~E" | grep -oP "(?<=Package: ).*+" > essential-packages
它们的依赖也同样重要(顺便排序去重)。
% cat essential-packages| xargs -i apt-cache --recurse --no-suggests --no-recommends --no-enhances --no-replaces --no-conflicts --no-breaks depends {} | grep "^\w" | sort | uniq > pkgs-to-install
不过,这命令也会加入一些本可以多选一的依赖,它们有时甚至是冲突的,所以我们应该删除一点。比如libelogind0(和libsystemd0冲突),还推荐删除gpgv1(已过时)。
现在我们可以开始下载,然后安装。
% apt-get download $(cat pkgs-to-install)
# ls *.deb | xargs -i dpkg -x {} <fakeroot>
# dpkg --root=<fakeroot> -i --force-depends *.deb
其中第二条命令是把所有的包解压到fakeroot,但并没有更新数据库,这是为了防止部分安装过程中需要的程序跑不起来。第二遍则是真正地软件安装包(防止因为安装顺序问题出错,所以强制要求无视依赖,毕竟我们依赖必定是齐全的)。
就好了。(虽然usrmerge这一步