Artikelkategori: Uppgraderingar
Skriven av minime 2020-02-29 22:56
url: 
Redigerad av: minime  2022-02-14 10:59:16

Uppdatera OpenSSL, Mariadb och PHP i Slackware 14.2

Slackware 14.2 börjar ha lite väl föråldrade paket och då Slackware current inte är färdigt än. Kanske man börjar överväga att byta ut Slackware mot en annan distribution som är bättre uppdaterad och tänker att det inte finns någon annan lösning? PHP 5.6.x är EOL sedan 31 December 2018, mariadb 10.0.x är EOL sedan Mars 2019 och kanske du har givit upp helt och hållet? Därför har vi på SlackwareLinux.se skrivit denna artikeln som beskriver hur du går till väga för att bygga nya fräscha paket till din väl fungerande och pålitliga Slackware server.

OBS!
I och med att Slackware 15.0 släpptes den 3:e Februari 2022 så kommer denna artikel inte att uppdateras längre.
Vi låter den ligga kvar, men rekommenderar er starkt att uppdatera Systemet till Slackware 15.0 då Slackware 14.2 använder en kernel som lika så blev EOL den 3:e Februari. 

PHP 7.x och 8.x seriernas SlackBuild nedan saknar ett tillbehör (extension), exchant, p.g.a att 14.2 har en för gammal version av Glib.
Vi har helt enkelt skapat dessa SlackBuilds utan detta tillbehör. Har du behov för exchant, så kan vi i nuläget inte hjälpa dig med detta.

För att få allt nödvändigt "up to date", laddar du först ner dessa sju buildscripts som vi färdigställt för att underlätta det hela lite.
Rekommenderar att spara dessa buildscripten i /usr/src.

openssl-1.1.1m
openssl10-1.0.2u
jansson-2.14
nghttp2-1.46.0
httpd-2.4.52
mariadb-10.3.32

För php-7.2 (Notera att php 7.2 nu är EOL från och med 1:a December 2020)
alpine-2.25 
php-7.2.34

Nedan är under konstruktion!
För php-7.4 (OBS har ej färdigställt hela 7.4 guiden helt och enbart lyckats bygga detta för x64 än så länge)
alpine-2.25
tidy-html5-5.8.0
argon2-20190702
libedit-20210910_3.1
libsodium-1.0.18
re2c-2.2
oniguruma-6.9.7.1
pcre2-10.39
php-7.4.27


OpenSSL10

Eftersom openssl 1.0.2 snart är EOL och openssl utvecklarna rekommenderar att uppdatera denna versionen så snart som möjligt. Så förbereder vi detta då vi ändå håller på för att hålla systemet så uppdaterat som möjligt, vi behåller dock samtidigt openssl 1.0.2u i systemet parallellt med 1.1.1m versionen p.g.a. att vissa program fortfarande behöver denna äldre versionen tills vidare.

Detta gör vi genom att först kompilera openssl10.

Har du inte redan laddat ner scripten så kan kan vi göra det med hjälp av wget.
Se dock till att du befinner dig i "/usr/src" mappen genom att skriva:

# cd /usr/src

Nu laddar vi ner openssl10 scriptet med hjälp av wget:

# wget https://www.slackwarelinux.se/slackbuilds/openssl10.tar.xz

Nu packar vi upp openssl10 buildscriptet, så skriv följande:

# tar -xJf openssl10.tar.xz

Scriptet kommer att packas upp i builds mappen, för att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/openssl10/openssl10.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp"
Eftersom att vi kommer att uppdaterade slackware 14.2 openssl till 1.1.1m så installerar vi 1.0.2u parallellt med den nya versionen av openssl genom att skriva:

# installpkg /tmp/openssl10-1.0.2u-*-1.txz

Och lika så med openssl10-solibs (paketet skapades ifrån openssl10)

# installpkg /tmp/openssl10-solibs-1.0.2u-*-1.txz

OpenSSL

Nu ladda vi ner openssl scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/openssl.tar.xz

Packa upp openssl med hjälp av tar.

# tar -xJf openssl.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare, för att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/openssl/openssl.Slackbuild

När paketet byggt färdigt så sparas det i /tmp mappen.
Sedan uppdaterar vi slackware 14.2´s egna openssl och openssl-solibs från 1.0.2u till 1.1.1m genom att skriva:

# upgradepkg /tmp/openssl-1.1.1m-*-1.txz

