PMERGE(1)

NAME
pmerge - Wrapper for running commandline scripts.

SYNOPSIS

pmerge [-h] [--version] [--debug] [-q] [-v] [--color BOOLEAN] [--config CONFIG_PATH] [--domain DOMAIN] [-u | -d | -C | --clean | --list-sets] [-p] [-a] [-f] [-1] [-D] [-N] [-i] [--with-bdeps] [-O] [-o] [-n] [-b] [-k] [-K] [-S] [-e] [-x TARGET[,TARGET,...]] [--ignore-failures] [--force] [--preload-vdb-state] [--quiet-repo-display] [-F FORMATTER] [--pdb-intercept TARGET[,TARGET,...]] [--disable-resolver-target-sorting] [TARGET ...]

DESCRIPTION

pmerge is the main command-line utility for merging and unmerging packages on a system. It provides an interface to install, update, and uninstall ebuilds from source or binary packages.

PORTAGE COMPATIBILITY

With regards to portage compatibility, pmerge provides much of the same functionality that emerge(1) does. In general, it should be possible to use both pmerge and emerge on the same system in a sane fashion. For example, pmerge can be used to install packages and then emerge should be able to upgrade or uninstall them, or vice versa. Also, binary packages created using pmerge should be able to be installed properly using emerge. Any major compatibility issue that arises when trying to use both package managers is probably a bug and should be reported.

In terms of option naming, pmerge tries to remain somewhat compatible to portage so running pmerge -1av should work the same as emerge -1av when using portage. However, pmerge doesn't implement nearly the same amount of options that portage provides so many of the more obscure ones are missing. In addition, pmerge defaults to a portage compatible output format that closely matches the default colors and output structure that portage uses.

POSITIONAL ARGUMENTS

TARGET
    Various target arguments are supported including the following:

atom
    An extended atom syntax is supported, see the related section in pkgcore(5).

package set
    Used to define lists of packages, the syntax used for these is @pkgset. For example, the @system and @world package sets are supported.

extended globbing
    Globbing package names or atoms allows for use cases such as 'far*' (merge every package starting with 'far'), 'dev-python/*::gentoo' (merge every package in the dev-python category from the gentoo repo), or even '*' (merge everything).

    Also, the target '-' allows targets to be read from standard input.

BASE OPTIONS

-h, --help
    Show this help message and exit. To get more information see the related man page.

link https://docs.python.org/3/using/cmdline.html#cmdoption-version'--version link'
    Show this program's version information and exit.

    When running from within a git repo or a version installed from git the latest commit hash and date will be shown.

--debug
    Enable debug checks and show verbose debug output.

-q, --quiet
    Suppress non-error, informational messages.

-v, --verbose
    Increase the verbosity of various output.

--color BOOLEAN
    Toggle colored output support. This can be used to forcibly enable color support when piping output or other situations where stdout is not a tty.

CONFIG OPTIONS

--config CONFIG_PATH
    The path to a custom pkgcore config file or portage config directory can be given to override loading the default system config.

    Alternatively, an argument of 'false' or 'no' will skip loading the system config entirely if one exists.

--domain DOMAIN
    custom pkgcore domain to use for this operation

OPERATIONS

-u, --upgrade
    Try to upgrade specified targets to the latest visible version. Note that altered package visibility due to keywording or masking can often hide the latest versions of packages, especially for stable configurations.

-d, --downgrade
    Try to downgrade specified targets to a lower visible version compared to what's currently installed.

    Useful for reverting to the previously installed package version; however, note that the -O/--nodeps option is generally used with this otherwise lots of downgrades will be pulled into the resolved deptree.

-C, --unmerge
    Target packages for unmerging from the system.

    WARNING: This does not ask for user confirmation for any targets so it's possible to quickly break a system.

--clean
    Remove installed packages that aren't referenced by any target packages or sets. This defaults to using the world and system sets if no targets are specified.

    Use with caution, this option used incorrectly can render your system unusable. Note that this implies --deep.

--list-sets
    display the list of available package sets

RESOLVER OPTIONS

-p, --pretend
    Resolve package dependencies and display the results without performing any merges.

-a, --ask
    Perform the dependency resolution, but ask for user confirmation before beginning the fetch/build/merge process. The choice defaults to yes so pressing the "Enter" key will trigger acceptance.

