The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Package:Ego
Ego
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
.
Usage
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:
- arch
- typically
x86-32bit
orx86-64bit
, this defines the processor type and support of your system. This is defined when your stage was built and should not be changed. - build
- defines whether your system is a
current
,stable
orexperimental
build.current
systems will have newer packages unmasked thanstable
systems. This is defined when your stage is built and is typically not changed. - subarch
- 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.
- flavor
- defines the general type of system, such as
server
ordesktop
, and will set default USE flags appropriate for your needs. - mix-ins
- 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