Och lika så med openssl-solibs (paketet skapades ifrån openssl)

# upgradepkg /tmp/openssl-solibs-1.1.1m-*-1.txz

jansson

Eftersom nghttp2 har ett beroende till jansson.
Detta paket finns inte i Slackware 14.2 så därav måste först kompilera detta paket och installera det innan vi kan börja bygga nghtt2.

Detta gör vi genom att först ladda ner jansson:

# wget https://www.slackwarelinux.se/slackbuilds/jansson.tar.xz

Packa upp jansson med hjälp av tar.

# tar -xJf jansson.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/jansson/jansson.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/jansson-2.14-*-1.txz

nghttp2

Eftersom apache 2.4.52 har ett beroende till nghttp2 och openssl-1.1.1m i Slackware-Current (Ger stöd för "http2" i apache).
Detta paket finns inte i Slackware 14.2 så därav måste först kompilera detta paket och installera det innan vi kan börja bygga och uppdatera apache.

Detta gör vi genom att först ladda ner nghttp2:

# wget https://www.slackwarelinux.se/slackbuilds/nghttp2.tar.xz

Packa upp nghttp2 med hjälp av tar.

# tar -xJf nghttp2.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/nghttp2/nghttp2.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/nghttp2-1.46.0-*-1.txz

httpd (Apache)

Eftersom vi nu installerat nghttp2 så kan vi börja bygga apache och uppgradera slackware 14.2´s apache version 2.4.52 till apache 2.4.52 med openssl-1.1.1m och nghttpd2 stöd

För att ladda ner httpd scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/httpd.tar.xz

Packa upp httpd med hjälp av tar.

# tar -xJf httpd.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare, apache´s source filer är inte med i detta build script.
Så först måste vi ladda ner sourcen.

Enklast att göra detta är att först gå in i mappen där httpd scriptet ligger:

# cd builds/httpd/

Sedan skriver du följande:

# ./httpd.url

Sedan source filerna laddats ner så kör vi apache scriptet och börjar bygga paketet:

# ./httpd.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan uppdaterar vi slackware 14.2´s egna httpd från 2.4.51 (Utan http2 stöd) till våran version 2.4.51 (Med http2 och openssl-1.1.1m) genom att skriva:

# upgradepkg /tmp/httpd-2.4.52-*-2.txz

MariaDB

Se till att du är tillbaka i /usr/src mappen:

# cd /usr/src

Ladda ner mariadb scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/mariadb-10.3.tar.xz

Packa upp mariadb scriptet med hjälp av tar.

# tar -xJf mariadb-10.3.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare, mariadb´s source filer är inte med i detta buildscript.
Så först måste vi ladda ner sourcen.

Enklast att göra detta är att först gå in i mappen där mariadb scriptet ligger:

# cd builds/mariadb/

Sedan skriver du följande:

# ./mirror.url

Sedan source filerna laddats ner så kör vi mariadb scriptet och börjar bygga paketet:

# ./mariadb.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan uppdaterar vi slackware 14.2´s egna mariadb från 10.0.38 till 10.3.32 genom att skriva:

# upgradepkg /tmp/mariadb-10.3.32-*-1.txz

Efter uppgraderingen är klar så måste vi först starta om mariadb tjänsten:

# /etc/rc.d/rc.mysqld restart

Efter detta så måste du köra följande kommando för att slutföra migreringen på mariadb´s databas från den tidigare versionen:

# mysql_upgrade --user=root --password

alpine

Innan vi kan kompilera PHP-7.2.x/php-7.3.x så måste vi först ha alpine, då php har ett beroende till alpine för imap.
Då slackware 14.2 redan har en äldre version av alpine installerad så avinstallerar vi denna och uppdaterar den till den senaste stable versionen och kompilerar den med den nyare versionen av openssl.

Se till att du är tillbaka i "/usr/src" mappen:

# cd /usr/src

Avinstallerar slackware 14.2´s alpine version genom att skriva:

# removepkg alpine-2.20-*-2.txt

Ladda ner alpine scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/alpine-2.25.tar.xz

Packa upp alpine scriptet med hjälp av tar.

# tar -xJf alpine-2.25.tar.xz

PHP-7.2

Vi behöver inte göra något mer med alpine just för stunden då PHP kommer att bygga alpine och dess beroenden när vi kör build script.

Se till att du är tillbaka i "/usr/src" mappen:

