Upgrading to Slackware 14

Is there anyone experienced in upgrading to Slackware 14? I will be very grateful if anyone helps me about this situation.

Sincerely

Mustafa

1 Reply

I might be a bit late but I'll answer nonetheless.

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. You can ignore most of the kernel stuff because Linode provides their own kernel by default. When you come to the point where you issue the 'slackpkg install-new' command you will need to consider which of the new packages to add. To help you decide which are appropriate for your setup, use the descriptions in PACKAGES.TXT along with the occasional comments found in ChangeLog.txt.

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 and diff them just to be sure they are all the same. Once you have satisfied yourself that you have the real key, import it as follows:

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

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct