Slackware 15.0 to 16.0 Upgrade HOWTO This document explains how to upgrade from Slackware 15.0 to Slackware 16.0. ---------------------------------------------------------------------------- For details of important changes from Slackware 15.0 to 16.0, see the file 'CHANGES_AND_HINTS.TXT'. Thanks to Robby Workman for help with this. Before you begin, I would strongly recommend making a backup of your system, or, if not the entire system, at least the /etc directory. You might find that you need to refer to a few things after the upgrade process is complete. Back it up, or take your chances. OK, now that everything is safely backed up, let's proceed. To upgrade, you will need to be in the Slackware installation tree. Luckily, that's where the file you are reading is found. If you also see the ChangeLog.txt file in this directory, and either a slackware or slackware64 directory with the packages in its subdirectories, then you are in the right place. In that case, let's start. 0. Put your machine in single-user mode: telinit 1 Note that this is _not_ strictly required, and there have been reports of success remotely upgrading machines that are still in multiuser mode. However, more things can go wrong in multiuser, so especially if you're considering a remote upgrade in multiuser mode, you might want to clone the machine locally so that you can do a test run to uncover any problem areas and come up with workarounds for them. 1. Remove obsolete packages. Here's a script to do it. Run it in this directory. #!/bin/sh echo "Removing packages that are no longer part of Slackware:" for package in $(grep -v -e "^extra/" -e "^pasture/" -e "^testing/" \ ChangeLog.txt | grep "txz: Removed.$" | cut -f 1 -d :) ; do # If the package is installed, then we will remove it. if [ -r /var/lib/pkgtools/packages/$(basename ${package} .txz) ]; then removepkg --terse $(basename $package .txz) fi done 2. Upgrade your glibc shared libraries. This is important, or things might go haywire during the next part of the upgrade: upgradepkg --install-new --terse slackware*/a/aaa_glibc-solibs-*.txz 3. Upgrade your package utilities and related tools: upgradepkg --terse slackware*/a/pkgtools-*.txz upgradepkg --terse slackware*/a/tar-*.txz upgradepkg --terse slackware*/a/xz-*.txz upgradepkg --terse slackware*/a/findutils-*.txz upgradepkg --terse slackware*/a/mkinitrd-*.txz 4. Upgrade everything else (and install new packages): upgradepkg --install-new --terse slackware*/*/*.txz 5. Fix your config files. Some of the config files in /etc are going to need your attention. You'll find the new incoming config files on your system with the ".new" extension. You may need to fill these in with information from your old config files and then move them over. Feel brave? You can use this little script to install most of the .new config files in /etc. If you've made any local changes you'll need to add them to the newly installed files. Your old config files will be copied to *.bak. Anyway, it might be an easier starting point. Here it is: #!/bin/sh cd /etc find . -name "*.new" | while read configfile ; do if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" \ -a ! "$configfile" = "./rc.d/rc.local.new" \ -a ! "$configfile" = "./group.new" \ -a ! "$configfile" = "./passwd.new" \ -a ! "$configfile" = "./shadow.new" ]; then cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \ $(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null mv --verbose $configfile $(echo $configfile | rev | cut -f 2- -d . | rev) fi done You might also wish to move this config file over: /usr/share/vim/vimrc.new 6. IMPORTANT! *Before* attempting to reboot your system, you will need to make sure that the bootloader has been updated for the new kernel! First, be sure your initrd is up to date (if you use one). You can build a new initrd automatically by running the geninitrd script: geninitrd If you use LILO, make sure the paths in /etc/lilo.conf point to a valid kernel and then type 'lilo' to reinstall LILO. If you use a USB memory stick to boot, copy the new kernel to it in place of the old one. If you boot with GRUB, geninitrd already upgraded your grub.cfg, but you should make sure that the installed GRUB bootloader is the latest version. If you're running under UEFI, just do this: grub-install If you use GRUB with a legacy BIOS, do this instead (replace "/dev/sda with your boot device if it's something else): grub-install --target=i386-pc /dev/sda If you are using elilo on a machine with UEFI BIOS, run the eliloconfig command to install the new kernel and initrd to the EFI System Partition. 7. Return to multi-user mode: telinit 3 8. Reboot to start using the new kernel. At this point you should be running Slackware 16.0. :-) I wish everyone good luck with this! --- Patrick Volkerding volkerdi@slackware.com