# cd /usr/src

Ladda ner php-7.2 scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/php-7.2.tar.xz

Packa upp php-7.2 scriptet med hjälp av tar.

# tar -xJf php-7.2.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare, php-7.2´s source filer är inte med i detta build script.
Så först måste vi ladda ner sourcen.

Enklast att göra detta är att först gå in i mappen där php scriptet ligger:

# cd builds/php-7.2/

Sedan skriver du följande:

# ./fetch-php.sh

Sedan source filerna laddats ner så kör vi php-7.2 scriptet och börjar bygga paketet:

# ./php.Slackbuild

Nu installerar vi alpine.

# installpkg /tmp/alpine-2.25-*-1.txz

När paketet byggt färdigt och vi installerat alpine så uppdaterar vi slackware 14.2´s egna php från 5.6.40 till 7.2.34 genom att skriva:

# upgradepkg /tmp/php-7.2.34-*-1.txz

php-7.4

Vi behöver inte göra något mer med alpine just för stunden då PHP kommer att bygga alpine och dess beroenden när vi kör build script.
Innan vi kan bygga php-7.4.x så måste vi först ladda ner och kompilera dess beroenden.

Se till att du är tillbaka i "/usr/src" mappen:

# cd /usr/src

Ladda ner pcre2 scriptet, så skriv följande:

# wget www.slackwarelinux.se/slackbuilds/pcre2.tar.xz

Packa upp pcre2 scriptet med hjälp av tar.

# tar -xJf pcre2.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/pcre2/pcre2.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/pcre2-10.39.0-*-1.txz

Ladda ner re2c scriptet, så skriv följande:

# wget www.slackwarelinux.se/slackbuilds/re2c.tar.gz

Packa upp re2c scriptet med hjälp av tar.

# tar -xf re2c.tar.gz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/re2c.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/re2c-2.2-*-1.txz

Ladda ner re2c scriptet, så skriv följande:

# wget www.slackwarelinux.se/slackbuilds/tidy-html5.tar.gz

Packa upp re2c scriptet med hjälp av tar.

# tar -xf tidy-html5.tar.gz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/tidy-html5.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/tidy-html5-5.8.0-*-1.txz

Gå sedan tillbaka till "builds" mappen och ladda ner libsodium från slackbuilds, så skriv följande:

# cd /usr/src/builds
# wget https://www.slackbuilds.org/slackbuilds/14.2/libraries/libsodium.tar.gz

Packa upp libsodium scriptet med hjälp av tar, radera tar filen och gå sedan in i "libsodium" mappen.

# tar -xf libsodium.tar.gz
# rm -rf libsodium.tar.gz
# cd libsodium

Ladda ner source koden för libsodium

# wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz

För att köra scriptet och bygga paketet så kör vi följande kommando:

# ./libsodium.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/libsodium-1.0.18-*-1_SBo.tgz

Gå sedan tillbaka till "builds" mappen och ladda ner argon2 från slackbuilds, så skriv följande:

# cd /usr/src/builds
# wget https://www.slackbuilds.org/slackbuilds/14.2/libraries/argon2.tar.gz

Packa upp argon2 scriptet med hjälp av tar, raddera tar filen och gå sedan in i "argon2" mappen.

# tar -xf argon2.tar.gz
# rm -rf argon2.tar.gz
# cd argon2

Ladda ner source koden för argon2

# wget https://github.com/P-H-C/phc-winner-argon2/archive/20190702.tar.gz

För att köra scriptet och bygga paketet så kör vi följande kommando:

# ./argon2.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/argon2-20190702-*-1_SBo.tgz

Gå sedan tillbaka till "/usr/src" mappen och ladda ner oniguruma, så skriv följande:

# cd /usr/src/
# wget www.slackwarelinux.se/slackbuilds/oniguruma.tar.xz

Packa upp oniguruma scriptet med hjälp av tar.

# tar -xJf oniguruma.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/oniguruma/oniguruma.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/oniguruma-6.9.7.1-*-1.txz

Ladda ner libedit, så skriv följande:

# cd /usr/src/
# wget www.slackwarelinux.se/slackbuilds/libedit.tar.xz

Packa upp libedit scriptet med hjälp av tar.

# tar -xJf libedit.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare.
För att köra scriptet och bygga paketet så kör vi följande kommando:

# builds/libedit/libedit.Slackbuild

