<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html>
    <head>
        <title>Slackware-current HOWTO</title>

        <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1"></meta>
        <meta name="author" content="Jeffrey Froman"></meta>
        <meta name="content-language" content="en-US"></meta>
        <meta name="copyright" content="2004 - 2005 by Jeffrey Froman"></meta>
        <meta name="description" content="This document de-mystifies Slackware-current, and explains how to maintain a running installation of Slackware-current."></meta>
        <meta name="keywords" content="complete slacker, slackware, slackware-current, running slackware current"></meta>
        <meta name="robots" content="all"></meta>
        <meta name="distribution" content="global"></meta>

        <link rel="stylesheet" type="text/css" href="/style/spartan.css"></link>
    </head>
    <body>
        <div class="logo">
            <a href="/live/tree/grow">
                Useless Tree
            </a>
        </div>
        <div class="nav">
            <a href="grow?node=The_Complete_Slacker">The Complete Slacker</a>
        </div>
        <h1>Slackware-current HOWTO</h1>
        
        <div class="core">
            
        <div style="text-align:center;" class="scribbled">
            This document explains how to maintain a running installation of Slackware-current.
        </div>
        
        <h2>
            Slackware-current Demystified
        </h2>
        The Slackware-current "tree" is the version of the <a href="http://slackware.com">Slackware Linux</a> Operating System that is
        being actively built, improved, fixed, and beautified even as you read this.
        New versions of bundled software are added almost as soon as they are
        available, new features are implemented, and deprecated software is removed.
        These changes sometimes occur as frequently as several times per day!
        
        <p> While the <a href="http://www.slackware.com/about/">Slack Masters</a>
        who bring us this fine distribution work hard to provide stable, usable
        enhancements, Slackware-current is the <em>testing ground</em> for these
        enhancements, and not <em>all</em> of them work immediately. Some are later
        retracted, some are fixed the next day or the next week. By running
        Slackware-current yourself, you are helping the Slackware maintainers to
        uncover the latest and greatest bugs. So before making the decision to ride
        the crest of Slackware development, keep in mind that you should
        <em>expect</em> to have to perform manual repairs occasionally.  </p>
    
        <p> Every so often, the Slackware-current tree is deemed sufficiently
        enhanced and stable to be "frozen" as the next release version. At the very
        moment Slackware-current is "frozen", a new Slackware release is born, and
        it is identical to the Slackware-current tree at that moment.  The new
        release version then remains in the frozen state (apart from security
        patches,) while Slackware-current development continues on its merry way to
        the <em>next</em> release, oblivious of the newly released stable
        version.</p>
                                     
        <p> Nobody knows exactly when the Slackware-current tree will next be
        revealed (as in a vision) as a new, stable release version -- perhaps not
        even Patrick Volkerding himself. So there isn't much point in trying to find
        out. For the slacker running Slackware-current, however, release version
        numbers and dates can be safely ignored as so much irrelevancy.  Running
        Slackware-current, you'll never need to perform a "distribution upgrade"
        again:  you'll already be running the newly released version before it is
        even released!</p>
        
        <h2>
            A Working Installation
        </h2>

        The first step to running Slackware-current is to upgrade your system
        from whatever other operating system or Slackware version you happen to
        be using now. If you already have Slackware-10.0 installed, you can
        upgrade to Slackware-current by following the directions in The Complete
        Slacker's <a href="grow?node=The_Complete_Slacker/Current_Upgrade_HOWTO">Current
            Upgrade Howto</a>. If you have Slackware-9.1 installed, then the
        best place to start is the <a href="grow?node=The_Complete_Slacker/Slackware-10_Upgrade_HOWTO">Slackware-10
            Upgrade Howto</a>.
    
        <p> If you don't yet have Slackware installed at all, or you have an older
        version than 9.1 installed, then a fresh installation of Slackware-current
        may be in order. Some slackware mirrors offer relatively up-to-date
        Slackware-current ISOs for download, and in general the method for
        installing Slackware-current is the same as that for installing any other
        version of Slackware. As these procedures are well-documented elsewhere, I
        won't linger over them here. The remainder of this document assumes that you
        have installed Slackware-current, and that you want to keep it that way
        (i.e., "current").  </p>
    
        <h2>
            All Hail the Changelog
        </h2>
        The primary method of tracking changes in Slackware-current is a regular,
        disciplined reading of the changelog. The changelog is a simple text file,
        wherein are recorded all of the updates, retractions, deprecations, and
        comments that you'll need to know about. Some people read it weekly, others
        daily. Some zealots probably read it more than once each day, just in case!
        The important thing is to develop a regular schedule for browsing the
        changelog -- a casual glance at the <a href="http://slackware.com/changelog/current.php?cpu=i386">Slackware-current
            ChangeLog web page</a> each morning while quaffing your favorite hot
        beverage, for example.  The changes are always dated, and the latest changes
        are always at the <em>top</em> of the page, for your convenience.
    
        <p> If this method is too rigorous for you, or the tight weft of your
        routine will not allow the addition of another quotidian chore, a brief
        shell script run by your cron daemon can notify you automatically, via
        email, of any recent changes. To set this up, first create a special
        directory for the changelogs (for the sake of fastidious neatness) and
        download a full copy of the most recent changelog into it, like so:</p>
    
<pre>
$ mkdir ~/changelog
$ cd ~/changelog
$ wget ftp://ftp.slackware.com/pub/slackware/slackware-current/ChangeLog.txt
</pre>

        <p>Next, create a shell script called <span class="code">changelog.sh</span> in the same directory, with the
        following lines:</p>
    
