LinuxCommandLibrary

ego

Execute distributed applications and manage resources

TLDR

Synchronize the Portage tree

$ ego sync
copy

Update the bootloader configuration
$ ego boot update
copy

Read a Funtoo wiki page by name
$ ego doc [wiki_page]
copy

Print current profile
$ ego profile show
copy

Enable/Disable mix-ins
$ ego profile mix-in +[gnome] -[kde-plasma-5]
copy

Query Funtoo bugs, related to a specified package
$ ego query bug [package]
copy

SYNOPSIS

ego <command> [<args>]

PARAMETERS

version
    Display the current active Go version

list
    List installed Go versions (--remote to show available online)

list-remote
    List all available Go versions online

install <version>
    Download and install specified Go version

uninstall <version>
    Remove specified Go version

use <version>
    Set local/project-specific Go version

global <version>
    Set system-wide default Go version

local <version>
    Create .ego_version file for project-local version

which
    Show path to current Go binary

root
    Print ego installation root directory

--help
    Show usage help

--version
    Show ego tool version

DESCRIPTION

Ego is a lightweight command-line tool designed to manage multiple versions of the Go programming language on Unix-like systems, including Linux. It allows developers to install, switch between, and use different Go versions seamlessly without conflicts, similar to tools like pyenv for Python or rbenv for Ruby.

Ego works by shimming the go command and modifying the PATH environment variable to point to the active Go installation. It supports listing available versions (both local and remote), installing specific versions from official Go downloads, setting global or per-project versions, and querying the current version. This is particularly useful in development environments where projects require specific Go versions, preventing version mismatches.

Installation typically involves cloning the repository from GitHub and adding it to your PATH, or using package managers like Homebrew on macOS (though focused on Linux here). Once set up, ego integrates transparently, making Go version management effortless. It fetches binaries directly from golang.org, ensuring authenticity and ease of use. Limitations include no support for building Go from source; it only handles pre-built distributions.

CAVEATS

Ego only manages pre-built Go binaries; no source builds. Requires write access to ~/.ego. Shell reinitialization needed after install. Not compatible with GVM or goenv.

INSTALLATION

curl https://raw.githubusercontent.com/syohex/ego/master/get-ego.sh | sh
echo 'export PATH="$HOME/.ego/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

EXAMPLE USAGE

ego install 1.21.0
ego use 1.21.0
go version # Shows 1.21.0

HISTORY

Developed by Daniel Theophanes in 2013 as a minimal alternative to GVM. Maintained on GitHub with sporadic updates; last major activity around 2018. Widely used in early Go adoption for its simplicity.

SEE ALSO

go(1), asdf(1), gvm(1)

Copied to clipboard