Table of Contents
Upgrading to TLD Linux 2018.01
Note: only upgrade from TLD Linux 2016.01 is supported. If you are running TLD Linux 2015.01 please use this howto. If you are running TLD Linux 2013.01 or earlier you will need to reinstall from scratch.
Getting started
Please backup at least entire system configuration before proceeding! If possible, backup entire host or take snapshot of its current state if it is a virtual machine.
First of all update your poldek indexes:
poldek --upa
Now get rid of all *.rpmnew files from /etc to be sure you will have newest default configurations for all packages for which old one cannot be adjusted or updated.
You should remove all the packages that are no longer part of TLD or your upgrade may be blocked by unresolved package dependencies. Following script will create list of these packages for you:
#!/bin/sh rpm -qa --qf="%{name}\n" > installed_packages.txt poldek --cmd "ls --qf=%{name}\n" > dist_packages.txt sed -i -e 's/\+/\\\+/g;' installed_packages.txt rm -f removed_packages.txt for pkg in $(cat installed_packages.txt); do if ! grep -q -E "^"$pkg"$" dist_packages.txt; then echo "$pkg" >> removed_packages.txt fi done rm -f installed_packages.txt dist_packages.txt
Carefully inspect contents of file removed_packages.txt created by above script to see what packages must be removed. Warning! If your system has default PHP version installed all PHP packages will be removed due to package name changes. Be sure to backup your PHP configuration before continuing and check upgrade notes for PHP.
When ready remove packages with:
rpm -ev --nodeps $(cat removed_packages.txt)
Upgrading
Warning! Before performing upgrade please read package notes, especially when you're running MySQL and/or PostgreSQL on your server. You may need to take additional actions to avoid data loss.
We can't upgrade everything at all. Due to rpm database version change first we must upgrade rpm and poldek including all dependencies:
poldek -v -U $(rpm -qa --qf="%{name}\n" rpm* poldek*)
If there were no errors we are ready to rebuild rpm database to upgrade it to db 4.7:
rm -f /var/lib/rpm/__db* rpm --rebuilddb
Finally we can perform system upgrade:
poldek -v --nohold --upgrade-dist
If you'll run into some unresolved dependencies you may try following things:
1. Remove problematic package. If it hauls half of your system use:
rpm -e --nodeps pakcage
2. Do forced upgrade of problematic package via poldek command line:
poldek --cmd "upgrade --force package"
Add –nodeps if necessary.
Finishing
When your upgrade-dist will finish you must check/modify/recreate your system configuration. It is strongly recommended to go through all *.rpmnew files in your /etc and modify them to fit your needs. Using old configuration files may cause problems for some packages or they may not run at all.
After double or even triple checking everything you are ready to reboot
Notes for some packages
Dovecot
Dovecot version has changed from 2.2 to 2.3. Please refer to official upgrade instructions:
Grub
TLD 2018.01 contains final stable version of Grub bootloader. It is good idea to reinstall Grub on your system to upgrade from beta/rc version to stable one.
Kernel
Starting with version 2018.01 TLD provides only selected LTS kernels. Usually the one with longest planned support (4.4 at time of release) and newest one (4.14 at time of release). Be sure to check which kernel version you were using and if it wasn't 4.4 vanilla you must manually install one of currently supported kernel to get updates.
Freeradius
After upgrade permissions to /etc/raddb become broken. To fix them perform forced upgrade of freeradius-server package. Before proceeding backup your /etc/raddb (just in case, it shouldn't be modified).
poldek --cmd "upgrade --force freeradius-server"
MySQL
TLD 2018.01 comes with MySQL 5.7 (Percona Server). In order to properly upgrade without loosing your data you must do full dump/restore. Please backup all your databases before upgrading. You can dump everything to single file:
mysqldump -u mysql -p -c --hex-blob --single-transaction --all-databases > sql_full_backup.sql
or each database separately:
mysqldump -u mysql -p -c --hex-blob --single-transaction databaseX > sql_databaseX_backup.sql
Now please stop mysql service:
service mysql stop
then move out old MySQL data:
mv /var/lib/mysql /var/lib/mysql.bak
and perform upgrade. When finished initialize clean MySQL 5.7 cluster:
service mysql init
And restore everything from your backup file(s):
mysql -u mysql -p < sql_full_backup.sql
Don't forget to edit /var/lib/mysql/mysqld.conf to fit your needs.
Note: MySQL in TLD now uses “root” login for superuser instead of previously used “mysql”.
Nut
After upgrade permissions to /var/lib/ups become broken. To fix them perform forced upgrade of all nut packages installed in your system. Before proceeding backup your /etc/ups (just in case, it shouldn't be modified). For example:
poldek --cmd "upgrade --force nut nut-common nut-client nut-cgi"
PHP
All PHP packages in TLD are now fully versioned. Due to this change there is no default PHP version and upgrade procedure will remove PHP from your system. When upgrade is finished you must manually install PHP version of your choice. Following versions are supported: 5.6, 7.0, 7.1 and 7.2.
Default PHP version in TLD 2016.01 was 7.0. If you are moving to PHP 7.1 or 7.2 be sure to update your PHP applications and/or web pages. Check links below for more details about possible incompatibility issues:
PHP 7.1 backward incompatible changes
PHP 7.2 backward incompatible changes
PostgreSQL
PostgreSQL database version has changed from 9.5 to 10.3. As usual when major version changes it is strongly recommended to do upgrade using dump/restore method. Before upgrade dump all contents of your databases and copy them to some safe location. You can dump everything to single sql file with this command run locally on your server:
pg_dumpall -U postgres -W > sql_full_backup.sql
or dump just globals with:
pg_dumpall -g -U postgres -W > sql_globals.sql
and then each database separately with:
pg_dump -b -U postgres -W databaseX > sql_databaseX.sql
Now please stop potsgresql service:
service postgresql stop
move away your old database data:
mv /var/lib/pgsql /var/lib/pgsql.bak
and perform upgrade. When finished initialize clean PostgreSQL 10.3 database structure:
service postgresql init
Follow on screen instructions to set database passwords. Later go to /var/lib/pgsql/postgresql.conf and edit database configuration to fit your needs. Restore your database contents with something like this (if you dumped everything to single file):
psql -U postgres -W < sql_full_backup.sql 1>sql_restore_log.txt 2>&1
or with something like this (if you dumped globals and each database separately):
psql -U postgres -W < sql_globals.sql 1>sql_globals_restore_log.txt 2>&1 psql -U postgres -W < sql_databaseX.sql 1>sql_databaseX_restore_log.txt 2>&1 psql -U postgres -W < sql_databaseY.sql 1>sql_databaseY_restore_log.txt 2>&1 ...
When finished check sql*_restore_log.txt files for any errors, warnings or other abnormal things. Some structures or functions may have failed to restore due to changes in PostgreSQL made between version 9.5 and 10.3. If you'll hit such problem your only solution is to manually recreate failed structures/functions later or make modification to SQL statements directly in dump files and retry restore from the beginning.
Samba
Samba in TLD 2018.01 was upgraded from 4.2 to 4.8. Due to changes between these releases it may be required to update your configuration. While simple configs works ok after upgrade more complicated ones may fail to run. Be sure to check if everything works.
Syslog-ng
After upgrade syslog-ng will complain about configuration version. All you need to do to make warnings go away is to edit version number in first line of /etc/syslog-ng/syslog-ng.conf. Please change:
@version: 3.6
to:
@version: 3.15