如何寻找没有反向依赖的软件包

230 阅读1分钟

蝶变:寻找没有反向依赖的软件包

找出所有属于孤儿、用户命令或关键组件的Debian软件包。

当试图制作最小的操作系统时,人们希望尽可能多地摆脱非关键的软件包。在Debian下,apt-cache rdepends --installed 在一个给定的软件包上显示反向依赖,或者是一个依赖它的其他软件包的列表。

下面的bash脚本扫描了所有已安装的软件包,并发出了一个没有任何反向依赖的软件包列表。

没有任何反向依赖关系的软件包可能是以下三种情况之一:

  1. 孤儿 - 真正不被任何东西使用。apt-get purge
  2. 一个顶级的用户命令,例如wget
  3. 对启动至关重要的东西。有趣的是,bash 是没有反向依赖的,但很难想象 Debian 在没有它的情况下启动。

好好享受吧!

#!/bin/bash
# provides list of packages that have
# nothing depending on them
for target in `dpkg -l | grep '^ii' | awk '{ print \$2 }'`; do
   if [ "`apt-cache rdepends --installed $target | wc -l`" = "2" ]; then
      echo "$target"
   fi
done