How to use the command 'emerge' (with examples)
- Linux
- December 25, 2023
The ’emerge’ command is a package manager utility used in Gentoo Linux. It allows users to manage packages and their dependencies. This article will provide examples of different use cases of the ’emerge’ command.
Use case 1: Synchronize all packages
Code:
emerge --sync
Motivation: This use case is useful when you want to update the package database and sync it with the latest available packages. It ensures that you have the most up-to-date information about the available packages in your Gentoo Linux system.
Explanation: The command emerge --sync
synchronizes the local package database with the Gentoo Linux main repository. It updates the list of available packages.
Example output:
>>> Starting git pull in /usr/portage...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 10), reused 5 (delta 3), pack-reused 0.
Unpacking objects: 100% (12/12), 8.62 KiB | 2.16 MiB/s, done.
From https://github.com/gentoo-mirror/gentoo
98a0296ac41..669093d37ec master -> origin/master
Updating 98a0296ac41..669093d37ec
Use case 2: Update all packages, including dependencies
Code:
emerge -uDNav @world
Motivation: This use case is used to update all packages installed in the system, including their dependencies. It ensures that all packages are up to date and includes any necessary upgrades or patches.
Explanation: The command emerge -uDNav @world
updates all installed packages in the system, including any dependencies. The options used in the command are as follows:
-u
: Upgrades the installed packages to their latest versions.-D
: Includes dependencies in the update process.-N
: Enables the new use flag handling. This ensures that use flag changes are properly incorporated in the package update process.-a
: Asks for confirmation before proceeding with the package update.-v
: Provides verbose output during the update process.
Example output:
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] sys-devel/binutils-2.36.1-r1 USE="-zstd"
Total: 1 package (1 reinstall), Size of downloads: 0 KiB
!!! The following installed packages are masked:
- sys-devel/binutils-2.35.2::gentoo (masked by: EAPI 7 function restrictions)
A copy of the 'binutils' package is *required* in order to proceed,
but it is no longer present in the system. This is usually due to
being unable to fulfill the build or runtime requirements of one or
more other packages. If necessary, refer to your package manager
documentation for ways to proceed with the update despite this.
[…]
Use case 3: Resume a failed update, skipping the failing package
Code:
emerge --resume --skipfirst
Motivation: This use case is useful when a package update fails due to an issue, and you want to resume the update process without reinstalling already installed packages or fixing the failing package.
Explanation: The command emerge --resume --skipfirst
resumes a failed package update. The --resume
option tells ’emerge’ to continue the update process from where it left off. The --skipfirst
option skips the failed package and continues with the remaining packages.
Example output:
Resuming merge...
[ebuild R ] sys-libs/glibc-2.34-r2 USE="gd ncurses nls -multiarch -profile (-selinux) -suid -systemtap -test -vanilla"
Calculating dependencies... done!
[ebuild R ] sys-devel/binutils-2.36.1-r1 USE="-zstd"
Total: 2 packages (2 reinstalls), Size of downloads: 66 MiB
!!! The following installed packages are masked:
- sys-devel/binutils-2.35.2::gentoo (masked by: EAPI 7 function restrictions)
A copy of the 'binutils' package is *required* in order to proceed,
but it is no longer present in the system. This is usually due to
being unable to fulfill the build or runtime requirements of one or
more other packages. If necessary, refer to your package manager
documentation for ways to proceed with the update despite this.
[…]
Use case 4: Install a new package, with confirmation
Code:
emerge -av package
Motivation: This use case is used when you want to install a new package on your system and want to confirm the installation before proceeding.
Explanation: The command emerge -av package
installs a new package on the system. The -a
option asks for confirmation before proceeding with the installation, and the -v
option provides verbose output during the installation process.
Example output:
* IMPORTANT: 22 news items need reading for repository 'gentoo'.
* Use eselect news read to view new items.
Calculating dependencies... done!
[ebuild N ] sys-apps/newpackage-1.0 USE="wifi -bluetooth -webcam"
Would you like to merge these packages? [Yes/No]
Use case 5: Remove a package, with confirmation
Code:
emerge -Cav package
Motivation: This use case allows you to remove a package from your system and confirms the removal before proceeding.
Explanation: The command emerge -Cav package
removes a package from the system. The -C
option is used to uninstall the package, and the -v
option provides verbose output during the removal process. The -a
option asks for confirmation before proceeding with the removal.
Example output:
These are the packages that would be unmerged:
Calculating dependencies... done!
Would you like to remove these packages? [Yes/No]
Use case 6: Remove orphaned packages
Code:
emerge -avc
Motivation: This use case is useful when you want to remove orphaned packages that were installed as dependencies but are no longer needed by any other packages. Removing these packages can help free up disk space and keep the system clean.
Explanation: The command emerge -avc
removes orphaned packages from the system. The -a
option asks for confirmation before proceeding with the removal, and the -v
option provides verbose output during the removal process.
Example output:
These are the packages that would be unmerged:
Calculating dependencies... done!
Would you like to remove these packages? [Yes/No]
Use case 7: Search the package database for a keyword
Code:
emerge -S keyword
Motivation: This use case is useful when you want to search for a specific package or keyword in the Gentoo package database.
Explanation: The command emerge -S keyword
searches the package database for a specific keyword. It lists all the packages that match the provided keyword.
Example output:
Searching...
* media-sound/keyword-1.0-r1 (0 KiB)
Homepage: <https://www.example.com>
Description: Example keyword for demonstration purposes
[…]
Conclusion
The ’emerge’ command in Gentoo Linux provides a range of functionalities for managing packages and dependencies. This article covered several common use cases and provided examples for each one. By using the ’emerge’ command effectively, users can easily install, update, and remove packages on their Gentoo Linux systems.