27 MacPorts の細かい不具合? (pandoc, ffmpeg)

(しばらく工事中。こけつまろびつ。)

このところ pandoc の更新に失敗している (いつものように sudo port -N selfupdate; sudo port -N upgrade outdated で全体を更新しようとしていて引っかかる)。 build のログを見た Claude Code 君によると、MacPorts 側のバグだという。 しばらく pandoc の公式バイナリーを使ってしのぐか (https://pandoc.org/ にある。 アンインストール・スクリプトまで用意されている。 きちんとしている印象がある。)、 MacPorts に報告 (してせか) したら、とかのたまう。 そんなに使うわけではないので、しばらくは放置して、直るのを待つことにする。


ffmpeg の更新もおかしい気がする。 ただしこちらは pandoc とは異なり、更新に成功している Mac もある (と言うか、それが多数派である)。 ffmpeg は動かないと困るが、 とりあえず古いものが動くので、今のところ大きな支障はない。しばらく放置する。


(2026/6/7追記) と書いた当日に pandoc に修正が入ったらしく、 (こちらは何もせずに) うまく更新されるようになった。めでたし。 (実は1台のMacで upgrade 出来ていなかったけれど、よく見たら
Warning: Old C++ headers are present, which may cause build failures with Command Line Tools v16+.
Warning: Please see: <https://trac.macports.org/wiki/ProblemHotlist#clts16>
と言う警告が出ていた。指示に従いWWWサイトを見に行ったら、 原因の説明があった上で
sudo rm -rf /Library/Developer/CommandLineTools/usr/include/c++
としなさい、とのこと。これで解決した。よく整備されてますね。) pandoc は解決。


ffmpeg の方はやはり特定の Mac で引っかかってうまくアップデートされない。 ところでその Mac では、ffmpeg に引っかかったせいで、そこで終了してしまい、 他の port (例えば pandoc) のアップデートをしようともしない。 これで放置して、upgrade すべきものが山盛りとなったMacもある。 これはどうすれば…と調べ物をして
sudo port -p upgrade outdated
とすることを知った。 オプション -p は、 “Despite any errors encountered, proceed to process multiple ports and commands.” とするのだとか。これでどこかで引っかかっても、そこでは終了せずに、 最後まで仕事を続ける。これは当然知っておくべきことだった。

それが終わった後、個別にトライする。
port outdated
\end{verbati
これで更新できなかったポートの名前を確認して、以下一つずつ
\begin{verbatim}
sudo port clean ポートの名前
sudo port upgrade ポートの名前
(sudo port clean -all ポートの名前 という徹底お掃除バージョンもある。)

… ffmpeg は、これで解決しなかった。 もう良く分からなくなっているのだけど、一応記録。

次のようにしたらローカルに build するのはやめて、 build 済みのものをネットから引っ張ってきてくれた。
sudo port -b install ffmpeg +gpl2
えー、だったら最初からそうしてくれれば良いし、 後からでもそうすれば良いのに。釈然としない。

The port -b install command forces MacPorts to install a package solely from pre-built binary archives instead of compiling it from source. It strictly ignores source code and aborts the installation if a matching pre-compiled archive is not available on the remote servers.

-b install コマンドを使用すると、 MacPorts はソースからコンパイルするのではなく、 あらかじめビルド済みのバイナリアーカイブのみを使用して パッケージをインストールします。このコマンドはソースコードを完全に無視し、 リモートサーバー上に一致するコンパイル済みアーカイブが存在しない場合は インストールを中止します。[1, 2]

結局、そのMacは、これまで通りに戻すことにして
sudo port -b install ffmpeg +nonfree -gpl2

(2026/6/9追記) あ、そんなことをしていたら、ffmpeg の新しいが来た。 あちこちの Mac でソースから build 始めた。うーぬ。 … 特に問題は起こらない…あ、こけた。

(2026/6/10追記) どうやら Apple Silicon Mac の場合は、macOS を最新版に出来て、 当然 MacPorts も最新版に出来て、一時的に問題が発生したりするけれど、 基本的には問題なし、らしい。

Intel Mac の場合、少数のものをのぞいて、 最新 macOS にはアップグレード出来ないし、 中にはサポート状況の怪しい MacPorts を使うことになって、 そのせいなのかは分からないが、 簡単には行かないことがあるようだ。

今度の macOS は Intel Mac を完全に切り捨てるようで、 はっきり別れてしまうのかも。



桂田 祐史