**What are package sets?**
Package sets are *lists of packages used by Portage.*
> **What do package sets define?**
> Package sets define *the packages that make up the base system and those that are installed based on system administrator action.*
# Static sets
**What do package sets prefixed with `@selected-` refer to?**
Package sets prefixed with `@selected-` refer to *member sets and their packages which the system administrator has selected to be installed.*
**What are the six static package sets?**
The six static package sets are:
1. `@system` - Packages required for the base system to operate as intended. This is defined by the Gentoo development team.
2. `@profile` - Packages required for the base system to operate as intended. This is defined by the Gentoo development team.
3. `@world` - A combination of the `@system`, `@profile`, and `@selected` package sets. This encompasses all packages installed on the system.
4. `@selected-packages` - Packages explicitly installed by the system administrator. This is found in `/var/lib/portage/world`.
5. `@selected-sets` - A combination of all custom package sets emerged by the system administrator. This is found in `/var/lib/portage/world_sets`.
6. `@selected` - A combination of the `@selected-packages` and `@selected-sets` package sets, which encompasses all packages intentionally installed by the system administrator.
> **How do you prevent a package or package set from being added to the `@selected-` package sets?**
> To prevent a package or package set from being added to the `@selected-` package sets, *pass the `--oneshot` option when calling `emerge`.*
# Dynamic sets
**What are dynamic package sets based on?**
Dynamic sets are based on *the state of the package database or the type of packages installed on the system.*
> **Can dynamic package sets be used to define what should be installed?**
> *No*, dynamic package sets can't be used to define what should be installed.
>
> **Where are the dynamic package sets listed?**
> The dynamic package sets are listed *in the `/usr/share/portage/config/sets/portage.conf` file.*
>
> **Are they intended to be modified by the system administrator?**
> *No*, they aren't intended to be modified by the system administrator.
>
> **What are the twelve dynamic package sets?**
> The twelve dynamic package sets are:
> 1. `@changed-deps` - Packages that have changed dependencies.
> 2. `@deprecated-live-rebuild` - The older way to get the set of live packages.
> 3. `@downgrade` - Packages that have an installed version higher than the highest visible ebuild version.
> 4. `@installed` - All installed packages.
> 5. `@live-rebuild` - Live (category/package-9999) packages.
> 6. `@module-rebuild` - Packages that own files in `/lib/modules`, or out of kernel modules.
> 7. `@preserved-rebuild` - Packages that are using preserved libraries.
> 8. `@rebuilt-binaries` - Binary packages that can be replaced with packages that have been rebuilt.
> 9. `@security` - Packages for which there's a new Gentoo Linux Security Advisory (GLSA).
> 10. `@unavailable` - Packages that don't have an ebuild.
> 11. `@unavailable-binaries` - Packages that don't have a binary package.
> 12. `@x11-module-rebuild` - Packages that own files inside `/usr/lib/xorg/modules` with the exception of the package that owns `/usr/bin/Xorg`.
# Custom sets
**What are the two types of custom package sets and where they're defined?**
The two types of custom package sets and where they're defined are:
1. Static - `/etc/portage/sets`.
2. Dynamic - `/etc/portage/sets.conf`.
...
# Installing a set
**How do you install a package set with the `emerge` command?**
To install a package set with the `emerge` command, *run:*
```bash
$ emerge -p @<package set>
```
**How do you list the available package sets?**
To list the available package sets, *run:*
```bash
$ emerge --list-sets
```
# Packages within a set
**How can you list the available packages in a package set?**
To list the available packages in a package set, *run:*
```bash
$ emerge -pqeO @<package set>
$ emerge --pretend --quiet --emptytree --nodeps @<package set>
$ pquery --pkgset <package set>
$ eix --compact @<package set>
$ eix @<package set>
$ equery list @<package set>
```
...