LinuxCommandLibrary

emerge

Install, update, and manage software packages

TLDR

Synchronize all packages

$ sudo emerge --sync
copy

Update all packages, including dependencies
$ sudo emerge [[-avuDN|--ask --verbose --update --deep --newuse]] @world
copy

Resume a failed update, skipping the failing package
$ sudo emerge --resume --skipfirst
copy

Install a new package, with confirmation
$ sudo emerge [[-av|--ask --verbose]] [package]
copy

Remove a package and its dependencies with confirmation
$ sudo emerge [[-avc|--ask --verbose --depclean]] [package]
copy

Remove orphaned packages (installed as dependencies but no longer required by any package)
$ sudo emerge [[-avc|--ask --verbose --depclean]]
copy

Search the package database for a keyword
$ emerge [[-S|--searchdesc]] [keyword]
copy

SYNOPSIS

emerge [options]

PARAMETERS

--ask
    Prompts the user for confirmation before proceeding with the installation, update, or removal of packages.

--sync
    Updates the local package repository from the remote repository.

--update --deep --newuse @world
    Updates the entire system to the latest stable versions, recompiling packages with changed USE flags.

--depclean
    Removes orphaned dependencies that are no longer required by any installed packages.

--search
    Searches for packages matching the specified name.

--info
    Displays detailed information about a package, including dependencies, USE flags, and description.

--unmerge
    Removes the specified package from the system.

--config-protect=no
    Allows the installation to continue with the modification of protected configuration files.

--with-bdeps=y
    Install build dependencies

DESCRIPTION

emerge is the heart of the Gentoo Linux distribution. It's a powerful, flexible, and highly configurable package manager responsible for installing, updating, and removing software on a Gentoo system. Unlike binary package managers that install pre-compiled packages, emerge typically compiles software from source code using Portage, Gentoo's build system. This allows for fine-grained control over software configuration and optimization for specific hardware. Emerge handles dependency resolution, ensuring that all required libraries and tools are installed before building a package. It also supports features like USE flags, which allow users to enable or disable specific features of a package during compilation. Think of it as a highly customizable build orchestrator that automatically downloads, configures, compiles and install packages based on user preference. emerge is not just a command; it's an entire ecosystem.

CAVEATS

emerge can be resource-intensive, especially when compiling large packages.
Incorrect configuration can lead to system instability. Careful review of USE flags and configuration files is recommended.

<B>USE FLAGS</B>

USE flags are a key feature of emerge and Portage.
They allow users to enable or disable specific features of a package during compilation.
This provides fine-grained control over software functionality and dependencies.
Example: USE="-gnome qt5" emerge disables Gnome and enables Qt5 support for a package.

<B>PACKAGE SETS</B>

emerge uses package sets (e.g., @world, @system) to manage collections of packages.
@world represents the set of all packages explicitly installed by the user, while @system represents the essential packages required for the system to function.
Updating @world ensures that all user-installed packages are up-to-date.

<B>CONFIGURATION FILES</B>

Configuration files reside in /etc/portage.
This directory contains important configurations for emerge.
Files such as make.conf and package.use play an important part of the emerge's behaviour.

HISTORY

emerge was specifically developed for the Gentoo Linux distribution.
It evolved alongside Portage, Gentoo's build system, to provide a highly customizable and flexible package management solution.
Its design emphasizes building from source, allowing users to optimize software for their specific hardware and needs.

SEE ALSO

portage(5), equery(1), ebuild(1)

Copied to clipboard