Portage/zh-cn
emerge — configuration — ebuild repository — dispatch-conf
world file — USE flags — ebuilds — profiles
upgrades — using testing packages — binary packages
tools — gentoolkit — eselect
Portage FAQ — cheat sheet — FAQ
all articles
Portage is the official package manager and distribution system for Gentoo. It functions as the heart of Gentoo-based operating systems, providing advanced dependency resolution, flexible building and installation of software from source or from binary packages, and most other core distribution functionality.
Portage will provision software from the Gentoo ebuild repository, any additional ebuild repositories, or binhost. Portage includes many commands for repository and package management, the primary of which is the emerge command.
Some common questions about portage and the emerge command are answered in the FAQ and the Portage FAQ.
For day to day usage, the emerge, emaint, and dispatch-conf will be the most used Portage commands. Refer to relevant documentation.
See man portage for complete user documentation. See the emerge article for information on installing and maintaining packages with Portage.
This article describes Portage from a user's perspective. Those looking to contribute to Portage development should visit the Portage project page.
Installation
All Gentoo installations come with Portage, so there is no need to install it!.
In the rare eventuality of a corrupt or missing Portage, see the Corrupt or absent Portage section.
Updating Portage
In order for Gentoo to stay up to date, Portage must stay up to date. Generally the usual, regular updating of Gentoo, will automatically update Portage without issue.
On occasion, updates to Portage can make it advisable to update Portage before the rest of the system. After synchronizing Portage, a message requesting this may be displayed:
* An update to portage is available. It is _highly_ recommended * that you update portage now, before any other packages are updated. * To update portage, run 'emerge --oneshot sys-apps/portage' now.
Emerge Portage as advised (adapt the command if the message differs from this example). The --oneshot
option is important, to avoid adding sys-apps/portage to the world file:
root #
emerge --ask --oneshot sys-apps/portage
If there is an issue with updating Portage, User:Sam/Portage_help/Upgrading_Portage may help.
Configuration
Files
The main Portage configuration is in make.conf, though there are many files used to configure Portage, mainly in the /etc/portage directory.
See man make.conf for comprehensive documentation, notably a list of variables that can be set in this file.
The /usr/share/portage/config/make.globals file contains many default configuration values sourced by Portage. These values can be overwritten by specifying the same variable names in /etc/portage/make.conf.
Environment variables
Portage can be configured to a vast extent through environment variables.
See man make.conf for information on available environment variables. Refer also to the Handbook section for working with environment variables in Gentoo.
To view all presently set environment variables, run:
user $
emerge --info --verbose
Environment variables can be set on a per-package basis via /etc/portage/package.env entries.
Ebuild repositories
In addition to the Gentoo ebuild repository, from which Portage will pull packages by default, additional ebuild repositories are available, for example:
- repos.gentoo.org - list of repositories contributed by the community, some by Gentoo developers
- GURU - official ebuild repository maintained collaboratively by Gentoo users, with a little support from a few Gentoo developers
- gpo.zugaina.org - third-party list of ebuild repositories
The ebuild repository article has a section on configuring ebuild repositories to be used by Portage.
Search for available ebuilds on the command line with emerge --search or eix.
While the Gentoo ebuild repository is either written or reviewed by Gentoo developers, and the GURU repository has some developer oversight, that is not always the case for other ebuild repositories. It is possible that some ebuilds repositories might contain vulnerable, badly broken or, theoretically, even malicious software.
Binary hosts
Binary hosts are configured in /etc/portage/binrepos.conf and allow fast installation of binary packages, as long as there is a package available for the requested USE flags for the package being installed or updated.
There is an official Gentoo binary host that contains many binary packages for the amd64 and arm64 architectures - see the guide at that link for further setup and usage instructions.
To configure alternative binary hosts, and for more information on using binary packages with Portage, see the binary package guide.
Usage
Portage includes many different tools and utilities to help with system administration and maintenance. The following sections list these in alphabetical order.
archive-conf
The purpose of archive-conf is to save off a config file in the dispatch-conf archive directory. Most users should not ever need to run this command:
root #
archive-conf
Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]
dispatch-conf
The dispatch-conf utility is used to manage configuration file updates. See the dispatch-conf article.
ebuild
ebuild is Portage's command for running the various ebuild functions.
This command is generally not run by the user and is useful only to developers. Do not try to use it to install packages, see rather the emerge command.
For disambiguation between this command and ebuild files, see the ebuild article.
egencache
The egencache tool rebuilds the cache of metadata information for the ebuild repositories. See the egencache article for additional information.
emaint
Performs package management related system health checks and maintenance.
See repository synchronization about how to use emaint to synchronize repositories. See man 1 emaint for detailed information.
user $
emaint --help
usage: usage: emaint [options] COMMAND The emaint program provides an interface to system health checks and maintenance. See the emaint(1) man page for additional information about the following commands: Commands: all Perform all supported commands binhost Scan and generate metadata indexes for binary packages. cleanconfmem Check and clean the config tracker list for uninstalled packages. cleanresume Discard emerge --resume merge lists logs Check and clean old logs in the PORTAGE_LOGDIR. merges Scan for failed merges and fix them. movebin Perform package move updates for binary packages moveinst Perform package move updates for installed and binary packages. sync Check repos.conf settings and sync repositories. world Check and fix problems in the world file. optional arguments: -h, --help show this help message and exit -c, --check Check for problems (a default option for most modules) -f, --fix Attempt to fix problems (a default option for most modules) --version show program's version number and exit -C, --clean Cleans out logs more than 7 days old (cleanlogs only) module-options: -t, -p -t NUM, --time NUM (cleanlogs only): -t, --time Delete logs older than NUM of days -p, --pretend (cleanlogs only): -p, --pretend Output logs that would be deleted -P, --purge Removes the list of previously failed merges. WARNING: Only use this option if you plan on manually fixing them or do not want them re-installed. -y, --yes (merges submodule only): Do not prompt for emerge invocations -r REPO, --repo REPO (sync module only): -r, --repo Sync the specified repo -A, --allrepos (sync module only): -A, --allrepos Sync all repos that have a sync-url defined -a, --auto (sync module only): -a, --auto Sync auto-sync enabled repos only --sync-submodule {glsa,news,profiles} (sync module only): Restrict sync to the specified submodule(s)
emerge
emerge is the command-line interface to Portage and is how most users will interact with Portage.
See the emerge article for more information on the wiki.
emerge-webrsync
Install a Gentoo ebuild repository snapshot from the web. See Handbook.
root #
emerge-webrsync -h
Usage: /usr/bin/emerge-webrsync [options] Options: --revert=yyyymmdd Revert to snapshot -k, --keep Keep snapshots in DISTDIR (don't delete) -q, --quiet Only output errors -v, --verbose Enable verbose output -x, --debug Enable debug output -h, --help This help screen (duh!)
emerge-webrsync is called internally by eix-sync when sync-type
in /etc/portage/repos.conf is set to webrsync
.
emirrordist
Tool for mirroring of package distfiles.
root #
emirrordist -h
usage: emirrordist [options] <action> emirrordist - a fetch tool for mirroring of package distfiles optional arguments: -h, --help show this help message and exit Actions: --version display portage version and exit --mirror mirror distfiles for the selected repository Common options: --dry-run perform a trial run with no changes made (usually combined with --verbose) --verbose, -v display extra information on stderr (multiple occurences increase verbosity) --ignore-default-opts do not use the EMIRRORDIST_DEFAULT_OPTS environment variable --distfiles DIR distfiles directory to use (required) --jobs JOBS, -j JOBS number of concurrent jobs to run --load-average LOAD, -l LOAD load average limit for spawning of new concurrent jobs --tries TRIES maximum number of tries per file, 0 means unlimited (default is 10) --repo REPO name of repo to operate on --config-root DIR location of portage config files --repositories-configuration REPOSITORIES_CONFIGURATION override configuration of repositories (in format of repos.conf) --strict-manifests <y|n> manually override "strict" FEATURES setting --failure-log FILE log file for fetch failures, with tab-delimited output, for reporting purposes --success-log FILE log file for fetch successes, with tab-delimited output, for reporting purposes --scheduled-deletion-log FILE log file for scheduled deletions, with tab-delimited output, for reporting purposes --delete enable deletion of unused distfiles --deletion-db FILE database file used to track lifetime of files scheduled for delayed deletion --deletion-delay SECONDS delay time for deletion, measured in seconds --temp-dir DIR temporary directory for downloads --mirror-overrides FILE file holding a list of mirror overrides --mirror-skip MIRROR_SKIP comma delimited list of mirror targets to skip when fetching --restrict-mirror-exemptions RESTRICT_MIRROR_EXEMPTIONS comma delimited list of mirror targets for which to ignore RESTRICT="mirror" --verify-existing-digest use digest as a verification of whether existing distfiles are valid --distfiles-local DIR distfiles-local directory to use --distfiles-db FILE database file used to track which ebuilds a distfile belongs to --recycle-dir DIR directory for extended retention of files that are removed from distdir with the --delete option --recycle-db FILE database file used to track lifetime of files in recycle dir --recycle-deletion-delay SECONDS delay time for deletion of unused files from recycle dir, measured in seconds (defaults to the equivalent of 60 days) --fetch-log-dir DIR directory for individual fetch logs --whitelist-from FILE specifies a file containing a list of files to whitelist, one per line, # prefixed lines ignored
See also man emirrordist.
env-update
Updates environment settings automatically.
root #
env-update -h
Usage: env-update [--no-ldconfig] See the env-update(1) man page for more info
See also man env-update. See the login article for some information on how the environment is set up in Gentoo.
fixpackages
Perform package move updates for all packages.
root #
fixpackages -h
usage: fixpackages [-h] The fixpackages program performs package move updates on configuration files, installed packages, and binary packages. optional arguments: -h, --help show this help message and exit
See also man fixpackages.
regenworld
Regenerates the world file by checking the Portage logfile for all actions that have been done in the past.
Make a backup of existing world file (/var/lib/portage/world) before using this tool.
root #
regenworld -h
This script regenerates the portage world file by checking the portage logfile for all actions that you've done in the past. It ignores any arguments except --help. It is recommended that you make a backup of your existing world file (/var/lib/portage/world) before using this tool.
portageq
For details see portageq.
quickpkg
Creates Portage packages - see the Binary package guide for more information.
user $
quickpkg --help
usage: quickpkg [options] <list of package atoms or package sets> optional arguments: -h, --help show this help message and exit --umask UMASK umask used during package creation (default is 0077) --ignore-default-opts do not use the QUICKPKG_DEFAULT_OPTS environment variable --include-config <y|n> include all files protected by CONFIG_PROTECT (as a security precaution, default is 'n') --include-unmodified-config <y|n> include files protected by CONFIG_PROTECT that have not been modified since installation (as a security precaution, default is 'n')
See also man quickpkg.
repoman
repoman is a development tool used for testing ebuilds. Since version 2.3.0, it is packaged separately from Portage, in app-portage/repoman. See the repoman article for additional information.
It is now deprecated in favor of tools provided by the dev-util/pkgcheck and dev-util/pkgdev packages.
glsa-check
Gentoo Linux Security Announcements, or GLSAs, are notifications sent out to the community to inform of security vulnerabilities related broadly to Gentoo Linux or specifically to packages contained in the ::gentoo ebuild repository.
glsa-check is a tool to keep track of the various GLSAs. It can be used to view GLSAs, but more importantly to test if the system is vulnerable to known GLSAs.
See man glsa-check and glsa-check --help for more information:
user $
glsa-check --help
usage: glsa-check <option> [glsa-id | all | new | affected] optional arguments: -h, --help show this help message and exit -V, --version Show information about glsa-check -q, --quiet Be less verbose and do not send empty mail -v, --verbose Print more messages -n, --nocolor Removes color from output -e, --emergelike Upgrade to latest version (not least-change) -c, --cve Show CVE IDs in listing mode -r, --reverse List GLSAs in reverse order Modes: -l, --list List a summary for the given GLSA(s) or set and whether they affect the system -d, --dump Show all information about the GLSA(s) or set --print Alias for --dump -t, --test Test if this system is affected by the GLSA(s) or set and output the GLSA ID(s) -p, --pretend Show the necessary steps to remediate the system -f, --fix (experimental) Attempt to remediate the system based on the instructions given in the GLSA(s) or set. This will only upgrade (when an upgrade path exists) or remove packages -i, --inject Inject the given GLSA(s) into the glsa_injected file -m, --mail Send a mail with the given GLSAs to the administrator glsa-list can contain an arbitrary number of GLSA ids, filenames containing GLSAs or the special identifiers 'all' and 'affected'
Tips
Main (Gentoo) ebuild repository sync time
To see when the Gentoo ebuild repository was last updated (synced), run the following command:
user $
cat /var/db/repos/gentoo/metadata/timestamp.chk
Listing package sets
Need to determine what packages are inside each set? See Package sets.
Troubleshooting
Corrupt or absent Portage
Although it should be very rare, as with all data, there remains a possibility that Portage could become corrupt or even uninstalled, which would be very bad for the functioning of the whole system. If ever this were to occur, there are ways Portage can be recovered, however, because Portage is so central, re-installation is a rather involved operation, requiring manual intervention to, in effect, install a package manager without having a functioning package manager.
See Fix my Gentoo for details on emergency installation via binary packages. See also Fixing broken Portage.
Default Gentoo ebuild repository location change
As of portage v2.3.66[1], which was released on 2019-04-29[2], the default locations changed for the portdir, distdir, repo_name, repo_basedir directories.
For more information see bug bug #662982.
Old location
repo_basedir="/usr"
repo_name="portage"
distdir="/usr/portage/distfiles"
portdir="/usr/portage"
target_distdir="/usr/portage/distfiles"
target_pkgdir="/usr/portage/packages"
New location
repo_basedir="/var/db/repos"
repo_name="gentoo"
distdir="/var/cache/distfiles"
portdir="/var/db/repos/gentoo"
target_distdir="/var/cache/distfiles"
target_pkgdir="/var/cache/binpkgs"
See also
- /etc/portage — the primary configuration directory for Portage, Gentoo's package manager.
- /etc/portage/make.conf — 是在全局级别自定义 Portage 环境的主要配置文件。
- /etc/portage/color.map — a file containing variables that define color classes used by Portage.
- prefix — enables the power of Gentoo and Portage on other distributions and/or operating systems (Microsoft Windows via Cygwin, Android via Termux, etc.).
Related to Portage
- Upgrading Gentoo — 将介绍如何 升级(更新) Gentoo,以及如何更好地维护系统。
- Catalyst — a tool to build stage files and live-images for Gentoo
- Creating an ebuild repository — basics of creating an ebuild repository and maintaining ebuilds in it.
- GCC optimization — 介绍了使用安全,理智的 CFLAGS 和 CXXFLAGS 来优化编译代码。
- Portage tips — the main command-line interface to Portage
- Repository format — A quick reference to Gentoo ebuild repository (overlay) format.
- Package Manager Specification — a standardization effort to ensure that the ebuild file format, the ebuild repository format (of which the Gentoo ebuild repository is the main incarnation), as well as behavior of the package managers interacting with these ebuilds is properly agreed upon and documented.
- Ebuild repository — a file-structure that can provide packages for installation on a Gentoo system.
- Category:Portage
- Gentoolkit — 一套简化Gentoo系统管理的工具
- Portage Multi Stage Dockerfile — The emerge --quickpkg-direct and related emerge --quickpkg-direct-root options are useful inside Dockerfiles
- Portage Security — aims to answer the question "How can I dispel doubts regarding the security of the Gentoo ebuild repository on a system?"
- Portage TMPDIR on tmpfs — It is unlikely that tmpfs will provide any performance gain for modern systems
Portage in the Gentoo AMD64 Handbook
Portage tools
- Useful Portage tools — 提供了一个ebuild 仓库内可用的 Gentoo 特有的系统管理工具列表,尤其是针对 Portage。
- Cfg-update — a utility used on Gentoo to manage configuration file updates.
Alternate package managers and GUIs
- Pkgcore — an alternative package manager for Gentoo that aims for high performance, extensibility, and a clean design.
- app-portage/kuroo - Graphical Portage frontend based on KF5/Qt5.
- App Swipe - Qt GUI for browsing local Portage repositories.
- Package sets — describes package sets in high detail and includes a list of all typically available sets on a Gentoo system.
External resources
- Official Portage documentation - Built by Portage developer Zac Medico (zmedico) .
- packages.gentoo.org - online searchable database of packages from the Gentoo package repository.
Portage man pages
The man pages contain complete technical documentation for Portage. Type man <subject> in a shell on a Gentoo system to read the local man page. Note that man pages have a see also section for further information.
- emerge - command-line interface to the Portage system - emerge man page.
- Portage configuration files - Portage man page.