SLACKUPGRADE

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
REPLACEMENT MAP
FILES
SEE ALSO
BUGS
COPYRIGHT

NAME

slackwupgrade - do a full upgrade of a Slackware installation

SYNOPSIS

slackupgrade [-anqvy] [-k FILE] [-p PACKAGE] [-s SERIES] [URL]

DESCRIPTION

Upgrades the Slackware installation to a new release. The URL argument supplies the URL of the Slackware distribution or the directory on the local filesystem where it can be found. If not given, the program will use the nearest next version distribution from https://mirrors.slackware.com.

When started, the program first verifies that it runs with root privileges on a Slackware installation and determines the current release version number. Then it verifies the distribution URL: it must contain the files CHECKSUMS.md5, ANNOUNCE.VERSION and the Slackware package series directories.

The file CHECKSUMS.md5 and its GPG signature are downloaded first. Then, the program verifies that the signature is correct. For this to succeed, you must have the Slackware Linux Project public key in your keyring. If you don’t, run

curl -o - https://www.slackware.com/gpg-key | gpg --import

When this initial check is passed, the program constructs two lists of packages: a list of currently installed packages and a list of packages available in the distribution. When constructing the list of available packages, known differences between Slackware releases are taken into account. For example, consider upgrade from version 14.1 to 14.2. It is known that the portmap package from 14.1 is replaced with the rpcbind in version 14.2. Consequently, if the program sees that portmap is installed on the system, it will include rpcbind to the list of installation candidates. Information about package differences in various versions is kept in replacement map files. See the section REPLACEMENT MAP, for a discussion of these files.

The difference between these two lists, is the set of installed packages that have no equivalent in the available package list. Those are orphaned packages, which were either removed from the Slackware distribution, or were installed from third-party sources. It is unpredictable whether or not these will work on the newly upgraded system, therefore they will be removed after a successful upgrade. Before proceeding, the program will display this list on the screen and save it in file /var/log/slackupgrade-OLD-NEW.removed for your consideration (here, OLD and NEW stand for the current and new Slackware version numbers, correspondingly). After the upgrade, you can re-install them, if necessary.

After this step, the program will print the current Slackware version and the version you are going to upgrade to, and will ask you to confirm that you really want to upgrade. This is the right moment to quit if you decide to modify program invocation in order to handle orphaned packages.

If you do, type no. You have two options. First, if there are any orphaned packages that you want to keep in place, create a keep-list file. This file should contain names of those packages, each name on a separate line. When you restart the program use the -k FILE option to instruct it to use this file.

Secondly, if you are upgrading to the version for which there is no replacement map, there can be replacement packages for some of the orphaned ones. You can create a replacement map and save it to the /etc/slackupgrade directory (see the section REPLACEMENT MAP for details). If you do, please drop me a note so that your changes become available for other users (see the BUGS section, for contact information). You can also use the -p command line option to provide the names of replacement packages from the command line.

By default, the program will upgrade only the packages actually installed on your system. You can request to install additional series from the distribution with the -s option. E.g., it is often a good idea to install all packages from series l, like that:

slackupgrade -s l

Otherwise, you can request to install all missing packages from all series, excepting kde*, by running the command with the -a option.

At the end of the run, the program prints additional instructions and leaves the detailed log in file /var/log/slackupgrade-OLD-NEW.log.

Here, OLD and NEW stand for the old and new Slackware release versions, correspondingly.

If any configuration files were created during the upgrade that conflict with the existing files, they will be stored alongside the original files, with the .new extension. The list of these files will be stored in file /var/log/slackupgrade-OLD-NEW.new.

OPTIONS

-a

Install all series except kde*.

-h

Display a short help summary and exit.

-k FILE

After successful upgrade, slackupgrade will remove previously installed packages that are not available in the new distribution. This option allows you to supply a list of packages that should not be removed. Each line in FILE should list exactly one package name, without version and architecture information. Empty lines and comments (#) are ignored.

To obtain initial list of packages that will be removed, run the program with the -n option. At the end of the run, the list will be stored in file /var/log/slackupgrade-OLD-NEW.dry_run.removed. At a pinch (not really recommended), you can move it elsewhere and use as argument to that option. This way all packages will be preserved.

-n

Dry-run mode: do nothing, print what would have been done. In spite of the name, the list of packages for removal will still be created.

In this mode, log files are created with the additional .dry_run suffix (see the section FILES).

-p PACKAGE

Install additional package.

-q

Quiet mode: suppress all messages, except error diagnostics.

-s SERIES

Additionally install all packages from SERIES.

You can use this option together with -a to install entire Slackware system, like that:

slackupgrade -a -s kde -s kdei

-v

Verbosely list each package being upgraded or removed.

-y

Assume "yes" to all queries.

REPLACEMENT MAP

Replacement map files contain names of packages that have been replaced with another packages in the new release. They are stored in the /etc/slackupgrade directory. Each replacement map is named OLD-NEW.repl, where OLD and NEW are two subsequent versions of Slackware. For example, the file /etc/slackupgrade/14.1-14.2.repl contains changes in package names between versions 14.1 and 14.2.

This version of slackupgrade is shipped with two replacement maps, for upgrades between 14.0 and 14.1, and between 14.1 and 14.2.

A replacement map is a plaintext file with each package being described on a separate line. Lines consist of two or more columns separated with any amount of whitespace. Column one contains the name of the package in the version OLD of Slackware. Column two contains the name of the corresponding package in Slackware version NEW. If the package was spli into several packages, additional packages can be listed on the same line.

Excessively long lines can be split over several physical lines by using the traditional UNIX approach: prefix and each line that must be joined with the next one with a backslash immediately followed by a newline character.

Comments are introduced with the hash sign (#) and extend to the nearest newline character. Empty lines and comments are ignored.

FILES

/etc/slackupgrade/OLD-NEW.repl

Replacement map for upgrades from version OLD to NEW.

/var/log/slackupgrade-OLD-NEW.log

Detailed log of operations performed during the upgrade from version OLD to NEW.

/var/log/slackupgrade-OLD-NEW.new

List of the new incoming config files on your system with the .new extension. You may need to merge them with your actual files, or move them over, or simply remove them. In any case, it is good idea to carefully consider each of them.

/var/log/slackupgrade-OLD-NEW.removed

The list of packages that were removed from the system. Examine it. You may need to re-install some or all of them from third-party servers or from slackbuilds.

When running in dry run mode (see the -n option), names of the three log files above contain an additional .dry_run suffix:
/var/log/slackupgrade-
OLD-NEW.dry_run.log
/var/log/slackupgrade-
OLD-NEW.dry_run.new
/var/log/slackupgrade-
OLD-NEW.dry_run.removed

Backups
At the start of each run, existing log files are backed up. The name of each backup is created by adding a tilde to the end of the log file name. E.g. slackupgrade-14.1-14.2.log is renamed to slackupgrade-14.1-14.2.log~. Existing backup copies are renamed using the following pattern: X~ becomes X~1, X~1 becomes X~2 and so on. At most five backup copies are kept (from X~ up to X~4).

SEE ALSO

The UPGRADE.TXT document, outlining the procedure as a whole: <https://mirrors.nix.org.ua/linux/slackware/slackware-14.1/UPGRADE.TXT>.

upgradepkg(8).

BUGS

Only main Slackware packages are considered. The patches subdirectory is not used.

Report bugs to <gray@gnu.org>.

COPYRIGHT

Copyright © 2019 Sergey Poznyakoff
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


Manpage server at man.gnu.org.ua.

Powered by mansrv 1.1