yum - Yellowdog Updater Modified
[options] [command] [package ...]
is an interactive, rpm based, package manager. It can automatically
perform system updates, including dependency analysis and obsolete processing
based on "repository" metadata. It can also perform installation of
new packages, removal of old packages and perform queries on the installed
and/or available packages among many other commands/services (see below).
is similar to other high level package managers like apt-get and
While there are some graphical interfaces directly to the yum
recent graphical interface development is happening with PackageKit and the
is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist |
* help [command]
Unless the --help or -h option is given, one of the above commands must be
Repository configuration is honored in all operations.
- Is used to install the latest version of a package or group
of packages while ensuring that all dependencies are satisfied. (See
Specifying package names for more information) If no package
matches the given package name(s), they are assumed to be a shell glob and
any matches are then installed. If the name starts with an @ character the
rest of the name is used as though passed to the groupinstall command. If
the name starts with a - character, then a search is done within the
transaction and any matches are removed. If the name is a file, then
install works like localinstall. If the name doesn't match a package, then
package "provides" are searched (Eg.
"_sqlitecache.so()(64bit)") as are filelists (Eg.
"/usr/bin/yum"). Also note that for filelists, wildcards will
match multiple packages.
- If run without any packages, update will update every
currently installed package. If one or more packages or package globs are
specified, Yum will only update the listed packages. While updating
packages, yum will ensure that all dependencies are satisfied. (See
Specifying package names for more information) If the packages or
globs specified match to packages which are not currently installed then
update will not install them. update operates on groups, files, provides
and filelists just like the "install" command.
If the main obsoletes configure option is true (default) or the --obsoletes
flag is present yum will include package obsoletes in its
calculations - this makes it better for distro-version changes, for
example: upgrading from somelinux 8.0 to somelinux 9.
Note that " update" works on installed packages first, and
only if there are no matches does it look for available packages. The
difference is most noticable when you do " update
foo-1-2" which will act exactly as " update foo" if
foo-1-2 is installed. You can use the " update-to" if
you'd prefer that nothing happen in the above case.
- This command works like "update" but
always specifies the version of the package we want to update to.
- Implemented so you could know if your machine had any
updates that needed to be applied without running it interactively.
Returns exit value of 100 if there are packages available for an update.
Also returns a list of the packages to be updated in list format. Returns
0 if no packages are available for update. Returns 1 if an error occurred.
Running in verbose mode also shows obsoletes.
- Is the same as the update command with the --obsoletes flag
set. See update for more details.
- This command works like "upgrade" but
always specifies the version of the package we want to update to.
- distribution-synchronization or
- Synchronizes the installed package set with the latest
packages available, this is done by either obsoleting, upgrading or
downgrading as appropriate. This will "normally" do the same
thing as the upgrade command however if you have the package FOO installed
at version 4, and the latest available is only version 3, then this
command will downgrade FOO to version 3.
If you give the optional argument "full", then the command will
also reinstall packages where the install checksum and the available
checksum do not match. And remove old packages (can be used to sync. rpmdb
versions). The optional argument "different" can be used to
specify the default operation.
This command does not perform operations on groups, local packages or
- remove or erase
- Are used to remove the specified packages from the system
as well as removing any packages which depend on the package being
removed. remove operates on groups, files, provides and filelists just
like the "install" command.(See Specifying package names
for more information)
Note that "yum" is included in the protected_packages
configuration, by default. So you can't accidentally remove yum
- Is used to list various information about available
packages; more complete details are available in the List Options
- provides or whatprovides
- Is used to find out which package provides some feature or
file. Just use a specific name or a file-glob-syntax wildcards to list the
packages available or installed that provide that feature or file.
- This is used to find packages when you know something about
the package but aren't sure of it's name. By default search will try
searching just package names and summaries, but if that "fails"
it will then try descriptions and url.
Yum search orders the results so that those packages matching more terms
will appear first.
You can force searching everything by specifying "all" as the
- Is used to list a description and summary information about
available packages; takes the same arguments as in the List Options
- Is used to clean up various things which accumulate in the
yum cache directory over time. More complete details can be found
in the Clean Options section below.
- Is used to download and make usable all the metadata for
the currently enabled yum repos.
- A command, new in 3.4.2, that collects all the subcommands
that act on groups together.
" group install" is used to install all of the individual
packages in a group, of the specified types (this works as if you'd taken
each of those package names and put them on the command line for a
"yum install" command).
The group_package_types configuration option specifies which types will be
" group update" is just an alias for groupinstall, which
will do the right thing because "yum install X" and "yum
update X" do the same thing, when X is already installed.
" group list" is used to list the available groups from all
yum repos. Groups are marked as "installed" if all
mandatory packages are installed, or if a group doesn't have any mandatory
packages then it is installed if any of the optional or default package
are installed. The optional "hidden" argument will also list
groups marked as not being "user visible". If you pass the -v
option, to enable verbose mode, then the groupids are displayed.
" group remove" is used to remove all of the packages in a
group, unlike "groupinstall" this will remove everything
regardless of group_package_types. It is worth pointing out that packages
can be in more than one group, so "group install X Y" followed
by "group remove Y" does not do give you the same result as
"group install X".
The groupremove_leaf_only configuration changes the behaviour of this
command to only remove packages which aren't required by something else.
" group info" is used to give the description and package
list of a group (and which type those packages are marked as). Note that
you can use the yum-filter-data and yum-list-data plugins to get/use the
data the other way around (Ie. what groups own packages need updating). If
you pass the -v option, to enable verbose mode, then the package names are
matched against installed/available packages similar to the list
- Is used to enter the 'yum shell', when a filename is
specified the contents of that file is executed in yum shell mode. See
yum-shell(8) for more info
- Is used to list packages providing the specified
dependencies, at most one package is listed per dependency.
- Is used to install a set of local rpm files. If required
the enabled repositories will be used to resolve dependencies. Note that
the install command will do a local install, if given a filename. This
option is maintained for legacy reasons only.
- Is used to update the system by specifying local rpm files.
Only the specified rpm files of which an older version is already
installed will be installed, the remaining specified packages will be
ignored. If required the enabled repositories will be used to resolve
dependencies. Note that the update command will do a local update, if
given a filename. This option is maintained for legacy reasons only.
- Will reinstall the identically versioned package as is
currently installed. This does not work for "installonly"
packages, like Kernels. reinstall operates on groups, files, provides and
filelists just like the "install" command.
- Will try and downgrade a package from the version currently
installed to the previously highest version (or the specified version).
The depsolver will not necessarily work, but if you specify all the
packages it should work (and thus. all the simple cases will work). Also
this does not work for "installonly" packages, like Kernels.
downgrade operates on groups, files, provides, filelists and rpm files
just like the "install" command.
- Produces a list of all dependencies and what packages
provide those dependencies for the given packages. As of 3.2.30 it now
just shows the latest version of each package that matches (this can be
changed by using --showduplicates) and it only shows the newest providers
(which can be changed by using --verbose).
- Produces a list of configured repositories. The default is
to list all enabled repositories. If you pass -v, for verbose mode, more
information is listed. If the first argument is 'enabled', 'disabled' or
'all' then the command will list those types of repos.
You can pass repo id or name arguments, or wildcards which to match against
both of those. However if the id or name matches exactly then the repo
will be listed even if you are listing enabled repos. and it is disabled.
In non-verbose mode the first column will start with a '*' if the repo. has
metalink data and the latest metadata is not local. For non-verbose mode
the last column will also display the number of packages in the repo. and
(if there are any user specified excludes) the number of packages
One last special feature of repolist, is that if you are in non-verbose mode
then yum will ignore any repo errors and output the information it can get
(Eg. "yum clean all; yum -C repolist" will output something,
although the package counts/etc. will be zeroed out).
- Produces a "version" of the rpmdb, and of the
enabled repositories if "all" is given as the first argument.
You can also specify version groups in the version-groups config. file. If
you pass -v, for verbose mode, more information is listed. The version is
calculated by taking a sha1 hash of the packages (in sorted order), and
the checksum_type/checksum_data entries from the yumdb. Note that this
rpmdb version is now also used significantly within yum (esp. in yum
The version command will now show "groups" of packages as a
separate version, and so takes sub-commands:
"version grouplist" - List the defined version groups.
"version groupinfo" - Get the complete list of packages within one
or more version groups.
"version installed" - This is the default, only show the version
information for installed packages.
"version available" - Only show the version information for
"version all" - Show the version information for installed and
"version nogroups | nogroups-*" - Just show the main version
"version group-*" - Just show the grouped version information, if
more arguments are given then only show the data for those groups.
- The history command allows the user to view what has
happened in past transactions (assuming the history_record config. option
is set). You can use info/list/packages-list/summary to view what
happened, undo/redo/rollback to act on that information and new to start a
new history file.
The info/list/summary commands take either a transaction id or a package
(with wildcards, as in Specifying package names), all three can
also be passed no arguments. list can be passed the keyword
"all" to list all the transactions.
The packages-list command takes a package (with wildcards, as in
Specifying package names).
The undo/redo/rollback commands take either a single transaction id or the
keyword last and an offset from the last transaction (Eg. if you've done
250 transactions, "last" refers to transaction 250, and
"last-4" refers to transaction 246).
The undo/redo commands act on the specified transaction, undo'ing or
repeating the work of that transaction. While the rollback command will
undo all transactions upto the point of the specified transaction. For
example, if you have 3 transactions, where package A; B and C where
installed respectively. Then "undo 1" will try to remove pacakge
A, "redo 1" will try to install package A (if it is not still
installed), and "rollback 1" will try to remove packages B and
C. Note that after a "rollback 1" you will have a fourth
transaction, although the ending rpmdb version (see: yum version) should
be the same in transactions 1 and 4.
The addon-info command takes a transaction ID, and the packages-list command
takes a package (with wildcards).
In "history list" you can change the behaviour of the 2nd column
via. the configuration option history_list_view.
In "history list" output the Altered column also gives some extra
information if there was something not good with the transaction (this is
also shown at the end of the package column in the packages-list command).
> - The rpmdb was changed, outside yum, after the
< - The rpmdb was changed, outside yum, before the
* - The transaction aborted before completion.
# - The transaction completed, but with a non-zero status.
E - The transaction completed fine, but had warning/error output
during the transaction.
P - The transaction completed fine, but problems already existed
in the rpmdb.
s - The transaction completed fine, but --skip-broken was enabled
and had to skip some packages.
- Checks the local rpmdb and produces information on any
problems it finds. You can pass the check command the arguments
"dependencies" or "duplicates", to limit the checking
that is performed (the default is "all" which does both).
The info command can also take ranges of transaction ids, of the form
start..end, which will then display a merged history as if all the
transactions in the range had happened at once.
Eg. "history info 1..4" will merge the first four transactions and
display them as a single transaction.
- Produces help, either for all commands or if given a
command name then the help for that particular command.
Most command line options can be set using the configuration file as well and
the descriptions indicate the necessary configuration option to set.
- -h, --help
- Help; display a help message and then quit.
- -y, --assumeyes
- Assume yes; assume that the answer to any question which
would be asked is yes.
Configuration Option: assumeyes
- -c, --config=[config file]
- Specifies the config file location - can take HTTP and FTP
URLs and local file paths.
- -q, --quiet
- Run without output. Note that you likely also want to use
- -v, --verbose
- Run with a lot of debugging output.
- -d, --debuglevel=[number]
- Sets the debugging level to [number] - turns up or down the
amount of things that are printed. Practical range: 0 - 10
Configuration Option: debuglevel
- -e, --errorlevel=[number]
- Sets the error level to [number] Practical range 0 - 10. 0
means print only critical errors about which you must be told. 1 means
print all errors, even ones that are not overly important. 1+ means print
more errors (if any) -e 0 is good for cron jobs.
Configuration Option: errorlevel
- Sets the debug level to [name] for rpm scriplets. 'info' is
the default, other options are: 'critical', 'emergency', 'error', 'warn'
Configuration Option: rpmverbosity
- -R, --randomwait=[time in minutes]
- Sets the maximum amount of time yum will wait before
performing a command - it randomizes over the time.
- -C, --cacheonly
- Tells yum to run entirely from system cache - does not
download or update any headers unless it has to to perform the requested
action. If you're using this as a user yum will not use the tempcache for
the user but will only use the system cache in the system cachedir.
- Reports the yum version number and installed package
versions for everything in history_record_packages (can be added to by
- Doesn't limit packages to their latest versions in the
info, list and search commands (will also affect plugins which use the
- Specifies an alternative installroot, relative to which all
packages will be installed. Think of this like doing "chroot
<root> yum" except using --installroot allows yum to work
before the chroot is created. Note: You may also want to use the option
--releasever=/ when creating the installroot as otherwise the $releasever
value is taken from the rpmdb within the installroot (and thus. will be
empty, before creation).
Configuration Option: installroot
- Enables specific repositories by id or glob that have been
disabled in the configuration file using the enabled=0 option.
Configuration Option: enabled
- Disables specific repositories by id or glob.
Configuration Option: enabled
- This option only has affect for an update, it enables
yum´s obsoletes processing logic. For more information see
the update command above.
Configuration Option: obsoletes
- -x, --exclude=package
- Exclude a specific package by name or glob from updates on
all repositories. Configuration Option: exclude
- Display colorized output automatically, depending on the
output terminal, always (using ANSI codes) or never. Note that some
commands (Eg. list and info) will do a little extra work when color is
enabled. Configuration Option: color
- Disable the excludes defined in your config files. Takes
one of three options:
all == disable all excludes
main == disable excludes defined in [main] in yum.conf
repoid == disable excludes defined for that repo
- Run with one or more plugins disabled, the argument is a
comma separated list of wildcards to match against plugin names.
- Run with all plugins disabled.
Configuration Option: plugins
- Run with GPG signature checking disabled.
Configuration Option: gpgcheck
- Resolve depsolve problems by removing packages that are
causing problems from the transaction.
Configuration Option: skip_broken
- Pretend the current release version is the given string.
This is very useful when combined with --installroot. You can also use
--releasever=/ to take the releasever information from outside the
installroot. Note that with the default upstream cachedir, of
/var/cache/yum, using this option will corrupt your cache (and you can use
$releasever in your cachedir configuration to stop this).
- -t, --tolerant
- This option currently does nothing.
- Set any config option in yum config or repo files. For
options in the global config just use: --setopt=option=value for repo
options use: --setopt=repoid.option=value
The following are the ways which you can invoke yum
in list mode. Note
that all list
commands include information on the version of the
The format of the output of yum list is:
name.arch [epoch:]version-release repo or @installed-from-repo
- yum list [all | glob_exp1] [glob_exp2] [...]
- List all available and installed packages.
- yum list available [glob_exp1] [...]
- List all packages in the yum repositories available to be
- yum list updates [glob_exp1] [...]
- List all packages with updates available in the yum
- yum list installed [glob_exp1] [...]
- List the packages specified by args. If an argument
does not match the name of an available package, it is assumed to be a
shell-style glob and any matches are printed.
- yum list extras [glob_exp1] [...]
- List the packages installed on the system that are not
available in any yum repository listed in the config file.
- yum list obsoletes [glob_exp1] [...]
- List the packages installed on the system that are
obsoleted by packages in any yum repository listed in the config
- yum list recent
- List packages recently added into the repositories. This is
often not helpful, but what you may really want to use is "yum
list-updateinfo new" from the security yum plugin.
A package can be referred to for install, update, remove, list, info etc with
any of the following as well as globs of any of the following:
- For example: yum remove kernel-2.4.1-10.i686
this will remove this specific kernel-ver-rel.arch.
- Or: yum list available 'foo*'
will list all available packages that match 'foo*'. (The single quotes will
keep your shell from expanding the globs.)
The following are the ways which you can invoke yum
in clean mode. Note
that "all files" in the commands below means "all files in
currently enabled repositories". If you want to also clean any
(temporarily) disabled repositories you need to use --enablerepo='*'
- yum clean expire-cache
- Eliminate the local data saying when the metadata and
mirrorlists were downloaded for each repo. This means yum will revalidate
the cache for each repo. next time it is used. However if the cache is
still valid, nothing significant was deleted.
- yum clean packages
- Eliminate any cached packages from the system. Note that
packages are not automatically deleted after they are downloaded.
- yum clean headers
- Eliminate all of the header files, which old versions of
yum used for dependency resolution.
- yum clean metadata
- Eliminate all of the files which yum uses to determine the
remote availability of packages. Using this option will force yum to
download all the metadata the next time it is run.
- yum clean dbcache
- Eliminate the sqlite cache used for faster access to
metadata. Using this option will force yum to download the sqlite metadata
the next time it is run, or recreate the sqlite metadata if using an older
- yum clean rpmdb
- Eliminate any cached data from the local rpmdb.
- yum clean plugins
- Tell any enabled plugins to eliminate their cached data.
- yum clean all
- Does all of the above.
Yum can be extended through the use of plugins. A plugin is a Python
".py" file which is installed in one of the directories specified by
option in yum.conf. For a plugin to work, the following
conditions must be met:
1. The plugin module file must be installed in the plugin path as just
2. The global plugins
option in /etc/yum/yum.conf must be set to `1'.
3. A configuration file for the plugin must exist in
/etc/yum/pluginconf.d/<plugin_name>.conf and the enabled
in this file must set to `1'. The minimal content for such a configuration
enabled = 1
See the yum.conf(5)
man page for more information on plugin related
yum search yum
See the Authors file included with this program.
There of course aren't any bugs, but if you find any, you should first consult
the FAQ mentioned above and then email the mailing list: firstname.lastname@example.org
or filed in bugzilla.