From Gentoo Wiki
Jump to: navigation, search

The usr-gentoo project maintains a repository of auto-generated Gentoo ebuilds which have been subject to the /usr move. That is, user using it should be able to get most of the executables moved off rootfs to /usr.

Please note that this is experimental work and it may render your system unbootable. Use with care.

User guide

Enabling usr-gentoo

In order to enable the usr-gentoo overlay, just add it using layman:

user $layman -a usr-gentoo

Afterwards, your next upgrades should catch patched packages from that overlay rather than gx86.

Packages which are patched

As of 2013-03-31, the following packages are patched in the overlay:

Additional packages which need to be reinstalled

Aside from the patches, there are packages which store the full path to executables and therefore need to be reinstalled after switching to /usr-moved packages.

As of 2013-03-31, the following packages are known to require reinstalling:

Technical details

Wrapping executables

All executables which are moved to /usr are additionally wrapped in their old locations. The wrapping is done through compiling a tiny programs using the path-respect-wrapper helper library.

Whenever any of the wrappers in /bin or /sbin is run, the wrapper logs the caller in the system Journal (or syslog) and then runs the actual executable. The executable path is compiled into each wrapper and therefore the wrapper is almost transparent to applications.

Repository updates

The repository consists of two branches: bare and master. The bare branch contains eclasses, aside for immutable repository elements, patches to newest versions of gx86 ebuilds. The master branch is generated through an update script. The script copies all relevant Gentoo ebuilds, then tries to apply the relevant patch to each of them. Ebuilds for which the patch does not apply are removed.

The script verbosely reports to which files patches apply successfully. Whenever a new ebuild is added, and patch does not apply anymore, the patch needs to be updated.