为什么删除 gnome-core 并没有删除它的所有依赖项?

Dev*_*oid 10 uninstall apt metapackages

gnome-core在 Ubuntu(小猎犬骨骼的最小版本)上安装了软件包,它几乎是 600mb。但是,当我尝试使用

sudo apt-get autoremove gnome-core 
Run Code Online (Sandbox Code Playgroud)

它仅删除 49 MB。任何想法,如何删除整个 600 MB?

Anw*_*war 16

gnome-core 是一个元包,元包的情况是——

他们拉取软件包来安装,但删除它们不会删除所有拉取的软件包

因此,除非您复制了 gnome-core 安装的软件包的名称,否则几乎不可能删除所有 600 MB。

但是,您可以通过命令获取拉取包的名称

apt-cache depends gnome-core 
Run Code Online (Sandbox Code Playgroud)

并尝试将包裹一一取出。您应该始终检查它是否正在删除任何必要的包。

或者您可以通过以下方式以更有用的方式获取软件包列表:

apt-cache depends gnome-core | cut -f 2 -d ':'  | tr '\n' ' '
Run Code Online (Sandbox Code Playgroud)

这将列出 gnome-core 包的所有依赖项,仅忽略<>标记中的包名。

我怎么知道是否正在删除任何系统包?

当您看到命令释放了大量空间(超过 600MB)时,您应该知道您删除的空间多于安装的空间。apt-get会让你知道有多少空间将被释放,然后用这样的消息删除

After this operation, 384 kB disk space will be freed.
Run Code Online (Sandbox Code Playgroud)

并且当您尝试删除必要的系统包时,apt-get会显示一条警告消息。

建议:建议您从第一个命令中获取一个包列表,并尝试将它们一个一个删除。它更安全。如果您看到警告,请跳过删除该包。我明白了,gnome-core 中的大多数软件包都与 GUI 相关,我想删除这些软件包不会损害您的系统(如果您不想要 GUI)

希望这可以帮助!


关于删除包的一些注意事项

删除主包时如何卸载拉取的包?

当您安装一个包并且该包依赖于其他一些包时,依赖包也会被安装并标记为 auto。这意味着,Apt 系统将它们标记为Automatically installed as dependency of another package。它帮助 Apt 系统识别不需要的包。

当您卸载主包时,拉取的包也会在系统中被标记为过时或不需要的包。您可以通过提供autoremove选项来删除它们apt-get(aptitude 会自动与 master 包一起删除它们)

此规则的一个例外是,如果您稍后安装另一个也依赖于拉取的软件包的软件包,则在您删除第一个主软件包时,拉取的软件包不会被标记为过时。

示例:您安装了一个X依赖于 package 的包Y。安装后XY也会安装并标记为自动。如果您不安装另一个Z同样依赖于 的软件包Y,则删除X会降低 renderY的用处,并且 Apt 系统会将其标记为过时,您可以使用autoremove选项将其删除。

但是,如果你安装一个软件包Z之后X,其也取决于Y,那么只有删除X不标记Y为过时的包,你不能将其删除autoremove选项

但请注意,如果你删除软件包Y安装后X,它会删除包Y包括X,因为X不能停留不Y和你想删除Y,你也想删除的手段X。Apt 将在删除时X自动删除,Y而不是将其标记为过时,以便以后通过autoremove选项删除。

尝试示例: ubuntu-desktop包是元包。它用于安装标准的 Ubuntu 桌面。尝试删除它,只会删除那个包。

还可以尝试安装lubuntu-desktop(您可能不想安装它,因为下载量很大)。但是,当您尝试删除它时,只会删除小包装lubuntu-desktop

Apt 以不同的方式处理元包

像 gnome-core、ubuntu-restricted-extras 这样的元包也被称为虚拟包。之所以这样叫,是因为它们基本上都是空包,它们依靠它们来拉动其他包。例如, ubuntu-restricted-extras 依赖(在 12.04 中)以下软件包:

ubuntu-restricted-addons
ttf-mscorefonts-installer
unrar
gstreamer0.10-plugins-bad-multiverse
libavcodec-extra-53
Run Code Online (Sandbox Code Playgroud)

其中,ubuntu-restricted-addons 本身是另一个元包。由于元软件包仅用于拉取软件包,因此安装它们不会将拉取的软件包标记为 auto,而是将它们标记为手动安装。结果?仅删除主元包不会将拉取的包标记为过时,并且您无法通过autoremove选项删除它们。这就是为什么您需要手动删除元包的每个拉取包的原因。

示例:您安装了一个X依赖于包YZ. 当您安装它时,YZ包没有标记为 auto (作为另一个包的依赖自动安装),而是标记为手动安装。在以后要删除时X,只会删除虚拟X包。两者,Y并且Z,保留在系统中,你不能卸载它们autoremove的选项。