如何卸载非依赖包?

如何卸载非依赖包?

如何找到所有手动安装且不依赖其他已安装软件包的软件包?

答案1

简短的回答是:使用aptitude如下方法:

aptitude -F%p search '?installed?not(?automatic)

但不幸的是,这个命令返回许多与查询匹配但不是你所期望的包,原因有二:

  1. 系统初始安装期间安装了某些软件包,但这些软件包未自动安装

  2. 作为元包依赖项安装的包也可能导致非自动安装

我之前想到的解决方案是将前面的命令与dpkg日志进行匹配,至少尝试消除前面问题列表中第 1 点的影响:

#!/bin/bash

export LC_COLLATE=C

eval $(lesspipe)

vars=($(less $(ls -rt /var/log/dpkg.log*) | grep 'status installed grub-pc' | head -1))
date="${vars[0]}"
time="${vars[1]}"

join \
  <(aptitude -F%p search '?installed?not(?automatic)' |
    sort) \
  <(less $(ls -rt /var/log/dpkg.log*) |
    awk -v date=$date -v time=$time '(($1 == date && $2 > time) || $1 > date) && $3 == "install" { print $4, $1, $2 }' |
    sort -u) |
  awk '{ print $2, $3, $1 }' |
  sort

这假设这grub-pc是初始安装期间安装的最后一个包,并且绝不是完美的,但可以为您提供一个粗略的信息。

相关内容