ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × portmasterでPHP 5.5をモジュール含め一括でPHP 7.1に更新する 家鯖のPHPを5.5から7.1に更新した。 バージョン毎にportsが分かれているソフトを更新するときは、portmasterの-oオプションを使ってportmaster -o 置き換えるports(新バージョン) 置き換えられるports(旧バージョン)とする。そうしないと「php55-5.5.38 conflits with php71-7.1.1 (installs files into same place)」という具合に怒られる。 # sudo portmaster -o lang/php71 php56 PHPの場合、付随するモジュールも更新する必要があり、基本的には同じ方法で行う。しかし、1つずつportmaster -oしなきゃならなくて地味に面倒なんすよね(´・ω・`)。いい方法がないものかとネットを彷徨っていたら(この時間で手作業で更新できた説)、Stack Overflowに素敵な回答を発見。元のスクリプトだとdistfile削除プロンプトの入力待ちが正しく処理できなかったため、ちょっと改造させて貰った。 $ awk -vPATTERN="55" -vREPLACEMENT="71" \ 'BEGIN { while (("pkg query -x %o \"/(mod_)?php" PATTERN "(-|$)\"" \ | getline name) > 0) { oldname = name; sub(PATTERN, REPLACEMENT, name); print "ALWAYS_SCRUB_DISTFILES=dopt portmaster --no-confirm -o " name " " oldname } }' \ | sudo sh 統廃合などで必ずしもモジュールが1対1で対応しなかったり、php-extensionパッケージは上手く扱えなかったりで、エラーなしで一発更新という訳にはいかないのが玉に瑕。でもこのスクリプトで更新作業はかなり楽になるハズ。PATTERNとREPLACEMENTはお使いの環境に応じて書き換えてね(ゝω・)v 参考サイト php - upgrading port php55 to php56 - conflict with non-existing helpers - Stack Overflow portmaster マニュアル - [SILVER SACKの自画自賛 portsのlang/tcl-modulesが消えた件 portupgradeしようとpkgdb -Fしたら、lang/tcl-modulesが無くなった云々と出てきた。本体に組み込まれたので単体portsとしては廃止になった模様。 じゃーDBから消しても問題ねーべよって事で消そうとしたら、tcl, tk, py27-tkinterが依存してるので消せないよと。 さて、どうしたものかと頭をひねった結果、依存しているパッケージを1つずつ更新すれば依存関係は勝手に消えるだろうと思い至った。なぜならば、tcl-modulesが廃止になったんだから、当然、最新のports treeではtcl-modulesに依存したパッケージは無くなっているはずだという理屈。 実践あるのみというわけで、1つずつportupgrade -Rした所、無事依存関係は解消。DBからtcl-modulesを消す事が出来た。 start.txt 最終更新: 2022-07-27 15:26by Decomo