-f, --fetchonly
    Only perform fetching of all targets from SRC_URI based on the current USE configuration.

-1, --oneshot
    Build and merge packages normally, but do not add any targets to the world file. Note that this is forcibly enabled if a package set is specified.

-D, --deep
    Force dependency resolution across the entire dependency tree for all specified targets.

-N, --newuse
    Include installed packages with USE flag changes in the list of viable targets for rebuilding.

    USE flag changes include flags being added, removed, enabled, or disabled with regards to a package. USE flag changes can occur via ebuild alterations, profile updates, or local configuration modifications.

    Note that this option implies -1/--oneshot.

-i, --ignore-cycles
    Ignore dependency cycles if they're found to be unbreakable; for example: a depends on b, and b depends on a, with neither built.

--with-bdeps
    Pull in build time dependencies for built packages during dependency resolution, by default they're ignored.

-O, --nodeps
    Build and merge packages without resolving any dependencies.

-o, --onlydeps
    Build and merge only the dependencies for the packages specified.

-n, --noreplace
    Skip packages that are already installed. By default when running without this option, any specified target packages will be remerged regardless of if they are already installed.

-b, --buildpkg
    Force binary packages to be built for all merged packages.

-k, --usepkg
    Binary packages are preferred over ebuilds when performing dependency resolution.

-K, --usepkgonly
    Only binary packages are considered when performing dependency resolution.

-S, --source-only
    Only ebuilds are considered when performing dependency resolution.

-e, --empty
    Force all targets and their dependencies to be rebuilt.

-x TARGET[,TARGET,...], --exclude TARGET[,TARGET,...]
    Comma-separated list of targets to pretend are installed.

    This supports extended package globbing, e.g. 'dev-python/*' equates to faking the entire dev-python category is installed.

--ignore-failures
    Skip failures during the following phases: sanity checks (pkg_pretend), fetching, dep resolution, and (un)merging.

--force
    Force (un)merging on the livefs (vdb), regardless of if it's frozen.

--preload-vdb-state
    Preload the installed package database which causes the resolver to work with a complete graph, thus disallowing actions that conflict with installed packages. If disabled, it's possible for the requested action to conflict with already installed dependencies that aren't involved in the graph of the requested operation.

OUTPUT OPTIONS

--quiet-repo-display
    In the package merge list display, suppress ::repo output and instead use index numbers to indicate which repos packages come from.

-F FORMATTER, --formatter FORMATTER
    Select an output formatter to use for text formatting of --pretend or --ask output, currently available formatters include the following: basic, pkgcore, portage, and portage-verbose.

    The basic formatter is the nearest to simple text output and is intended for scripting while the portage/portage-verbose formatter closely emulates portage output and is used by default.

RESOLVER DEBUGGING OPTIONS

--pdb-intercept TARGET[,TARGET,...]
    Comma-seperated list of targets to trigger a pdb.set_trace() within resolver code for investigation.

    This is primarily used for debugging resolver implementation, being able to walk through what it has decided and why.

--disable-resolver-target-sorting
    Resolution of package dependencies can grossly vary depending on which nodes you start from.

    Pmerge by default sorts the targets it's asked to resolve; this in turn stabilizes the resolvers output. This option allows disabling that sort.

    This should be only used if you're debugging the resolver and wish to effectively fuzz the resolvers ability to find solutions; for a properly working resolver if a solution can be found, it must be found. If a solution can't be found, then this flag should also result in no solution found.

    Any deviation from this is a bug in the resolver and should be reported.

EXAMPLE USAGE

Merge pkgcore from the gentoo repo:

    pmerge sys-apps/pkgcore::gentoo

Output a simple list of package atoms that would be updated for a global update:

    pmerge -uDp --formatter basic @world

Force new binpkgs to be built for the entire system set using a custom configuration directory:

    pmerge -uDSeb --config /home/foo/portage @system

SEE ALSO

emerge(1)

AUTHOR
Michał Górny <mgorny@gentoo.org>, Tim Harder <radhermit@gmail.com>, Brian Harring <ferringb@gmail.com>, Arthur Zamarin <arthurzam@gentoo.org>, Marien Zwart

COPYRIGHT
2006-2022, pkgcore contributors