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
This was the first component to be introduced. Red Carpet is a graphical software update tool.
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.
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.
Here are the packages:
A solitary library file.
A solitary library file.
A solitary library file.
It appears that there will at some future point be a /usr/sbin/magic-proxy-server
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-gnomeIf 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
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
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