När paketet byggt färdigt så sparas det i "/tmp" mappen.
Sedan installerar vi paketet genom att skriva:

# installpkg /tmp/libedit-20210910_3.1-*-1.txz

Ladda ner php-7.4 scriptet, så skriv följande:

# wget https://www.slackwarelinux.se/slackbuilds/php-7.4.tar.xz

Packa upp php-7.4 scriptet med hjälp av tar.

# tar -xJf php-7.4.tar.xz

Scriptet kommer att packas upp i "builds" mappen som nämnt tidigare, php-7.4´s source filer är inte med i detta build script.
Så först måste vi ladda ner sourcen.

Enklast att göra detta är att först gå in i mappen där php scriptet ligger:

# cd builds/php-7.4/

Sedan skriver du följande:

# ./fetch-php.sh

Sedan source filerna laddats ner så kör vi php-7.4 scriptet och börjar bygga paketet:

# ./php.Slackbuild

Nu installerar vi alpine.

# installpkg /tmp/alpine-2.25-*-1.txz

När paketet byggt färdigt och vi installerat alpine så uppdaterar vi slackware 14.2´s egna php från 5.6.40 till 7.4.27 genom att skriva:

# upgradepkg /tmp/php-7.4.27-*-1.txz

Efter uppgraderingen är klar så fixa till php.ini och apache´s mod_php.conf.
För att göra det så skriver du följande kommando för att först backa upp de gammla filerna.

# cp /etc/php.ini /etc/php.ini.old
# cp /etc/httpd/mod_php.conf /etc/httpd/mod_php.conf.old

Nu lägger vi in den nya php.ini filen för 7.x versionen genom att skriva följande:

# cp /etc/php.ini.new /etc/php.ini

Och sedan gör vi så att apache laddar in php-7.x´s modul.

# cp /etc/httpd/mod_php.conf.new /etc/httpd/mod_php.conf

Nu kan vi starta om apache.

# /etc/rc.d/rc.httpd restart

För att se att php fungerar så kan du skapa en php fil i "/var/www/htdocs/" ex:

# nano /var/www/htdocs/info.php

Med nederstårende innehåll:

För att sedan spara och avslutan nano så trycker du "ctrl" och "x" tangenterna.
"y" tangenten och sedan enter-tangenten.
Surfa till servern ex: http//192.168.1.10/info.php (eller vad nu din apache server har för ip-adress) för att se att det fungerar som behagat.

OBS: Om du får felmeddelande i /var/log/httpd/error_log, istil med:

PHP Warning:  mktime(): It is not safe to rely on the system's timezon...

Så måste du läga till "date.timezone = Europe/Stockholm" i "/etc/php.ini" under "[Date]".
Glöm inte att starta om apache igen efter detta.

Problem

Om du får ett felmeddelande när du försöker att kompilera PHP som ser ut som följande:

configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

Så är lösningen på detta att prova raddera "/usr/local/lib*/c-client":

# rm -rf /usr/local/lib*/c-client

Sedan prova att kompilera PHP igen.

Om det mot förmodan inte hjälper, så kolla att det ligger filer i "/usr/local/lib*/c-client/lib*/":

# ls -l /usr/local/lib*/c-client/lib*/*

Ligger det inga filer där så kopiera in dessa manuellt.

# cd /tmp/alpine-2.25/imap/c-client/
# cp c-client.a /usr/local/lib*/c-client/lib*/
# cp *.h /usr/local/lib*/c-client/include/

Så kompilerar vi php igen.

slackpkg blacklist

En notis är att du bör nu sedan "blacklista" dessa paket i slackpkg blacklist så du inte råkar installera de äldre paketen om du eventuellt kör en slackpkg update.

Lägg in följande i /etc/slackpkg/blacklist
För att göra detta så kan du öppna denna filen med ex nano:

# nano /etc/slackpkg/blacklist

Tryck enter-tangenten för att öppan filen i nano.
Skriv sedan in följande rader i slutet på denna text fil.
(Du kan skrolla ner till sista sidan med hjälp av pagedown tangenten eller "pil ner" tangenten)

# This one will blacklist all SBo packages:
#[0-9]+_SBo
alpine
httpd
mariadb
openssl
php

För att sedan spara ändringarna och avslutan nano så trycker du "ctrl" och "x" tangenterna.
"y" tangenten och sedan enter-tangenten.
Nu är du klar :-)

×