6.2. Keeping Software Up to DateBy now, you would almost certainly have noticed the small flashing exclamation mark icon in the top right corner of the Fedora desktop. Clicking this icon will launch the Red Hat Network Alert Notification Tool shown in Figure 6-14. This tool is designed to keep the RPM packages you've installed up to date. Unfortunately, this applet, and its companion application up2date , contain a serious bug, so most of their functionality doesn't work. Hopefully, someone at Red Hat or a member of the Fedora community will fix it soon; you can check the status of this bug at Red Hat's Bugzilla bug-tracking system. If you proceed through the dialogs presented by accepting the Terms of Service and configuring any HTTP Proxies you may use, you'll see the Red Hat Alert Notification icon turn green, to indicate that it's checking for updates, and then turn blue, to indicate that there are no updates available, as shown in Figure 6-15. Unfortunately, this color change is likely to be a symptom of the bug mentioned previously. To make sure no updates are available, you can use Fedora's command-line updating tool, yum . Keep an eye out for this bug to be fixed in a future release of Fedora Core. Figure 6-14. Red Hat Network Alert Notification Tool displaying on first launch.Figure 6-15. The Red Hat Network Alert notifier.6.2.1. yumyum (Yellow Dog Updater, Modified) is a relatively recent addition to the administration toolkit in many Linux distributions. Derived from a tool that was built for the PowerPC-based Yellow Dog Linux distribution, yum provides a way to keep your system packages up to date by utilizing a network of servers that host RPM packages. We used this tool in Chapter 5 to get the latest version of Apache. yum has some distinct advantages over other tools. These advantages make it a good choice for administratorsespecially those who may not always be sitting at the server.
Tip: While yum is a convenient tool, it can occasionally cause problems. For example, some MySQL updates may overwrite your configuration and, sometimes, even delete your data. If your installation depends on specific libraries in order to function, it's generally a good idea to check through the list manually before you install new packages. 6.2.2.1. Updating your Server with yumTo check the availability of updates to your server, enter yum check-update in a terminal window. [kermit@swinetrek ~]$ su Password: [root@swinetrek kermit]# yum check-update Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 342 kB 00:09 updates-re: ############################################ 954/954 Added 954 new packages, deleted 0 old in 19.43 seconds primary.xml.gz 100% |=========================| 829 kB 00:24 extras : ############################################ 2324/2324 Added 2324 new packages, deleted 0 old in 41.74 seconds primary.xml.gz 100% |=========================| 824 kB 00:16 base : ############################################ 2772/2772 Added 2772 new packages, deleted 0 old in 37.56 seconds MyODBC.i386 2.50.39-25.FC4.1 updates-released NetworkManager.i386 0.4-20.FC4.1 updates-released NetworkManager-gnome.i386 0.4-20.FC4.1 updates-released … yum.noarch 2.4.0-0.fc4 updates-released zlib.i386 1.2.2.2-5.fc4 updates-released zlib-devel.i386 1.2.2.2-5.fc4 updates-released [root@swinetrek kermit]# All of this output is an indication that the system is working as it should. yum compares the versions of RPM software installed locally with those available for download, then lists all of the packages that have been updated. If the system is newly installed, you'll probably see quite a few packages for which updates are available. Updating the system with these new packages is just a matter of entering yum update, as root, at the command prompt: [root@swinetrek kermit]# yum update [root@swinetrek kermit]# yum update Setting up Update Process Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 347 kB 00:04 updates-re: ############################################ 966/966 Added 966 new packages, deleted 0 old in 35.21 seconds primary.xml.gz 100% |=========================| 855 kB 00:51 extras : ############################################ 2361/2361 Added 2361 new packages, deleted 0 old in 52.41 seconds primary.xml.gz 100% |=========================| 824 kB 00:11 base : ############################################ 2772/2772 Added 2772 new packages, deleted 0 old in 47.62 seconds Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for glib2 to pack into transaction set. glib2-2.6.6-1.i386 100% |=========================| 21 kB 00:00 ---> Package glib2.i386 0:2.6.6-1 set to be updated ---> Downloading header for spamassassin to pack into transaction set. spamassassin-3.0.4 100% |=========================| 31 kB 00:00 ---> Package spamassassin.i386 0:3.0.4-1.fc4 set to be updated … ---> Downloading header for pam to pack into transaction set. pam-0.79-9.5.i386. 100% |=========================| 62 kB 00:00 ---> Package pam.i386 0:0.79-9.5 set to be updated ---> Downloading header for libraw1394 to pack into transaction set. libraw1394-1.2.0-1 100% |=========================| 4.9 kB 00:00 ---> Package libraw1394.i386 0:1.2.0-1.fc4 set to be updated --> Running transaction check --> Processing Dependency: python-numeric for package: pygtk2 --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Downloading header for python-numeric to pack into transaction set. python-numeric-23. 100% |=========================| 9.0 kB 00:00 ---> Package python-numeric.i386 0:23.7-2 set to be updated --> Running transaction check Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: kernel i686 2.6.13-1.1526_FC4 updates-released 16 M kernel-devel i686 2.6.13-1.1526_FC4 updates-released 4.2 M Updating: MyODBC i386 2.50.39-25.FC4.1 updates-released 59 k NetworkManager i386 0.4-20.FC4.1 updates-released 181 k … zlib i386 1.2.2.2-5.fc4 updates-released 48 k zlib-devel i386 1.2.2.2-5.fc4 updates-released 98 k Installing for dependencies: python-numeric i386 23.7-2 base 679 k Transaction Summary ================================================================== Install 3 Package(s) Update 190 Package(s) Remove 0 Package(s) Total download size: 371 M Is this ok [y/N]: y Is this ok [y/N]: At the end of this output, yum lists the packages that are available for download, including the version, repository, and size of each download. Here we can see that the total download size is 371MB, so we may not want to run this update until there's plenty of bandwidth available on the network. Answer y at this prompt if you wish to continue: Is this ok [y/N]: y Downloading Packages: (1/193): glib2-2.6 100% |=======================| 568 kB 00:09 (2/193): spamassas 100% |=======================| 685 kB 00:09 (3/193): system-co 8% |== | 71 kB 00:02 ETA yum will download all the listed packages. (1/193): glib2-2.6 100% |=======================| 568 kB 00:09 (2/193): spamassas 100% |=======================| 685 kB 00:09 (3/193): system-co 100% |=======================| 307 kB 00:03 … (192/193): pam-0.7 100% |=======================| 1.9 MB 00:27 (193/193): libraw1 100% |=======================| 37 kB 00:00 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 public key not available for glib2-2.6.6-1.i386.rpm Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>" Is this ok [y/N]: As we mentioned in Chapter 5, the RPM packages yum downloads are encrypted using a private key, so we need to import the public key to decrypt the package. Once yum has downloaded the public key, it can decrypt and install the packages. Is this ok [y/N]: y Key imported successfully Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : libgcc ##################### [ 1/383] Updating : tzdata ##################### [ 2/383] Updating : glibc-common ##################### [ 3/383] Updating : glibc ##################### [ 4/383] Stopping sshd: [ OK ] Starting sshd: [ OK ] Updating : zlib ##################### [ 5/383] Updating : glib2 ##################### [ 6/383] … Updating : mod_ssl ##################### [192/383] Updating : dhcpv6_client ##################### [193/383] Cleanup : glib2 ##################### [194/383] Cleanup : spamassassin ##################### [195/383] … Cleanup : pam ##################### [382/383] Cleanup : libraw1394 ##################### [383/383] Installed: kernel.i686 0:2.6.13-1.1526_FC4 kernel-devel.i686 0:2.6.13-1.1526_FC4 Dependency Installed: python-numeric.i386 0:23.7-2 Updated: MyODBC.i386 0:2.50.39-25.FC4.1 NetworkManager.i386 0:0.4-20.FC4.1 … zlib.i386 0:1.2.2.2-5.fc4 zlib-devel.i386 0:1.2.2.2-5.fc4 Complete! [root@swinetrek kermit]# Your system is now up to date with all patches released by Red Hat. 6.2.2.2. Updating a Single Packageyum will also allow you to update individual packages. You can do this by including the package name in the command line, just as we did when we updated Apache in Chapter 5: [root@swinetrek kermit]# yum update bind Setting up Update Process Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files Could not find update match for bind No Packages marked for Update/Obsoletion [root@swinetrek kermit]# In this case, yum has found that the bind package on the system is up to date, but that's not always going to be the case. Here's what would happen if a new version of the bind package existed, and we decided to update the version we have on our server: [root@swinetrek kermit]# yum update bind Setting up Update Process Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 342 kB 00:04 updates-re: ############################################ 954/954 Added 1 new packages, deleted 12 old in 5.09 seconds base : ############################################ 2772/2772 Added 2772 new packages, deleted 0 old in 36.97 seconds Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for bind to pack into transaction set. bind-9.3.1-10_FC4. 100% |=========================| 38 kB 00:01 ---> Package bind.i386 24:9.3.1-10_FC4 set to be updated --> Running transaction check --> Processing Dependency: bind-libs = 24:9.3.1-10_FC4 for package: bind --> Processing Dependency: bind-utils = 24:9.3.1-10_FC4 for package: bind --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Downloading header for bind-utils to pack into transaction set. bind-utils-9.3.1-1 100% |=========================| 28 kB 00:00 ---> Package bind-utils.i386 24:9.3.1-10_FC4 set to be updated ---> Downloading header for bind-libs to pack into transaction set. bind-libs-9.3.1-10 100% |=========================| 30 kB 00:00 ---> Package bind-libs.i386 24:9.3.1-10_FC4 set to be updated --> Running transaction check Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Updating: bind i386 24:9.3.1-10_FC4 updates-released 510 k Updating for dependencies: bind-libs i386 24:9.3.1-10_FC4 updates-released 779 k bind-utils i386 24:9.3.1-10_FC4 updates-released 146 k Transaction Summary ================================================================== Install 0 Package(s) Update 3 Package(s) Remove 0 Package(s) Total download size: 1.4 M Is this ok [y/N]: y Downloading Packages: (1/3): bind-9.3.1- 100% |=========================| 510 kB 00:08 (2/3): bind-utils- 100% |=========================| 146 kB 00:02 (3/3): bind-libs-9 100% |=========================| 779 kB 00:09 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 public key not available for bind-9.3.1-10_FC4.i386.rpm Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora Importing GPG key 0x4F2A6FD2 "Fedora Project <fedora@redhat.com>" Is this ok [y/N]: y Key imported successfully Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Updating : bind-libs ######################### [1/6] Updating : bind-utils ######################### [2/6] Updating : bind ######################### [3/6] Cleanup : bind ######################### [4/6] Cleanup : bind-utils ######################### [5/6] Cleanup : bind-libs ######################### [6/6] Updated: bind.i386 24:9.3.1-10_FC4 Dependency Updated: bind-libs.i386 24:9.3.1-10_FC4 bind-utils.i386 24:9.3.1-10_FC4 Complete! [root@swinetrek kermit]# 6.2.2.3. Searching for and Installing PackagesSo far, we've looked at updating currently installed software using yum, but we can also use it to install software from its repositories. In order to locate such software, we can use yum's search facility. Here, we're using yum search mathml to search for any packages that make mention of MathML in their metadata: [root@swinetrek kermit]# yum search mathml Searching Packages: Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files mathml-fonts.noarch 1.0-18.fc4 extras Matched from: mathml-fonts This package contains fonts required to display mathematical symbols. Applications supported include: * mozilla (and netscape >= 7) to display MathML * lyx * kformula (koffice) http://www.mozilla.org/projects/mathml/fonts/ mathml-fonts.noarch 1.0-15 extras Matched from: mathml-fonts This package contains fonts required to display mathematical symbols. Applications supported include: * mozilla (and netscape >= 7) to display MathML * lyx * kformula (koffice) http://www.mozilla.org/projects/mathml/fonts/ gtkmathview.i386 0.7.5-2.fc4 extras Matched from: A MathML rendering library GtkMathView is a C++ rendering engine for MathML documents. It provides an interactive view that can be used for browsing and editing MathML markup. mathml-fonts.noarch 1.0-17.fc4 extras Matched from: mathml-fonts This package contains fonts required to display mathematical symbols. Applications supported include: * mozilla (and netscape >= 7) to display MathML * lyx * kformula (koffice) http://www.mozilla.org/projects/mathml/fonts/ gtkmathview.i386 0.7.5-3.fc4 extras Matched from: A MathML rendering library GtkMathView is a C++ rendering engine for MathML documents. It provides an interactive view that can be used for browsing and editing MathML markup. [root@swinetrek kermit]# yum presents a list of all packages whose metadata contain the term "MathML." Let's take a closer look at the last package that yum found. The first line of this output provides the package name (gtkmathview.i386; the part after the dot indicates the processor architecture for which this package is built), the version of the package (0.7.5-3.fc4), and which repository the package was found in (extras). If the package is installed, the repository will be displayed as installed. Following this line, yum provides a description of the package. To install this package, we use the yum install command. We can leave the architecture out of the package name; yum is smart enough to figure out which is the most appropriate package for this computer. [root@swinetrek kermit]# yum install gtkmathview Setting up Install Process Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 342 kB 00:07 updates-re: ############################################ 954/954 Added 5 new packages, deleted 17 old in 5.74 seconds primary.xml.gz 100% |=========================| 855 kB 00:11 extras : ############################################ 2361/2361 Added 37 new packages, deleted 0 old in 11.79 seconds Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for gtkmathview to pack into transaction set. gtkmathview-0.7.5- 100% |=========================| 8.4 kB 00:00 ---> Package gtkmathview.i386 0:0.7.5-3.fc4 set to be updated --> Running transaction check Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: gtkmathview i386 0.7.5-3.fc4 extras 958 k Transaction Summary ================================================================== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 958 k Is this ok [y/N]: y Downloading Packages: (1/1): gtkmathview 100% |=========================| 958 kB 00:12 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 1ac70ce6 public key not available for gtkmathview-0.7.5-3.fc4.i386.rpm Retrieving GPG key from file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras Importing GPG key 0x1AC70CE6 "Fedora Pre Extras Release <pre-extras@fedoraproject.org>" Is this ok [y/N]: y Key imported successfully Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: gtkmathview ######################### [1/1] Installed: gtkmathview.i386 0:0.7.5-3.fc4 Complete! [root@swinetrek kermit]# 6.2.2.4. Removing PackagesYou can use yum to remove packages cleanly from your system. [root@swinetrek kermit]# yum remove bind Setting up Remove Process Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Package bind.i386 24:9.3.1-10_FC4 set to be erased --> Running transaction check Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 800 kB 00:10 extras : ############################################ 2247/2247 Added 2 new packages, deleted 79 old in 11.69 seconds --> Processing Dependency: bind >= 9.1.3-0.rc2.3 for package: caching-nameserver --> Processing Dependency: bind for package: caching-nameserver --> Processing Dependency: bind for package: NetworkManager --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Package caching-nameserver.noarch 0:7.3-3 set to be erased ---> Package NetworkManager.i386 0:0.4-15.cvs20050404 set to be erased --> Running transaction check --> Processing Dependency: NetworkManager = 0.4-15.cvs20050404 for package: NetworkManager-gnome --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Package NetworkManager-gnome.i386 0:0.4-15.cvs20050404 set to be erased --> Running transaction check Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Removing: bind i386 24:9.3.1-10_FC4 installed 1.4 M Removing for dependencies: NetworkManager i386 0.4-15.cvs200504 installed 482 k NetworkManager-g i386 0.4-15.cvs200504 installed 180 k caching-nameserv noarch 7.3-3 installed 43 k Transaction Summary ================================================================== Install 0 Package(s) Update 0 Package(s) Remove 4 Package(s) Total download size: 0 Is this ok [y/N]: y Downloading Packages: Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Removing : caching-nameserver ######################### [1/4] warning: /etc/rndc.key saved as /etc/rndc.key.rpmsave Removing : bind ######################### [2/4] Removing : NetworkManager-gnome ######################### [3/4] Removing : NetworkManager ######################### [4/4] Removed: bind.i386 24:9.3.1-10_FC4 Dependency Removed: NetworkManager.i386 0:0.4-15.cvs20050404 NetworkManager-gnome.i386 0:0.4-15.cvs20050404 caching-nameserver.noarch 0:7.3-3 Complete! [root@swinetrek kermit]# 6.2.2.5. Other yum Functionsyum can clean up its cache of RPM package headers with the command yum clean all, like so: [root@swinetrek kermit]# yum clean all Cleaning up Everything 3 headers removed 3 packages removed 6 metadata files removed 0 cache files removed 3 cache files removed [root@swinetrek kermit]# Finally, yum also contains features that allow you to obtain information on specific packages: [root@swinetrek kermit]# yum info gaim Setting up repositories updates-released 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 352 kB 00:19 updates-re: ############################################ 981/981 Added 27 new packages, deleted 12 old in 9.58 seconds primary.xml.gz 100% |=========================| 876 kB 02:12 extras : ############################################ 2436/2436 Added 92 new packages, deleted 17 old in 17.71 seconds Installed Packages Name : gaim Arch : i386 Version: 1.5.0 Release: 1.fc4 Size : 11 M Repo : installed Summary: A GTK+ clone of the AOL Instant Messenger client. Description: Gaim is a clone of America Online's Instant Messenger client. It features nearly all of the functionality of the official AIM client while also being smaller, faster, and commercial-free. [root@swinetrek kermit]# All in all, yum makes updating and maintaining the RPM packages on your system an easy process. |