Eix

is Article description::a set of utilities for searching and diffing local ebuild repositories 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 additional ebuild repositories 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 ebuild repositories are used, it is recommended to configure to synchronize them too:

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

Adding remote repositories to the cache
To search all available repositories (and not only the checked out repositories), 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 files away from the default location:

Check all new set variables:

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

To do so, add a script to the  (Local.d) directory:

This will also write into the log file that it was executed.

Do not forget to make the file executable:

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 by license
Search for packages that are licensed under a specific license or subset of licenses using the  option. For example's sake let the license be an End-User License Agreement (a type of proprietary license), or EULA and let's limit the results to the games-rpg category (as without a category limitation the results would be too long to fit comfortably in this article):

Excluding results
One can exclude results that, for example, have EULA in their license field using the  option:

(output not shown as it is too long).

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: