Eix

is a set of utilities for searching and diffing the local Portage tree and overlays using a binary cache.

It is made to be more efficient and flexible than the command. comes with colorized output which helps users easily find the needed package information.

Emerge
Install :

Files

 * - Stores commands and configurations for
 * - 's global configuration file.
 * - 's per-user configuration file.

Environment variables

 * EIXRC - If this variable can set a new location for 's global configuration file (see above).
 * EIX_SYNC_OPTS, EIX_SYNC_CONF , EIX_REMOTE_OPTS , EIX_LAYMAN_OPTS , EIX_TEST_OBSOLETE_OPTS - Security relevant variables. See the man page for more details.

Updating the cache manually
After the installation has finished, it is important to update the cache to index all packages on the system. Running following command will update the local cache:

Updating the cache with each sync
After each update of the Portage tree the cache needs to be updated. Additionally, one may want to see a diff of the changes since the last sync:

The following 2 methods are used to automatically update the cache with each sync.

Method 1: Using Portage's postsync hook
After each sync all executable scripts in the directory are called:

If overlays are used, can become quite slow, as many of them do not provide pregenerated caches. To speed up the process of, one can hook portage to regenerate the cache for each repository after each sync. An example for this is given in the file. We can copy this example to and make it executable.

Method 2: Using eix-sync
Alternatively, one can use tool from  itself:

The above command is a shorthand way to running these commands sequentially:

If overlays are used, it is recommended to configure to synchronize them too:

To speed up in case of large overlays have a look at this page.

Adding remote overlays to the cache
To search all available overlays (and not only the checked out overlays), add them to the cache with the command:

To have the above command be run automatically on each eix-sync, a solution is to use a postsync hook:

Do not forget to make the file executable:

Using tmpfs cache
This breaks because  is missing when  is mounted:

The simple solution is to move the cache file away from the default location:

One side effect is needing to run after reboot which will take a few seconds.

Simple search
To find package names containing kernel keyword:

Searching for installed packages
Search for installed packages using the  option:

Searching in package descriptions
To search in package descriptions use the  option. It is possible to print out results in a compact list using :

Searching in package categories
Search for certain category using the  option and print out the results in a compact list :

Searching for installed obsolete packages
Search for obsolete packages on the system using the command (If will in fact search for packages not installed but mentioned in the config files.):

Format strings
This is probably the most powerful aspect of, but the documentation is hard to understand. has a mini-language for specifying more precise queries and output formats than are possible using only the basic options. The format string is specified as the option argument to the  option. There are basically two major concepts: properties and variables.


 * Properties: Each package has a set of associated properties that can either be printed or used as part of a predicate in a conditional block.
 * Variables: A variable can be any environment variable set in the environment of eix, or any of the variables printed from the output of.

Category/name-version and license
When creating distributed media can be used to output a versioned package list along with the associated license information:

Conditional blocks
Conditional blocks take can 3 forms, each with an optional RHS, each of which can be optionally negated:

Tmux and Screen users should disable status line updates
When using with automatic window renaming enabled (that is   has been ran in the  configuration file) or, status line updates should be disabled. Otherwise, every time is ran the title of the window will be renamed to something like "eix-update: Finished*".

To disable status line updates, run the following command: