对于我安装的每个包,我想知道如果卸载它会安装哪些包。我需要的输出示例是 ( package: list of deps):
abc: foo bar
bcd: baz abc
bdd: baz fuubar
Run Code Online (Sandbox Code Playgroud)
附加
如果我检查如果我ppp使用apt-get以下方法删除包,真的会删除什么:
$ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2)
gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp
Run Code Online (Sandbox Code Playgroud)
我看到它与apt-cacheshow 给我的不同(我认为不包括递归依赖项):
$ apt-cache show ppp | grep '^Breaks: '
Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)
Run Code Online (Sandbox Code Playgroud)
附加 2
是否dpkg --get-selections | cut -f1有一种可靠的方法来获取要迭代的已安装软件包列表?
J. *_*ker 12
你在这里问了几个不同的问题,我希望我至少可以帮助一两个。
要列出所有已安装的软件包,请使用dpkg以字段分隔的列表输出
dpkg -l
Run Code Online (Sandbox Code Playgroud)
只获取包列表,没有额外的字段,这样你就可以在其他地方用管道把它传送出去。
dpkg -l | awk '{print $2 }' # Pipe to grep after the awk, or glob from dpkg
Run Code Online (Sandbox Code Playgroud)
例如,如果我想删除旧内核,
apt-get purge `dpkg -l linux* | awk '{print $2}' | grep 3.0.0-12`
Run Code Online (Sandbox Code Playgroud)
处理所有不需要的依赖项的最简单方法是使用debfoster. 它以交互方式运行并检查您想要的内容及其依赖项,并且可以删除或列出不是递归依赖项的内容。
要列出特定包的所有递归依赖项,
debfoster -d $PACKAGE ## PACKAGE is the specific package.
Run Code Online (Sandbox Code Playgroud)
执行后,debfoster您可以检查包还具有的任何依赖项,
debfoster -e $PACKAGE ## PACKAGE is the specific package.
Run Code Online (Sandbox Code Playgroud)
列出“孤立”包的一个非常好的方法是使用deborphan. deborphan不带选项运行,它将列出所有“孤立”包。'orphan' 是一个不依赖任何东西的包,你还没有明确安装。
我还喜欢在全新安装后清理任何“孤立”包。在我删除了特定的包之后,你可以得到任何遗漏的东西apt-get autoremove --purge,
apt-get purge `deborphan`
Run Code Online (Sandbox Code Playgroud)
最后,有时你不这样做--purge并最终得到包“剩菜”,新版本的apt-get可以自动删除它们。要从已卸载的软件包运行中删除所有“剩余物”,
apt-get autoclean
Run Code Online (Sandbox Code Playgroud)
如果您没有新版本的apt-get,您可以随时使用这些命令删除它们。如果不存在“剩余”文件,它们会出错,似乎 autoclean 偶尔会丢失一些文件。
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs dpkg --purge
Run Code Online (Sandbox Code Playgroud)
apt-cache show pkgname1 pkgname2...
Run Code Online (Sandbox Code Playgroud)
将(除其他外)列出这些(运行时)依赖项。这通常就足够了,除非您将其送入机器进行进一步加工。如果您希望它完全符合您所说的格式,您可能需要编写一个脚本。
| 归档时间: |
|
| 查看次数: |
13309 次 |
| 最近记录: |