最近,我在我的 Trusty 笔记本电脑 (14.04 LTS) 上做了很多配置更改。首先,我安装了gnome-shell
,进行了所有更新,然后迁移到LTS 支持堆栈之后,我添加了gnome 3 staging ppa
并从 v3.10 升级gnome-shell
到 v3.12。现在,当我运行时apt-get autoremove
,我会在列表中看到这些包:
The following packages were automatically installed and are no longer required:
evolution-indicator gdm gir1.2-gkbd-3.0 gir1.2-tracker-0.16 gir1.2-xkl-1.0 libgtksourceview2.0-0
libgtksourceview2.0-common libiptcdata0 libtracker-extract-0.16-0
libtracker-miner-0.16-0 libtracker-sparql-0.16-0 linux-headers-4.2.0-23
linux-headers-4.2.0-23-generic linux-image-4.2.0-23-generic
linux-image-extra-4.2.0-23-generic python-gtksourceview2
据我所知,gdm
这是一个非常需要的关键包,因为我正在使用 gnome-shell。我还查看了这答案建议只需运行 即可将软件包标记为“需要” apt-get install <package>
。但我如何知道我可以安全地删除此列表中的哪些软件包而不会影响我的系统?然而,我确切地知道我不需要linux-image-*
和linux-headers
软件包,因为我已经升级到更高版本的内核。但我如何知道其余的软件包?
答案1
该命令apt-cache showpkg <package>
将告诉您软件包的“反向依赖”,即您配置的存储库中的其他哪些软件包(不一定是已安装的软件包)依赖于该软件包。
如果有gdm
很多,所以我编写了这个脚本来遍历所有反向依赖项,以检查是否安装了任何依赖项 - 这表明您可能不应该删除 gdm。
#!/bin/bash
package=$1
apt-cache showpkg $package | sed '1,/Reverse Depends:/d;/Dependencies:/,$d' > /tmp/dependencies.txt
while read line
do
reverse_dependency=$(awk -F '[:,]' '{print $1}' <<< $line)
if dpkg -s $reverse_dependency &> /dev/null
then
echo "$line is installed and depends on $package"
fi
done < /tmp/dependencies.txt
如果你调用脚本,你需要将包作为参数传递,即
./script "gdm"
在我的机器上结果是
$ ./script.sh gdm
plymouth:i386,gdm 3.0.4-0ubuntu11 is installed and depends on gdm
plymouth,gdm 3.0.4-0ubuntu11 is installed and depends on gdm
plymouth:i386,gdm 3.0.4-0ubuntu11 is installed and depends on gdm
plymouth,gdm 3.0.4-0ubuntu11 is installed and depends on gdm