Upgrading to Slackware 14
Sincerely
Mustafa
1 Reply
Most people use slackpkg to do the upgrade and that is certainly the easiest way. To do so yourself read the system upgrade page on SlackDocs
Alternatively if you want you can fetch the relevant updated packages and then follow the official instructions in UPGRADE.TXT. This is slightly more complex as that guide assumes you want to do a full install. Whilst this is often a good idea, on a VPS with limited space it will leave you with little to work with.
Here is one possible method to work out which packages are actually needed when upgrading a minimal install.
Firstly switch to an empty directory and fetch the following text files:
wget http://mirrors.slackware.com/slackware/slackware-14.0/CHECKSUMS.md5 \
http://mirrors.slackware.com/slackware/slackware-14.0/ChangeLog.txt \
http://mirrors.slackware.com/slackware/slackware-14.0/UPGRADE.TXT \
http://mirrors.slackware.com/slackware/slackware-14.0/CHANGES_AND_HINTS.TXT \
http://mirrors.slackware.com/slackware/slackware-14.0/PACKAGES.TXT
Next make a list of packages that are currently installed in your 13.37 setup:
( cd /var/log/packages/; /bin/ls ) > installed-packages.txt
Then use that list to make a grep filter so that you can find the equivalent Slackware 14.0 packages:
sed -nr 's#^([[:graph:]]+)(-[[:alnum:]\.\+_]+){3}$#/\1(-[[:alnum:]\\.\\+_]+){3}\\.t.z$#p' installed-packages.txt > installed-packages.grep
Now use the filter against CHECKSUMS.md5 to find the exact names of the 14.0 packages:
grep -Ef installed-packages.grep CHECKSUMS.md5 | grep -v "/extra/\|/pasture/\|/testing/" | sed -r "s#[[:alnum:]]{32} \.##" > 14.0-packages.txt
Remember that between Slackware releases some packages are not upgraded and hence are exactly the same as the version found in 13.37. We should remove these and create a new list of only the updated packages, so that when we download the packages later on we don't waste time grabbing stuff that is already installed:
grep -Fvf installed-packages.txt 14.0-packages.txt > updated-packages.txt
With each Slackware release there are always some new, additional packages. We may want some of these because they are dependencies of the updated packages or simply because they are useful in their own right. To get the raw list of new packages do the following:
sed -nr 's#(.*([[:graph:]]+)(-[[:alnum:]\.\+_]+){3}\.t.z): Added\.$#/slackware/\1#p' ChangeLog.txt | grep -v "/extra/\|/pasture/\|/testing/" | sort -u > added-packages.txt
Now manually edit added-packages.txt in your text editor of choice and remove any of the newly introduced packages that you do not require. Obvious candidates to removal from the list on a minimal server install would be anything from the kde, kdei, x, xap and xfce series. To help you decide on the rest, use the descriptions in PACKAGES.TXT along with the occasional comments found in ChangeLog.txt. Don't be surprised if you strip the file back to just a few of the new packages, since these VPS installs tend to be fairly spartan (personally I left only kmod, icu4c, libffi, nettle and p11-kit because they seemed to be needed, plus htop and iftop because they looked useful).
Once you have finished removing undeeded packages from added-packages.txt combine it with updated-packages.txt:
cat updated-packages.txt added-packages.txt > packages-to-install.txt
Then download all the new and updated packages and their corresponding signature files:
for f in $(cat packages-to-install.txt)
do
wget -P .$(dirname $f) http://mirrors.slackware.com/slackware/slackware-14.0$f http://mirrors.slackware.com/slackware/slackware-14.0$f.asc
done
Before you install any of these you will probably want to check the signatures to verify that the packages have not been tampered with (and also to ensure they downloaded completely). To do so you will need to check them against the the Slackware gpg key. If you have purchased an official Slackware CD or DVD you can get the file from there and copy it over to your VPS via scp or sftp. If not you will have to fetch it from one of the mirrors which is hardly ideal. If you have to do this I would at least take it from one that serves it via https, e.g.:
wget https://mirrors1.kernel.org/slackware/slackware-14.0/GPG-KEY
You may also want to fetch it from several mirrors
gpg --import GPG-KEY
Now you can check the signatures:
for sig in $(find . -name "*.asc"); do
if gpg --verify $sig 2>/dev/null; then
echo ${sig%.*}: OK
else
echo ${sig%.*}: FAILED
break
fi
done
If all the files verified OK, you should have everything you need to perform the upgrade. Now you can follow the official steps in UPGRADE.TXT using the packages you downloaded. After you install the packages remember to spend some time reviewing the *.new files by diffing with the old versions. You can move the *.new files on top of their old counterparts if you have incorporated the changes and tweaks that Linode (and perhaps you) have made. If you are unsure, I'd suggest you keep the old versions.
Once you have upgraded to Slackware 14.0, install any security updates as follows, then reboot.
upgradepkg ./patches/packages/*.t?z