<pre>
#!/bin/bash
mv ChangeLog.txt ChangeLog.last
while [ 1 ]
    do wget ftp://ftp.slackware.com/pub/slackware/slackware-current/ChangeLog.txt
    if [ $? -eq 0 ]
        then break
    fi
done
diff ChangeLog.txt ChangeLog.last
</pre>
    
        <p>Grant your new script executable permissions:</p>
        
<pre>
$ chmod +x changelog.sh
</pre>

        <p>Finally, configure your crontab to run the script each night. To edit
        your crontab type the following command:</p>
    
<pre>
$ crontab -e
</pre>
    
        <p>This command drops you into an editor session (<span class="code">vi</span> by default) for your crontab file. To have your
        script run each day at 3:00am, add the following line to the file:</p>
    
<pre>
0 3 * * * changelog/changelog.sh
</pre>
    
        <p>Save your changes, quit from the editor session, and the automation
        is complete. Whenever new entries are added to the changelog, you will be
        sent an email containing those changes (and those changes only.) Hopefully
        this method is convenient enough for even the busiest of slackers!
	But for quicker and better results you can use <a href="http://kslackcheck.deprecated.it">Kslackcheck utility</a> ;-)</p>
    
        <h2>
            Mirror, Mirror
        </h2>
        Keeping apprised of the frequent changes in the Slackware-current tree is most of
        the work, but there is still the matter of actually upgrading your system.
        Generally, one of three basic actions will need to be taken for a given entry in
        the changelog: a particular package will have to be upgraded, added anew, or
        removed. Of course, to add or upgrade a package, the new package must first be
        obtained. You could download each new package that you need individually, from
        your favorite <a href="http://slackware.com/getslack">Slackware mirror</a>,
        using your favorite FTP client.  This method is simple but can get rather
        tedious when there are many packages to upgrade.
        
        <p> If you have a couple of gigabytes of space on your hard drive, a more
        graceful method of acquiring the latest packages is by maintaining a local
        mirror, or copy, of the entire Slackware-current tree, right on your own
        computer. Keeping your own mirror is advantageous in all kinds of ways: </p>
        
        <ul>    
            <li><strong>Automatic updates</strong>. Your mirror can be easily and automatically
            synchronized with another mirror, so the new packages are immediately
            available for you, on your own computer, whenever you need them. </li>
            
            <li><strong>Total Control</strong>. A basic mirror still permits you complete
            control over your computer.  New packages are automatically made
            <em>available</em>, but are never installed or upgraded without your
            approval.</li>
        
            <li><strong>Spread the Slack</strong>. Keeping the entire package tree locally
            enables you to create Slackware installation CDs for your friends, or to
            open your own publicly accessible mirror, from which still other slackers
            can synchronize their systems.</li>
        
        </ul>
        
        <p> Documentation on how to set up your own mirror already exists in plentitude,
        so I won't repeat it here. If you are interested in this method, check out the
        manual page for the "rsync" command. There are many <a href="http://alphageek.dyndns.org/linux/slackware-mirrors.shtml"> Slackware
            mirrors that support rsync</a> from which you can synchronize your own
        mirror.</p>
        
        <h2>
            The Update Commands
        </h2>
        At this point you've got the latest changelog entries in your mailbox, and
        all the newest packages waiting for installation. Slackware comes with a few
        simple command-line tools for performing the system upgrades: <span class="code"> installpkg</span>, <span class="code">removepkg</span>,
        and <span class="code">upgradepkg</span>. Here are a few real-life
        examples from the official ChangeLog, together with the command-line action
        taken for them. All of these commands are run from the slackware package
        directory (called "slackware".)
    
        <p style="font-style:italic;">
        ap/vim-6.2.532-i486-1.tgz:  Upgraded to vim-6.2.532.</p>
    
<pre>
# upgradepkg ap/vim-6.2.532-i486-1.tgz
</pre>
    
        <p style="font-style:italic;">
            ap/mdadm-1.5.0-i486-1.tgz:  Added mdadm-1.5.0.</p>
    
<pre>
# installpkg ap/mdadm-1.5.0-i486-1.tgz
</pre>
        
        <p style="font-style:italic;">
        ap/oggutils-1.0-i386-3.tgz:  Removed.  This is replaced by separate libao, 
        libogg, libvorbis, and vorbis-tools packages.</p>
    
<pre>
# removepkg oggutils
</pre>
    
        <p style="font-style:italic;">
        n/bind-9.2.3-i486-1.tgz:  Upgraded to bind-9.2.3.  Be sure to remove any
        old bind-9 package, because for some crazy reason they've changed the
        library version of libisccfg from 1.0.0 to 0.0.7.</p>
    
<pre>
# removepkg bind
# installpkg n/bind-9.2.3-i486-1.tgz
</pre>

        As a final step, check your system for newly installed configuration files,
        and merge them with your old ones.  The newly installed configuration files will
        have the file extention "<span class="code">.new</span>" Most, if not all, of
        the new configuration files will be located in your <span class="code">/etc</span> directory. You can generate a list of these files
        like so:
    
<pre>
# find /etc -name \*.new
</pre>
    
        Fold any changes you made to the previous versions of the configuration
        files into the new files, as necessary. Then rename the new configuration file
        to the name of the old configuration file (the same name, without the <span class="code">.new</span> extention, conveniently.)
    
        <p style="text-align:center;" class="scribbled"> There you have the basics (and perhaps a tad more) of
        running Slackware-current.  Enjoy your ride on the cutting edge of GNU/Linux
        development!</p>
    
        </div>
        <div class="nav" style="text-align:center;">
            <a href="grow?node=The_Complete_Slacker">The Complete Slacker</a>
        </div>
        <div class="foot">
            &#169; 2004 - 2005 by Jeffrey Froman
        </div>
    </body>
</html>
