Handbook:Parts/Portage/CustomTree

Excluding packages and categories
It is possible to selectively update certain categories/packages and ignore the other categories/packages. This can be achieved by having rsync exclude categories/packages during the step.

Define the name of the file that contains the exclude patterns in the PORTAGE_RSYNC_EXTRA_OPTS variable in :

Note however that this may lead to dependency issues since new, allowed packages might depend on new but excluded packages.

Defining a Portage overlay directory
It is possible to ask Portage to use ebuilds that are not officially available through the Portage tree. Create a new directory (for instance ) in which to store the 3rd-party ebuilds. Use the same directory structure as the official Portage tree!

Then define PORTDIR_OVERLAY in and have it point to the previously defined directory. When using Portage now, it will take those ebuilds into account as well without removing/overwriting those ebuilds the next time is ran.

Working with several overlays
For the power users who develop on several overlays, test packages before they hit the Portage tree or just want to use unofficial ebuilds from various sources, the package brings, a tool to help users keep the overlay repositories up to date.

First install and configure as shown in the Overlays User Guide, and add the desired repositories with.

For instance, to enable the hardened-development overlay:

Regardless of how many repositories are used through, all the repositories can be updated with the following command:

For more information on working with overlays, please read and the previously linked layman/overlay users' guide.

Using Portage with self-maintained software
Sometimes users want to configure, install and maintain software individually without having Portage automate the process, even though Portage can provide the software titles. Known cases are kernel sources and nvidia drivers. It is possible to configure Portage so it knows that a certain package is manually installed on the system (and thus take this information into account when calculating dependencies). This process is called injecting and is supported by Portage through the file.

For instance, to inform Portage about gentoo-sources-2.6.11.6 which has been installed manually, add the following line to :