过时的包与孤立的包

过时和孤立的包之间有什么区别? 更具体地说,为什么deborphan产生这样的:

 dave@ubuntu:~$ deborphan libbind9-80 libllvm3.1 libgrail5 libpython3.2 libsvga1 libarchive12 libdirectfb-1.2-9 gcalctool liblwres80 libqpdf8 libkms1 libnux-3.0-0 

…而aptitude search '~o'产生这个:

 dave@ubuntu:~$ aptitude search '~o' idA libarchive12 - Multi-format archive and compression library (shared li i libbind9-80 - BIND9 Shared Library used by BIND i libdns81 - DNS Shared Library used by BIND i libdrm-nouveau1a - Userspace interface to nouveau-specific kernel DRM serv idA libgrail5 - Gesture Recognition And Instantiation Library i libisc83 - ISC Shared Library used by BIND i libisccc80 - Command Channel Library used by BIND i libisccfg82 - Config File Handling Library used by BIND i liblwres80 - Lightweight Resolver Library used by BIND idA libnux-3.0-0 - Visual rendering toolkit for real-time applications - s idA libnux-3.0-common - Visual rendering toolkit for real-time applications - c idA libpython3.2 - Shared Python runtime library (version 3.2) idA libqpdf8 - runtime library for PDF transformation/inspection softw i libudev0 - udev library i A linux-headers-3.5.0-27 - Header files related to Linux kernel version 3.5.0 i A linux-headers-3.5.0-27-generic - Linux kernel headers for version 3.5.0 on 32 bit x86 SM i linux-image-3.5.0-27-generic - Linux kernel image for version 3.5.0 on 32 bit x86 SMP i linux-image-extra-3.5.0-27-generic - Linux kernel image for version 3.5.0 on 32 bit x86 SMP i python3.2 - Interactive high-level object-oriented language (versio i python3.2-minimal - Minimal subset of the Python language (version 3.2) 

奖金问题: apt-get autoremove更加不同。 为什么?

 dave@ubuntu:~$ sudo apt-get --purge autoremove [sudo] password for dave: Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: gksu* libarchive12* libdirectfb-1.2-9* libgksu2-0* libgnome-menu2* libgrail5* libllvm3.1* libnux-3.0-0* libnux-3.0-common* libpython3.2* libqpdf8* libsvga1* libts-0.0-0* libx86-1* mobile-broadband-provider-info* python-imaging* python-imaging-compat* python- oauth* tsconf* 0 upgraded, 0 newly installed, 19 to remove and 0 not upgraded. After this operation, 33.8 MB disk space will be freed. Do you want to continue [Y/n]? n Abort. 

如果有人想知道,升级到13.04是促使这一点。

简而言之,过时的包不再出现在列表中的任何存储库中。 孤立的包是自动依赖,其“依赖”已全部卸载。 而apt-get autoremove只考虑apt安装的孤立软件包来解决依赖关系。

过时的包裹

您可能知道, apt会保留一个可以从中获取包的存储库列表。 但有时,包将从存储库中删除。 也许没有人再照顾(维护)包,并且(非常)旧的最新版本已经成为安全风险。 或者程序可能已更改其名称,程序包名称也相应更改,旧名称下的旧程序包将被删除。 还有其他可能的原因导致从存储库中删除包。

如果您的系统上安装了软件包,但您的apt在其列表中的任何存储库中都找不到该软件包,那么该软件包将被视为“过时”。

孤儿包

您可能也知道, apt可以管理包之间的依赖关系。 比如说,一个名为“greatprogram”的程序需要一个名为“greatlibrary”的库来工作。 因此,包含greatlibrary的包可以标记为包含greatprogram的包的自动依赖。 您将无法安装greatprogram包,除非已安装了greatlibrary(或将使用相同的命令安装)。

但是如果你在晚些时候卸载了大程序并留下了大量的图书馆呢? 在这种情况下,一旦至少有一个其他包需要greatlibrary作为依赖,但现在没有其他包再做。 那些“遗留”的包被称为“孤儿包”。

apt-get autoremove

您可能知道的另一个事实是, apt可以自动为您解决依赖关系。 假设您要安装前面提到的大程序,但还没有安装好的库。 apt-get “notices”表示存在不满意的依赖关系,并且还提供了安装greatlibrary的function。

apt-get autoremove您删除以这种方式安装的任何孤立软件包以解决依赖关系 。 以其他方式安装的孤立软件包不在autoremove的列表中。 比方说,如果您在安装greatprogram之前自己安装了大型图书馆,并且稍后卸载了大程序,那么伟大的图书馆仍然会成为孤儿。 但autoremove不会处理它,因为它没有自动安装,因为已解析依赖。