記事を書くにあたって、アップデート・アップグレードについて調べたのでメモ
※googleの検索AIより抜粋
・アップデート (Update)
ソフトウェアのバージョン内で小さな変更や修正を行うこと。
バージョン番号が変更されることは少ない(例:バージョン1.0から1.1など)
・アップグレード (Upgrade)
ソフトウェアのバージョン自体を上位のものに大きく変更すること
バージョン番号が変更されることが多い(例:バージョン1.0から2.0など)
初めに
サーバにphpを入れようとして依存を確認したらperl5.40が必要
インストールされているバージョンがperl5.36だったので
アップグレードしようとしたのが今回のきっかけ
perlアップデート
・portmaster でアップグレード
・上げたいバージョンが先、現在のバージョンが後
# portmaster -o lang/perl5.40 lang/perl5.36
/etc/make.confにDEFAULT_VERSIONS+= perl5=5.40 を記述しなかったけど問題無く完了
phpのインストール
・portmaster でphpをインストール
# portmaster /usr/ports/lang/php84
インストール中にエラー
===> Configuring for php84-8.4.7
buildconf: Checking installation
buildconf: autoconf not found. You need autoconf version 2.68 or newer installed to build PHP from Git.
*** Error code 1
エラー調査
エラーにautoconf 2.68 以降が無いとダメと出ていたためまずそこから調査
インストール中のログ
===> php84-8.4.7 depends on package: autoconf>=2.72 - found
# pkg info | grep autoconf
autoconf-2.72 Generate configure scripts and related files
autoconf version 2.68 以降がインストールをされているのが確認出来たが何故かエラー
サーバの再起動をしてみたが変わらずエラー
エラーで検索してみたが明確な対処法は特に見つからず、この時点で2時間ほど経過
もうギブアップということで知り合いに相談してみる
知り合いのサーバでは問題無くmakeできたとのこと、ここで神の助言をもらう
「autoconf 再インストールしてみたら?」
ということで、autoconf再インストールしてみたらperlでエラーが出た!
原因
perlが原因と判明したのでさらに詳しく調査したところ
今まで perl5-5.36 だったのがアップグレードで perl5.40 に代わっていた
アップグレードの際にバージョン名以外のpkg名が変わってしまったことが原因だった模様
こんな微妙な差で動かなくなるとは・・・
対処
まず依存関係の確認
# pkg info -d perl5.40
perlが依存しているパッケージ
# pkg info -r perl5.40
perlが依存されているパッケージ
perlが依存しているのは無し、依存されている方はいくつか出てくる
当たり前だかautoconfも含まれている
ここで本来はアップグレード後にするのが当たり前の依存するパッケージの更新を行う
# portmaster -f `pkg shlib -qR libperl.so.5.36`
いくつか自動で更新されて処理が完了したので、
手動でもautoconfの再インストールしたところエラーなく完了
さらにコマンドで調べた依存されているパッケージは
いくつか更新されていなかったため手動で更新を行う
更新処理が終わったので、phpのインストールをしたところ
エラー無く完了し、無事phpをインストールすることが出来ました
結論
アップグレードしたら依存関係はちゃんと対処しておきましょう