INTRODUCTION Those who maintain Internet-facing servers know well the risks from malware attempting to deface and infect. One of the most disconcerting feelings is the waiting process: you read a security alert detailing a vulnerability in software you use, and then wait for your OS vendor to release an updated package; you wait... and wait... and hope. Some well-known vendors release security patches monthly. Some, rather ominously, semi-annually. Slackware has a good reputation in this regard; yet, it is not immune to this waiting game. However, nothing prevents the skillful administrator from creating packages addressing anything the official release might have missed. Beyond security updates, software developers often wish to use the latest-and-greatest at any given moment. AUTOMATIC SOURCE UPDATING The "Moonlit Rail Up2Date" package consists primarily of scripts that simplify the process of downloading updated software sources from the Internet. By way of the companion "Moonlit Rail Slackbuilds" package, downloaded sources are converted into Slackware packages; those can then be automatically installed or upgraded. Each Up2Date script performs any or all of these steps: 1. Survey the Internet for the newest version of some piece of software. 2. Compare that version number with the one from sources held locally. 3. Download the newer source if it is not already on hand. 4. Call the Moonlit Rail Slackbuild script to create a package for it. 5. Install or Upgrade the package into the running system. PACKAGE LAYOUT In this package, there is the usual documentation directory /usr/doc/mr-up2date-v.v wherein you can find this README file and similar. The up2date scripts live in the directory /usr/local/lib/up2date/ Each script sources a library file, /usr/local/lib/up2date/LIBRARY, which does all of the "heavy lifting" involved in the steps enumerated above. Automating the process of calling each of the scripts is an executable called "up2date" that lives in /usr/local/sbin/. It calls all of the up2date scripts in parallel while performing source-version checks (step #1, above), and then sequentially for downloading the individual updated sources. Each script relies on a configuration file that indicates whether the script should run by default when the user invokes the /usr/local/sbin/up2date command. Lines in the file may also specify a version number prefix, in case only a certain version branch is desired. Have a look at /etc/up2date.conf.sample for details. INDIVIDUAL SCRIPTS Much like their building counterparts from the "Moonlit Rail Slackbuilds" package, each up2date script aims for compactness, relying on routines in the common LIBRARY file to do all the "heavy lifting". There is a short-form command that will literally perform all the steps necessary in just one line. For example, here's the entire logical contents of the "libpcap" script standard libpcap "http://www.tcpdump.org/release/" -- "$@" In order for any given script to perform useful work, it must be instructed by passing one or more keyword/options; if you do not, it will complain with a brief note about usage. The keywords are: -a Process all steps - 'cwdbi' in that order -b Build a slackware package from most recent source version -c Check the Internet for a new version -d Download new source from Internet Downloads version , or that obtained via '-c' if is not specified or it is '*' -f Force re-building an already up-to-date package -h Print this short help message -i Install the most recent (or newly built) package -Q Decrease verbosity of slackbuild (requires -b) -s Strip binaries during package building process -v Increase verbosity during network version checking / download -V Increase verbosity of slackbuild (requires -b) -w Wait for all '-c' to complete before executing '-d' ABOUT THE AUTHOR AND LICENSE The Moonlit Rail up2date scripts were written by and are Copyright © 2011 Kristofer T. Karas, all rights reserved. Please see the GNU General Public License in the file COPYING for licensing information. ------------------------------------------------------------------------------ Local Variables: mode: text fill-column: 78 coding: utf-8 End: