The tool "rpmwatch" creates reports based on Redhat's WWW site. As you might notice, this is only for Redhat and its RPMs. In addition to this, it does NOT work on Redhat's newer WWW pages nor sites for Mandrake, etc. Because of this, I have started implementing "AutoRPM" as shown below.
- Download AutoRPM and the Perl "libnet" library from the URLs in Section 5
- Uncompress AutoROM some temporary place like /usr/src/archive/rpm-tools/
tar xzvf autorpm-*.tar.gz /usr/src/archive/rpm-tools
- The LibNet module is a commonly installed tool with Perl. To verify that its already installed, run:
find /usr/lib/perl5/ | grep FTP.pm
if nothing shows up, LibNet isn't installed
- If it isn't installed, uncompress the LibNet library to a place like
/usr/src/archive/cpan tar xzvf libnet-*.tar.gz
- Next, got into the new libnet directory, compile, and install it:
cd /usr/src/archive/cpan/libnet-* perl Makefile.PL make make test make install
- Next, go into the new AutoRPM directory
cd /usr/src/archive/rpm-tools/autorpm-*
- Create its configuration directories
mkdir /etc/autorpm.d mkdir /etc/autorpm.d/pools
- Copy over the program, the configuation files, and the man pages
cp autorpm.pl /usr/local/sbin cp autorpm.conf /etc/autorpm.d cp autorpm.d/* /etc/autorpm.d cp pools/* /etc/autorpm.d/pools cp autorpm.8 /usr/local/man/man8 cp autorpm.conf.5 /usr/local/man/man5
- Fix its permissions:
chmod 700 /etc/autorpm.d /etc/autorpm.d/pools chmod 700 /usr/local/sbin/autorpm.pl
- Next, test it:
Mandrake 6.1 users:
/usr/local/sbin/autorpm.pl --ftp ftp.linux-mandrake.com:/pub/updates/6.1/RPMS/
Redhat 6.1 users:
/usr/local/sbin/autorpm.pl --ftp updates.redhat.com:/<url url="ftp:/6.1/i386/">
If that test works ok, time to tune your /etc/autorpm.d/setup:
Mandrake 6.1 users: -------------------
- Find the following lines in /etc/autorpm.d/autorpm.conf
/etc/autorpm.d/autorpm.conf -- Config_File("/etc/autorpm.d/redhat-updates"); --
-- Config_File("/etc/autorpm.d/mandrake-updates"); --
- Create the file /etc/autorpm.d/pools/mandrake-updates . In this file, put at LEAST the following line on the top. If you want, you can add other Mandrake mirror URLs in this file as well. I have listed (2) others for an example:
/etc/autorpm.d/pools/mandrake-updates -- ftp.linux-mandrake.com:/pub/updates/6.1/RPMS rpmfind.net:/linux/Mandrake/updates/6.1/RPMS ftp.orst.edu:/pub/packages/linux/mandrake/updates/6.1/RPMS --
- Next, create the following file. Edit as you deem fit. Please note that I'm still in the process of learning and tuning this tool, if you have comments, etc, please let me know.
/etc/autorpm.d/mandrake-updates
-- ########################################################## # This one will mirror the updates for all versions # of Red Hat 5.0, but won't bother with the source RPMs. # All the updates stored locally will be in architecture- # specific directories just like on the original site. ftppool ("mandrake-updates") { # Recurse through the remote FTP site if necessary # Recursive (Yes); # Compare, recursively, the remote files to this directory # Recursive_Compare_To_Dir ("/usr/src/archive/md61-updates"); # Ignore any directories named 'SRPMS' when recursing. # Regex_Dir_Ignore ("SRPMS"); # What to do if the remote RPM is a newer version # that the local copy action (updated) { # Delete whatever local file we had that was older # than the remote file. # Delete_Old_Version (Yes); # Store the remote file in this local directory. # the 'Recursive' part means that if the remote # file was in the /i386/ subdirectory, it will be # stored in a /i386/ directory locally. # Recursive_Store ("/usr/src/archive/md61-updates"); Install (Interactive); Report (Yes); Report_Queues_To ("root"); Report_To ("root"); Report_All (Yes); Display_Report (Yes); } # What to do if the remote RPM has no corresponding # version locally (e.g. it is new) action (new) { Install (Interactive); Report (Yes); Report_Queues_To ("root"); Report_To ("root"); Report_All (Yes); Display_Report (Yes); # Store_Recursive ("/usr/src/archive/md61-updates"); } } --
Once you are happy with how AutoRPM runs, I recommend have it run ONCE A DAY. To do this, do the following:
ln -s /usr/local/sbin/autorpm.pl /etc/cron.daily/autorpm
Finally, I recommend to read the "autorpm" man page and pay attention to the "auto-ignore" file. There is a lot of other interesting info in the man page so I recommend that you read it. Its well written too!
Download at RPM Watch from Section 5
rpm -Uvh rpmwatch-x.x-x.noarch.rpm
Create the file "run-rpmwatch" with the following contents:
NOTE: You need to edit the scripts to reflect your Redhat distribution installation. If you don't change the script to look to the proper URLs, your results will be worthless. On that same token, I request all the patches out there for ALL Redhat distributions though I only run 5.0. While this lets me know whats out there, some of the updated tools in 5.2 will NOT work correctly on 5.0 distributions. So, be careful and be SURE to read the "Testing RPMs before installing" at the top of Section 54 to see what files might be overwritten, etc.
/usr/local/sbin/run-rpmwatch
-- #!/bin/sh # Version v1.2 echo "Getting RH50 errata.." lynx -source <url url="http://www.redhat.com/corp/support/errata/rh50-errata-general.html"> > /tmp/rh50-errata-general.html lynx -source <url url="http://www.redhat.com/corp/support/errata/intel/rh50-errata-intel.html"> > /tmp/rh50-errata-intel.html echo "Getting RH51 errata.." lynx -source <url url="http://www.redhat.com/corp/support/errata/rh51-errata-general.html"> > /tmp/rh51-errata-general.html lynx -source <url url="http://www.redhat.com/corp/support/errata/intel/rh51-errata-intel.html"> > /tmp/rh51-errata-intel.html echo "Getting RH52 errata.." lynx -source <url url="http://www.redhat.com/corp/support/errata/rh52-errata-general.html"> > /tmp/rh52-errata-general.html lynx -source <url url="http://www.redhat.com/corp/support/errata/intel/rh52-errata-intel.html"> > /tmp/rh52-errata-intel.html echo "Converting to TXT..." href2txt /tmp/rh5*-errata-*.html > /tmp/rh-errata.txt rm -f /tmp/rh5*-errata*.html echo "Running rpmwatch.." rpmwatch -e /tmp/rh-errata.txt echo -e "\n\nA good site to get all Errata RPMS is:" echo "<url url="ftp://ftp.codemeta.com/pub/mirrors/redhat/updates/"">; rm -f rh-errata.txt echo -e "\nDone.." --
- Now, make "run-rpmwatch" executable by running "chmod 700 rpm-watch"
- Run it by typing in "./run-rpmwatch"
The output should look something like:
[root@roadrunner tools]# ./run-rpmwatch Getting RH50 errata.. Converting to TXT... Running rpmwatch.. . <skipping misc text> FL RPM VERSION BUILD UPDATE ---------------------------------------------------------------------- samba 1.9.18p10 5 ok rpm 2.5.3 5.0 ok rpm-devel 2.5.3 5.0 ok B bash 1.14.7 6 1.14.7-11
*** NOTE: please see the bottom of this section on adding this script to a weekly CRON process!
* Regardless of the tool that you use, I'd recommend that you add it CRON to be executed once a week. Since RPMWATCH is the only tool currently running, I'll use that for an example:
Slackware:
Edit the file /var/spool/cron/crontabs/root and append the following:
-- # Run the sendlogs program at 12:00am everyday 02 2 * * 0 /usr/local/sbin/run-rpmwatch
Redhat users:
Create a symbolic link to point to the run-rpmwatch script:
ln -s /usr/local/sbin/run-rpmwatch /etc/cron.weekly
- That's it. Now, make cron re-read it's config files by doing: