A few things you might not know about RHEL-6.1+ yum
Search is more user friendly
As we maintain yum we are always looking for the "minor" changes that can
make a big difference to the user, and this is probably one of the
biggest minor changes. As of late RHEL-5 and RHEL-6.0 "yum search" was
great for finding obscure things that you knew something about but with
6.1 we've hopefully made it useful for finding the "everyday" packages
you can't remember the exact name of. We did this by excluding a lot of
the "extra" hits, when you get a large search result. For instance "yum
search kvm manager" is pretty useless in RHEL-6.0, but in RHEL-6.1 you
should find what you want very quickly.
Example commands:
yum search kvm manager
yum search python url
- The updateinfo command
The "yum-security" or "yum-plugin-security" package has been around since
early RHEL-5, but the RHEL-6.1 update has introduced the "updateinfo"
command to make things a little easier to use, and you can now easily
view installed security errata (to more easily make sure you are
secure). We've also added a few new pieces of data to the RHEL
updateinfo data. Probably the most significant is that as well as errata
being marked "security" or not they are now tagged with their
"severity". So you can automatically apply only "critical" security
updates, for example.
Example commands:
yum updateinfo list security all
yum update-minimal --sec-severity=critical
The versionlock command
As with the previous point we've had "yum-plugin-version" for a long time, but
now we've made it easier to use and put all it's functions under a
single "versionlock" sub-command. You can now also "exclude" specific
versions you don't want, instead of locking to known good specific ones
you had tested.
Example commands:
# Lock to the version of yum currently installed.
yum versionlock add yum
# Opposite, disallow versions of yum currently available:
yum versionlock exclude yum
yum versionlock list
yum versionlock delete yum\*
yum versionlock clear
# This will show how many "excluded" packages are in each repo.
yum repolist -x .
Manage your own .repo variables
This is actually available in RHEL-6.0, but given that almost nobody
knows about it I thought I'd share it here. You can put files in
"/etc/yum/vars" and then use the names of those files are variables in
any yum configuration, just like $basearch or $releasever. There is also
a special $uuid variable, so you can track individual machines if you
want to.
yum has it's own DB
Again, this something that was there in RHEL-6.0 but has improved (and
is likely to improve more over time). The most noticeable addition is
that we now store the "installed_by" and "changed_by" attributes, this
could be worked out from "yum history" before, but now it's easily
available directly from the installed package.
Example commands:
yumdb
yumdb info yum
yumdb set installonly keep kernel-2.6.32-71.7.1.el6
yumdb sync
Additional data in "yum history"
Again, this something that was there in RHEL-6.0 but has improved (and
is likely to improve more over time). The most noticeable additions are
that we now store the command line and we store a "transaction file"
that you can use on other machines.
Example commands:
yum history
yum history pkgs yum
yum history summary
yum history undo last
yum history addon-info 1 config-main
yum history addon-info last saved_tx
"yum install" is now fully kickstart compatible
As of RHEL-6.0 there was one thing you could do in a kickstart package
list that you couldn't do in "yum install" and that was to "remove"
packages with "-package". As of the RHEL-6.1 yum you can do that, and we
also added that functionality to upgrade/downgrade/remove. Apart from
anything else, this should make it very easy to turn the kickstart
package list into "yum shell" files (which can even be run in
kickstart's %post).
Example commands:
yum install 'config(postfix) >= 2.7.0'
yum install MTA
yum install '/usr/kerberos/sbin/*'
yum -- install @books -javanotes
Easier to change yum configuration
We tended to get a lot of feature requests for a plugin to add a
command line option so the user could change a single yum.conf variable,
and we had to evaluate those requests for general distribution based on
how much we thought all users would want/need them. With the RHEL-6.1
yum we created the --setopt so that any option can be changed easily,
without having to create a specific bit of code. There were also some
updates to the yum-config-manager command.
Example commands:
yum --setopt=alwaysprompt=false upgrade yum
yum-config-manager
yum-config-manager --enable myrepo
yum-config-manager --add-repo https://example.com/myrepo.repo
Working towards managing 10 machines easily
yum is the best way to manage a single machine, but it isn't quite as
good at managing 10 identical machines. While the RHEL-6.1 yum still
isn't great at this, we've made a few improvements that should help
significantly. The biggest is probably the "load-ts" command, and the
infrastructure around it, which allows you to easily create a
transaction on one machine, test it, and then "deploy" it to a number of
other machines. This is done with checking on the yum side that the
machines started from the same place (via. rpmdb versions), so that you
know you are doing
the same operation.
Also worth noting is that we have added a plugin hook to the
"package verify" operation, allowing things like "puppet" to hook into
the verification process. A prototype of what that should allow those
kinds of tools to do was written by Seth Vidal
here.
Example commands:
# Find the current rpmdb version for this machine (available in RHEL-6.0)
yum version nogroups
# Completely re-image a machine, or dump it's "package image"
yum-debug-dump
yum-debug-restore
--install-latest
--ignore-arch
--filter-types=install,remove,update,downgrade
# This is the easiest way to get a transaction file without modifying the rpmdb
echo | yum update blah
ls ${TMPDIR:-/tmp}/yum_save_tx-* | sort | tail -1
# You can now load a transaction and/or see the previous transaction from the history
yum load-ts /tmp/yum_save_tx-2011-01-17-01-00ToIFXK.yumtx
yum -q history addon-info last saved_tx > my-yum-saved-tx.yumtx