元包和软件包之间有什么区别?

我听说过一些被归类为“元包”的软件包。所以现在我想知道元包和普通软件包之间有什么区别?

如果我可以提交一个非常相似的问题,它在另一个渠道上被问过了... ...由我提出。 - kojiro
哦...我只是在查看askubuntu.com,看看这个问题之前是否已经被问过了。 - Nitin Venkatesh
5个回答

https://help.ubuntu.com/community/MetaPackages中得知:
这些软件包并不包含实际的软件,它们只是依赖于其他软件包的安装。
需要注意的是,删除一个元软件包并不会删除它所安装的软件包:
当一个元软件包由于其底层依赖关系的任何一个或多个被自动删除时,元软件包依赖列表中的所有其他软件包仍然保留在系统中。
您可以通过提取(例如)ubuntu-desktop来查看典型元软件包的结构。
apt-get source ubuntu-desktop

看结构,你会发现每个元包推荐的软件包列表,以及将它们全部放在debian/rules中的结构。

参考资料:


1更新怎么样?如果我更新一个元包,依赖关系也会更新吗? - TheOneTeam
一个元包(meta-package)的依赖关系会不会本身是一个元包? - Sajuuk
但是当它是一个元包时,并且它有一个依赖项,所以当我卸载它时,它会删除这个依赖项,那么在这种情况下它还是一个元包吗? - Quidam
这只是对特定软件/包提供/需要的松散分组的包/依赖项的参考,以确保其正常工作。 如果您要卸载此特定软件包,则库/依赖项将不再需要存在于系统中 - 除非其中一些被另一个软件包所需 - 它们也将被删除。 但是,当您获取特定软件包的元软件包,例如整个桌面环境以安装其所有所需的依赖项时,它只是引用它们以进行安装。 - polendina
如果您移除其中一个被引用的软件包,其他软件包将保留,因为它们之间没有相关性或依赖关系,它们共同为最终软件包的功能做出贡献。 - polendina

元包是指向现有软件包或软件包的链接。因此,它们本质上是安装其他软件包的脚本。它们将这些软件包保留为依赖项。
例如:软件包ubuntu-desktop会安装Ubuntu默认用户界面所需的所有软件包。但是卸载该软件包不会卸载其依赖项。

一个元包会引入其他的包,根据定义,它不应该做任何其他事情。
一个包通常会包含一些内容(文件、应用程序、文档、脚本等)。

简单来说,元包什么都没有,除了空的文档。它唯一拥有的就是元数据,这意味着它可以有依赖关系、冲突等等...

元包不是你常规的软件包。它是一种始终安装软件的最新版本的方法。例如,在Ubuntu上,“emacs”元包始终安装最新可用的Emacs版本。