前回の記事から1年も経ってた

perlのアップグレードではまったこと

記事を書くにあたって、アップデート・アップグレードについて調べたのでメモ

※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をインストールすることが出来ました

結論

アップグレードしたら依存関係はちゃんと対処しておきましょう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA