PHPのバージョンアップ

先日、Wordpressを5系にバージョンアップしたので、PHPも7.3から7.4へバーpジョンアップしました。
PHPのバージョンを更新する時には、Wordpressを使用している場合にはApachのモジュール「php7_module」の更新も追加しないとWordpressが動作しないので、忘れないように追記しておきます。

FreeBSDでは「mod_phpXX」を個別に追加します。

majordomoが突然エラー(その後)

メーリングリスト「majordomo-1.94.5」がperlのバージョンアップ(perl5.28→perl5.30)後に動かなくてってからいろいろと調べてみたが、majordomoは開発が止まっているようで、perlのバージョンダウンしか方法は無いようだ。
FreeBSDの場合はPerlのバージョンダウンは大変そう。
そこで、2つ前くらいのPKGをインストールし、majordomoのみそのperlを使うように工夫してみた。
具体的には、majordomoのperlスクリプトの1行目に「#!/usr/local/bin/perl5.26.3」の様にperlをフルパスで記述し、古いperlで起動するようにした。
変更したスクリプトは以下のとおり。

# grep '/usr/local/bin/perl' *
archive2.pl:#!/usr/local/bin/perl5.26.3
bounce-remind:#!/usr/local/bin/perl5.26.3
config-test:#!/usr/local/bin/perl5.26.3
digest:#!/usr/local/bin/perl5.26.3
majordomo:#!/usr/local/bin/perl5.26.3
majordomo.pl:#!/usr/local/bin/perl5.26.3
request-answer:#!/usr/local/bin/perl5.26.3
resend:#!/usr/local/bin/perl5.26.3
sequencer:#!/usr/local/bin/perl5.26.3

変更後にML宛にメールして無事に配信できることを確認。
他の機能も問題なOK。

majordomoが突然エラー

久しぶりにメーリングリスト使った試験をしてみようと思い、まずは登録メンバーを確認するためのメールを投げて見たら「MAILER-DAEMON」から以下の内容のエラーメール。

Command output: $* is no longer supported as of Perl 5.30 at
/usr/local/majordomo/majordomo.pl line 57. Compilation failed in require at
/usr/local/majordomo/sequencer line 62.

「majordomo.pl」なんてさわることは無いし、アップデート対象外だし・・
エラーの内容からネットで検索してみると、Perlのv5.10.0からは「$*」なるマジックが対象外となったとのこと。
代わりに /s と /m の正規表現修飾子を使うべきとのこと。
私の環境でのPerlのバージョンはと見ると、

# perl -v
This is perl 5, version 30, subversion 0 (v5.30.0) built for amd64-freebsd-thread-multi

あらら、「V5.30.0」なのね。これじゃね。

そこで、エラーとなる「majordomo.pl」にどれだけ「$*」が使われているかを調べてみると
47行目、57行目、72行目の3か所であった。

インストールしているmajordomoのバージョンは1.94.5で、これが最新バージョンで今はメンテナンスされていないようです。
さて、どうしたものか・・・

UbuntuとFreeBSDのデュアルブート

UbuntuをインストールしてあるPCにFreeBSDをインストールし、GRUBでデュアルブート化してみた。
このPCにはHDDが2台(500Gと250G)内蔵してあり、500GのHDDにUbuntuをインストールし、250GのHDDは未使用状態であった。

最初に空きのHDD(250G)に最新のFreeBSD 12.0をインストール。
HDDはGPTでパーティショニングを行った。

FreeBSDのインストールが完了したらUbuntuを起動させる。(GRUBにFreeBSDを認識させていないので、当然、FreeBSDは起動できない。)

Ubuntuで「blkid -o list」とターミナルで打ち込み、ファイルシステムのUUIDを表示させる。

root@tomato:~# blkid -o list

device     fs_type label    mount point    UUID
-------------------------------------------------------------------------------
/dev/loop0 squashfs         /snap/gnome-system-monitor/39
/dev/loop1 squashfs         /snap/gnome-calculator/167
/dev/loop2 squashfs         /snap/gnome-logs/31
/dev/loop3 squashfs         /snap/gnome-3-26-1604/62
/dev/loop4 squashfs         /snap/core/4486
/dev/loop5 squashfs         /snap/gnome-calculator/260
/dev/loop6 squashfs         /snap/gnome-system-monitor/57
/dev/loop7 squashfs         /snap/gnome-3-26-1604/74
/dev/sda1  swap             [SWAP]         d36d29f3-d53d-472a-9456-d811e0eeb4c8
/dev/sda2  ext4             /              6b4bb690-f05a-4750-8fc9-a3cf7bc88e51
/dev/sdb1                   (not mounted)
/dev/sdb2  ufs              (not mounted)  5c4453b64c32c83d
/dev/sdb3                   (not mounted)
/dev/sdb4  ufs              (not mounted)  5c4453b8af3f5753
/dev/sdb5  ufs              (not mounted)  5c4453bdb28e05db
/dev/sdb6  ufs              (not mounted)  5c4453bec82595d7
/dev/sdb7  ufs              (not mounted)  5c4453bfc602ceda
/dev/loop8 squashfs         /snap/gnome-logs/45

FreeBSDのマウントポイント「/」はsdb2としたのでUUIDは「5c4453b64c32c83d」であることがわかる。

この内容を設定ファイルに以下の様に追記する。

# vi /etc/grub.d/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "FreeBSD 12.0" {
        insmod ufs2
        set root=(hd1,2)
        kfreebsd /boot/loader
        search --no-floppy --fs-uuid -set 5c4453b64c32c83d
}

起動時にブートメニューを表示させるようにgrubを編集する。

# vi /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs

修正箇所は「GRUB_TIMEOUT_STYLE=hidden」をコメント化。

保存して編集結果を反映させる。

sudo update-grub
sudo update-grub2

その後、再起動すると以下の様にブート選択メニューが表示される。

PHP5系からPHP7系へ

WordPressをインストールした時に必須でインストールしたPHPは5系であったが、PHP5系は2018年末でセキュリティサポートが終了となった。

そこで本日、PHP7系にアップデートを行った。

実は2カ月程前にも一度、7系にアップデートを試みたが、その時はアップデート後にWordPressの表示に異常(何も表示されない現象)が起き、その時は原因がわからず、やむなくPHPを5系に戻した経緯があった。

今回は、事前に情報収集を行い、wp-config.phpでデバックモードを有効にし、対処方法も事前に把握するなどの準備を行った。

やや心配であったものの、PHP7系へのバージョンアップ実施し、ブログにアクセスすると正常に表示された。

バージョンアップ手順は以前と同じであったが、何が良かったのか正常にバージョンアップを完結することができた。

めでたしめでたし。