Eix

eix is a set of utilities for searching and diffing your local portage-tree and overlays using a binary cache.

It is made to be more efficient and flexible than emerge's search functionality, comes with colorized output and helps you to more easily find the package information you need.

Installation
Install :

After the installation has finished, it is important to update the cache and index all packages on the system.

Updating the cache
Running following command will update the local eix cache and index all packages on the system.

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

To spare out some typing work, run following command:

which is shorthand to run these commands sequentially:

Adding overlays to the cache
To search not only in the portage tree but all the overlays, add overlays to the cache:

Searching for packages
Examples:

Simple search
To find package names containing kernel keyword:

Searching for installed packages
Searching for installed -I packages:

Searching in package descriptions
Searching in package descriptions -S, printing out results in a compact -c list:

Searching in package categories
Searching for certain category -C print out a compact -c results list:

Searching for installed obsolete packages
Searching for obsolete packages on the system:

Format Strings
This is probably the most powerful aspect of eix, but the documentation is hard to understand. eix has a minilanguage 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 --format 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 eix --dump.

Conditional blocks
Conditional blocks take can 3 forms, each with an optional RHS, each of which can be optionally negated: if-then string comparison if-then predicate if-then-else string comparison if-then-else predicate assignment assign 1 or empty string