Right now, I'm focusing on Ximian's Red Carpet suite.

Autoupdates can hurt if package breaks

kernel package

Make sure gnupg, python, and redhat-release (or equivalent) installed.

.rpmnew, .rpmorig, .rpmsave

Major components

Red-carpet

This was the first component to be introduced. Red Carpet is a graphical software update tool.

Red carpet daemon, or rcd

This is the command line version of the graphical tool; much better for multiple machines, remote machines, or low bandwidth connections.

Ximian has an introduction to the tool.

Magic proxy

The Magic Proxy packages are solely libraries used for rcd where the machines to be upgraded (rcd servers) lie behind firewalls that don't allow incoming connections.

Packages

Here are the packages:

libredcarpet
libredcarpet-tools
rc
"The command-line complement to the Ximian Red Carpet software management tool. It works with the rcd daemon to install, update, and remove software according to the commands you give it. The software which it installs can be from local files or from Ximian servers and mirrors, and the target system can be local or remote."
rcd
"The Ximian Red Carpet daemon performs software management functions on behalf of the rc software management tool, which can be run from a different system to allow remote software management.
rcd can can update, install, and remove software from local files or from specified download servers, and can handle interactions with the system's package database such as verification and searching."
rcd-autopull
"Ximian's Autopull(tm) technology to schedule and manage server and workstation updates."

A solitary library file.

rcd-devel
rcd-mp-client
"The client side component of the Red Carpet Daemon Magic Proxy"

A solitary library file.

rcd-mp-middleman
"The middleman component of the Red Carpet Daemon Magic Proxy"

A solitary library file.

It appears that there will at some future point be a /usr/sbin/magic-proxy-server

red-carpet
"Ximian Red Carpet is a fully featured software updater and manager."

Setting up rcd

Getting the packages

If you already have rc and rcd installed, continue on to FIXME-#link Installing the packages.

Find your distribution in the listing from

rsync zaphod.stearns.org::ximianmirror/redcarpet/

In this example, I'm installing onto a redhat-7.3 based system. Now I get a directory listing for the two packages in which I have interest:

rsync zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rc-[0-9]*
rsync zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rcd-[0-9]*
At the time of this writing, the newest files were rc-1.2.1-1.ximian.1.i386.rpm and rcd-1.2.1-1.ximian.3.i386.rpm, so I pull them down and install them with:
rsync -av zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rc-1.2.1-1.ximian.1.i386.rpm .
rsync -av zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rcd-1.2.1-1.ximian.3.i386.rpm .
rpm -Uvh rc-1.2.1-1.ximian.1.i386.rpm rcd-1.2.1-1.ximian.3.i386.rpm

Let's tell rcd to only accept connections from the local machine; we'll do our remote maintenance with ssh, as we'll see in a moment:

echo 'OPTIONS="$OPTIONS --no-remote"' >>/etc/sysconfig/rcd

Now start up the daemon with:

/etc/init.d/rcd start

It will briefly make some outbound connections to pull down software version information. It will also start listening on port 505/tcp, but only accept connections from the local machine.

I'm using a squid cache, so I'll tell it to use that with:

rc set-prefs proxy-url http://cache.stearns.org:3128

This change can also be made by hand in /etc/ximian/rcd.conf ; see man rcd.conf for info on the file format and settable attributes.

Now we'll connect.

rc refresh

Refreshing all channels
Download complete

The Red Carpet system allows you to update more than just your core OS; to see what's available for automatic update, type:

rc channels

subd? | Alias                    | Name                          
------+--------------------------+-------------------------------
      | codeweavers              | CodeWeavers                   
      | evolution-devel-snapshot | Evolution Development Snapshot
      | evolution-snapshot       | Evolution Snapshot            
      | gnome-2-snapshot         | GNOME 2.0 Developer Snapshots 
      | openoffice               | OpenOffice.org                
      | opera                    | Opera                         
 Yes  | redcarpet                | Red Carpet                    
 Yes  | redhat-72-i386           | Red Hat Linux 7.2             
      | ximian-connector         | Ximian Connector              
 Yes  | ximian-gnome             | Ximian Desktop                
      | ximian-evolution         | Ximian Evolution              
      | ximian-evolution-beta    | Ximian Evolution Beta         
      | ximian-gnome-untested    | Ximian GNOME Untested         
      | ximian-preview           | Ximian Preview                
      | mono                     | mono                          
      | rcd-snaps                | rcd snapshots                 

