Difference between revisions of "Meta package and package group"

From ArchWiki
Jump to navigation Jump to search
(→‎Difference between meta package and package group: remove the "flexible" keyword (meta packages are arguably flexible from the packagers' point of view, because they can add more dependencies to affect all users and not just the new installations))
Line 14: Line 14:
  
 
* Meta packages can be installed just like any other package (see [[pacman#Installing specific packages]]).
 
* Meta packages can be installed just like any other package (see [[pacman#Installing specific packages]]).
* You can remove a meta package like any other package (see [[pacman#Removing packages]]).
+
* Meta packages can be removed like any other package (see [[pacman#Removing packages]]).
 
* Any new member packages will be installed when the meta package itself is updated with a new set of dependencies.
 
* Any new member packages will be installed when the meta package itself is updated with a new set of dependencies.
* You cannot choose which meta package dependencies you wish to install.
+
* Users cannot choose which meta package dependencies they wish to install.
* You cannot remove meta package dependencies without having to uninstall the meta package itself.
+
* Users cannot remove meta package dependencies without having to uninstall the meta package itself.
  
 
''group'':
 
''group'':
  
* Package groups will prompt you to select the packages from the group that you wish to install (see [[pacman#Installing package groups]]).
+
* Package groups will prompt users to select the packages from the group that they wish to install (see [[pacman#Installing package groups]]).
* You cannot uninstall a group, because you installed a list of packages.
+
* Users cannot uninstall a group, because they installed a list of packages.
 
* New group members will not be automatically installed.
 
* New group members will not be automatically installed.
* You can choose which group members you wish to install.
+
* Users can choose which group members they wish to install.
* You can uninstall group members without having to remove the entire group.
+
* Users can uninstall group members without having to remove the entire group.
  
 
== Meta packages ==
 
== Meta packages ==

Revision as of 14:42, 3 November 2019

A meta package and a package group can be defined by the packager to denote a set of related packages. Both can allow to install or uninstall this set of packages simultaneously by using the meta package or the group name as a substitute for each individual package name. While a group is not a package, it can be installed in a similar fashion to a package, see pacman#Installing package groups and PKGBUILD#groups.

Difference between meta package and package group

The difference between a meta package and a regular package is that a meta package is empty and exists purely to link related packages together via dependencies. A meta package, often (though not always) titled with the "-meta" suffix, provides similar functionality to a package group in that it enables multiple related packages to be installed or uninstalled simultaneously.

Each solution has advantages and disadvantages:

meta package:

  • Meta packages can be installed just like any other package (see pacman#Installing specific packages).
  • Meta packages can be removed like any other package (see pacman#Removing packages).
  • Any new member packages will be installed when the meta package itself is updated with a new set of dependencies.
  • Users cannot choose which meta package dependencies they wish to install.
  • Users cannot remove meta package dependencies without having to uninstall the meta package itself.

group:

  • Package groups will prompt users to select the packages from the group that they wish to install (see pacman#Installing package groups).
  • Users cannot uninstall a group, because they installed a list of packages.
  • New group members will not be automatically installed.
  • Users can choose which group members they wish to install.
  • Users can uninstall group members without having to remove the entire group.

Meta packages

The most important meta package is base. It contains a minimal package set that defines a basic Arch Linux installation. It includes:

The kernel is an optional dependency. See the announcement when it was introduced, and reasoning why base is a meta package.

Groups

The most important package group is base-devel. It contains tools required to build many packages like GCC and make. See also makepkg#Usage.

See also