From Funtoo
Revision as of 19:04, July 16, 2015 by Drobbins (talk | contribs)
Jump to: navigation, search



We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.

ego is Funtoo's official system personality management tool, designed to eventually replace the venerable eselect from Gentoo Linux. Daniel Robbins created a new meta-tool to replace eselect because eselect has a couple of design issues. It requires extensions to be written as shell scripts, which is a big limitation. With the advent of Funtoo's modular profile system, eselect profile was becoming cumbersome to use, and I needed to make the tool faster and more feature-rich. Ultimately, shell scripts are too slow and too hard to use to implement advanced functionality.

ego is a meta-tool that works similarly to eselect. Typing ego will show a list of available commands. Some of the benefits of ego over eselect are that ego modules can be implemented in any language. In addition, the ego architecture is designed so that the modules are themselves stand-alone commands, which allows you to access these sub-commands using shortcuts. For example, epro is a shortcut for ego profile.


Funtoo profiles are used to define defaults for Portage specific to your needs. There are five basic profile types: arch, build, subarch, flavor, and mix-ins:

typically x86-32bit or x86-64bit, this defines the processor type and support of your system. This is defined when your stage was built and should not be changed.
defines whether your system is a current, stable or experimental build. current systems will have newer packages unmasked than stable systems. This is defined when your stage is built and is typically not changed.
Defines optimizations for your CPU. The subarch is set at the time the stage3 is built, but can be changed later to better settings if necessary. Be sure to pick a setting that is compatible with your CPU.
defines the general type of system, such as server or desktop, and will set default USE flags appropriate for your needs.
define various optional settings that you may be interested in enabling.

One arch, build and flavor must be set for each Funtoo Linux system, while mix-ins are optional and you can enable more than one if desired.

Remember that profiles can often be inherited. For example, the desktop flavor inherits the workstation flavor settings, which in turn inherits the X and audio mix-ins. You can view this by using epro:

root #  epro show

=== Enabled Profiles: ===

        arch:  x86-64bit
       build:  current
     subarch:  intel64-haswell
      flavor:  desktop
     mix-ins:  gnome

=== All inherited flavors from desktop flavor: ===

                     workstation (from desktop flavor)
                            core (from workstation flavor)
                         minimal (from core flavor)

=== All inherited mix-ins from desktop flavor: ===

                               X (from workstation flavor)
                           audio (from workstation flavor)
                             dvd (from workstation flavor)
                           media (from workstation flavor)
      mediadevice-audio-consumer (from media mix-in)
                mediadevice-base (from mediadevice-audio-consumer mix-in)
      mediadevice-video-consumer (from media mix-in)
                mediadevice-base (from mediadevice-video-consumer mix-in)
        mediaformat-audio-common (from media mix-in)
          mediaformat-gfx-common (from media mix-in)
        mediaformat-video-common (from media mix-in)
                  console-extras (from workstation flavor)
                           print (from desktop flavor)

To view available profiles:

root #  epro list

Enabled profiles will be highlighted in cyan. Directly enabled profiles will be in bold and have an asterisc * appended.

To change the profile arch to x86-64:

root # epro arch x86-64bit

To change the build to current:

root # epro build current

To change the subarch to generic_64:

root # epro subarch generic_64

To change the profile flavor:

root #  epro flavor desktop

To add a mix-in:

root #  epro mix-ins +gnome

To remove a mix-in:

root #  epro mix-ins -gnome

To get a JSON output of your profiles:

root #  epro show-json

To get the current value of a given profile:

root #  epro get <build