If the "subd?" column has no "Yes" entries, rcd was unable to automatically subscribe your core OS. Do so by hand with these, substituting your OS:

rc subscribe redhat-73-i386
rc subscribe redcarpet
rc subscribe ximian-gnome
If you decide you'd like to get automatic updates to any of these others, just do:
rc subscribe ximian-evolution

This gets added to /var/lib/redcarpet/subscriptions.xml .

rc summary

There are 12 updates available at this time.
11 updates are marked as 'urgent'.

Channel           | urgent | suggested | total
------------------+--------+-----------+------
Red Hat Linux 7.2 |  11    |   1       |  12  
total             |  11    |   1       |  12  

rc list-updates

Updates for channel 'Red Hat Linux 7.2'
Urg | Name          | Current Version | Update Version
----+---------------+-----------------+---------------
urg | dev           | 3.2-5           | 3.3-4         
urg | file          | 3.35-2          | 3.39-8.7x     
urg | glibc         | 2.2.4-31        | 2.2.4-32      
urg | glibc-common  | 2.2.4-31        | 2.2.4-32      
urg | glibc-devel   | 2.2.4-31        | 2.2.4-32      
urg | MAKEDEV       | 3.2-5           | 3.3-4         
urg | openssl       | 0.9.6b-28       | 0.9.6b-30.7   
urg | openssl-devel | 0.9.6b-28       | 0.9.6b-30.7   
urg | rxvt          | 14:2.7.6-4      | 18:2.7.8-4    
urg | samba         | 2.2.1a-4        | 2.2.7-2.7.2   
urg | samba-common  | 2.2.1a-4        | 2.2.7-2.7.2   
sug | kudzu         | 0.99.23-1       | 0.99.42.2.72-1

rc update -y

The following requested packages will be installed:
  dev 3.3-4 (Red Hat Linux 7.2)
...

12 packages will be installed.
This is a 33.82M download.
Download complete
Verifying samba-common
...

Preparing Transaction
Removing
Installing glibc-common-2.2.4-32.i386.rpm
...

Preparing Transaction
Transaction finished

Automatic updates

Now that we've set up the above, I'd like this system to automatically update itself. With no action required from me:

echo >>/var/spool/cron/root
echo '5 0 * * * sleep $[ $RANDOM / 16 ] ; rc update -y | mail -s "rcd update for `hostname`" root' >>/var/spool/cron/root
touch /var/spool/cron

At 5 minutes past midnight every night, this cron job pauses for a random number of seconds (0-30 minutes, average of 15) so that we don't have all our systems updating at the same second. When the wait finishes, the rc update runs; the output is mailed to root (change "root" to your preferred email address) with a subject that lets us know what machine was updated. The "touch /var/spool/cron" (touch the directory, not the file we just edited) tells the cron program to re-read this file so that the job will run at 5 after midnight tomorrow.

FIXME - cron output to mail

All the commands in one place

You'll want to double check your OS version and the version of rc and rcd in lines 1-3, customize the hostname or IP address of your squid cache in line 6, customize which channels you subscribe to in line 8, and replace "root" with your email address in line 11. If you don't have an available squid cache or don't want any additional channels, lines 6 and/or 8 can simply be omitted. Once you've done that, ssh over to another system with the same core OS, become root, and paste these (now customized) commands:

rsync -av zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rc-1.2.1-1.ximian.1.i386.rpm .
rsync -av zaphod.stearns.org::ximianmirror/redcarpet/redhat-73-i386/rcd-1.2.1-1.ximian.3.i386.rpm .
rpm -Uvh rc-1.2.1-1.ximian.1.i386.rpm rcd-1.2.1-1.ximian.3.i386.rpm
echo 'OPTIONS="$OPTIONS --no-remote"' >>/etc/sysconfig/rcd
/etc/init.d/rcd start
rc set-prefs proxy-url http://cache.stearns.org:3128
rc refresh
rc subscribe ximian-evolution
rc update -y
echo >>/var/spool/cron/root
echo '5 0 * * * sleep $[ $RANDOM / 16 ] ; rc update -y | mail -s "rcd update for `hostname`" root' >>/var/spool/cron/root
touch /var/spool/cron