Meta package and package group: Difference between revisions
(update lists.archlinux.org links, see ArchWiki talk:Requests#lists.archlinux.org URLs after mailman3 migration) |
(merge tip into the first section, though the command is more suitable for the pacman or pacman/Tips and tricks page) |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 25: | Line 25: | ||
* Package groups will prompt users to select the packages from the group that they 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]]). | ||
* Users cannot uninstall a group, because they installed a list of packages. Instead, {{ic|pacman -R ''groupname''}} tries to remove all members of the group. | * Users cannot uninstall a group, because they installed a list of packages. Instead, {{ic|pacman -R ''groupname''}} tries to remove all members of the group. | ||
* New group members will not be automatically installed. | * New group members will not be automatically installed. Instead, the command {{ic|comm -23 <(pacman -Sg ''package_group'' {{!}} awk '{print $2}' {{!}} sort) <(pacman -Qq {{!}} sort)}} can be run to show which members of a {{ic|''package_group''}} are not installed on the system. | ||
* Users can choose which group members they wish to install. | * Users can choose which group members they wish to install. | ||
* Users can uninstall group members without having to remove the entire group. | * Users can uninstall group members without having to remove the entire group. | ||
Line 39: | Line 39: | ||
The [[kernel]] is an optional dependency. See [https://archlinux.org/news/base-group-replaced-by-mandatory-base-package-manual-intervention-required/ the announcement when it was introduced], and [https://lists.archlinux.org/archives/list/arch-dev-public@lists.archlinux.org/thread/GRX4NIR2AQVBUGYS4K4TKBS3HGSAS456/ reasoning why base is a meta package]. | The [[kernel]] is an optional dependency. See [https://archlinux.org/news/base-group-replaced-by-mandatory-base-package-manual-intervention-required/ the announcement when it was introduced], and [https://lists.archlinux.org/archives/list/arch-dev-public@lists.archlinux.org/thread/GRX4NIR2AQVBUGYS4K4TKBS3HGSAS456/ reasoning why base is a meta package]. | ||
An other common meta package is {{Pkg|base-devel}}. It contains a complete build environment for makepkg. See the [https://lists.archlinux.org/archives/list/arch-dev-public@lists.archlinux.org/message/NDOV3CDX2GRWOWOQA6ALGLGFQGP7XGK7/ reasoning why it has become a meta package]. | |||
== Groups == | == Groups == | ||
Package groups are commonly used to facilitate the installation of [[desktop environment]]s. See [[Desktop environment#List of desktop environments]]. | |||
An other example is the {{Grp|pro-audio}} group for the [[professional audio]] software available in the [[official repositories]]. | |||
See the [https://archlinux.org/groups/ list of all package groups]. | |||
Latest revision as of 12:24, 14 October 2023
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. Instead,
pacman -R groupname
tries to remove all members of the group. - New group members will not be automatically installed. Instead, the command
comm -23 <(pacman -Sg package_group | awk '{print $2}' | sort) <(pacman -Qq | sort)
can be run to show which members of apackage_group
are not installed on the system. - 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:
- basics such as glibc and bash,
- distribution related things such as pacman and systemd
- POSIX tools such as core utilities, process, file and file compression utilities
- networking tools such as iproute2
The kernel is an optional dependency. See the announcement when it was introduced, and reasoning why base is a meta package.
An other common meta package is base-devel. It contains a complete build environment for makepkg. See the reasoning why it has become a meta package.
Groups
Package groups are commonly used to facilitate the installation of desktop environments. See Desktop environment#List of desktop environments.
An other example is the pro-audio group for the professional audio software available in the official repositories.
See the list of all package groups.