I am happy to announce the release of a new upgrade script. Before I get into the nitty gritty, I'd like to thank Jake, Nick, Erik, and Devendra for their work on the previous upgrade script. Without it, I couldn't have written the new one. Additional thanks to Jake for help with testing, and Nick for helping with implementation.

The scripts are available (for the time being) at http://qmt.shubes.homeip.net. I expect that Nick will make them available on the toaster website sometime soon.

There are two scripts, and you'll need both of them. The main script is qmt-newmodel.sh, and qmt-build-rpms.sh is a sub-script (so to speak). Simply download them to any directory you like (they need to be in the same location though). To run:
# sh qmt-newmodel.sh
-or-
# ./qmt-newmodel.sh
from the directory where you put them.

Notice, the scripts have undergone substantial testing, but should still be considered beta. Please report back to the list any problems and/or successes.

There are two variables set at the beginning of qmt-newmodel.sh that you may care to change: .) UPGRADE_DIR=/usr/src/qmt is a general working directory. Subdirectories are SRPMS, RPMS, backup, old-rpms and log (pretty much self explainatory). .) SANDROOT=/opt/qmt-sandbox is a directory where the sandbox is built. More on the sandbox in a moment.
All directories are created automatically by the script.

Here's an overview of what the scripts do (in sequence):
.) Determine the DISTRO and ARCH variables
The script interrogates /etc/*-release to see which distro your machine is, and sets variables accordingly. If your distro isn't supported, the script will not continue.
.) Downloads current package list from www.qmailtoaster.com
.) If bind is installed on the machine, djbdns is removed from the list
.) Checks to see which packages aren't installed, and lets you select which ones to process. Normally, you'll want to select all that are available.
.) Downloads source packages
This essentially does what the former current-download-script did.
.) Builds the sandbox
.) chroot to the sandbox and invoke qmt-build-rpms.sh, which:
   .) builds and installs each package in the sandbox
.) copies the binary rpms out from the sandbox
.) backs up control and configuration files
.) stops qmail
.) removes any packages that need to be removed
.) upgrades the packages with a single rpm -Uvh command
.) restores control and configuration files
.) handles mrtg file changes
.) starts qmail
.) restarts spamassassin
.) cleans up sandbox, source rpms, and binary rpms
That's it in a nutshell.

Some aspects of the script:
.) all questions asked (except the first one) have a default value. If you're not sure what to do, take the default. .) the script has one command line option: -b which will run the script without prompting. This is convenient if you don't want to babysit it, but I wouldn't use it until you're comfortable with the process. You might do something like:
# ./qmt-newmodel.sh -b >newmodel.log 2>&1 &
to run it in background, probably overnight.
.) the compile output (and some other stuff) is sent to a log file instead of the screen. This can be useful for problem determination. .) the script can be interrupted (preferrably by using quit when asked) and rerun at a later time, and all previous work is saved. That means you can run it any time to download and build the rpms (the most time consuming), then run it again when you're ready to actually do the update. During testing, the upgrade portion for all packages took less than 10 minutes (most of which was generating domain keys) on a P-II/266. .) the script can be used to do a new installation too. It replaces steps 6 and 7 in the install guide.

Now for a few words about the 'sandbox'.

The sandbox is essentially what is more commonly known as a chroot jail. I like the term sandbox better than jail, because I'm not fond of jail (who is?), and the purpose of this sandbox is to provide a safe place to play (which a sandbox is for the most part).

The sandbox is basically a copy of a (very) large portion of your system. Hence, it occupies a good deal of disk space, probably 2.4G or better. It also takes quite some time (20 cpu minutes or so on my puny P-II/266) to build, but only a fraction of the time it takes to compile. A good trade IMO, given the savings in down time.

When the sandbox is built, you will be asked if you'd like a copied or linked sandbox. A copied sandbox is a normal copy of files on your system. A linked sandbox will attempt to use hard links instead of copies for the majority of the files, drastically reducing disk space required (down to as little as 100M). However, this savings can only be achieved when the sandbox is contained on the same partition as the root (/) filesystem, as hard links cannot cross partition boundaries. The script will automatically copy files which are on separate partitions when trying to build a linked sandbox. Any partition scheme should work, although a linked sandbox provides the greatest savings when the system is largely on a single partition.

As a final note, I would not use the linked option on a production server until it has been more thoroughly tested. However, a copied sandbox should be safe.

That's about it for now. I welcome all suggestions, and should be readily available in the near future to assist with any problems you may encounter.

Updated documentation on the wiki site is forthcoming.

NJoy!

--
-Eric 'shubes'

---------------------------------------------------------------------
    QmailToaster hosted by: VR Hosted <http://www.vr.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to