72 やっと Mac 版 FreeFem++ 4.12 が来た     (Apple Silicon 用に遅れて Intel 用も)

来学期のことを考え始めていて、 そう言えば有限要素法関係の講義を春学期に移したのだった、 FreeFem++ はどうだったっけ??

昨年暮れにFreeFem++ 4.12 というのがリリースされたのだが、 **なんと** Windows と Linux 向けのみで、 Mac 向けのバイナリーが提供されていなかった。 何か困難があったらしいのだけど (詳しいことを解読する余裕がない…)、 Mac の優先順位が以前と比べて下がっているのはちょっと不安を感じる。

久しぶりにサイトを見に行ったら、2月8日づけで FreeFEM-4.12-Apple-M1.dmg というのがリリースされていた。 待望の Mac 版、ただし今度は M1 Mac 向けのみか。 痛し痒し。

とりあえず試してみる。 まず M1 Max, macOS Monterey というMacにインストール。 FreeFEM-4.12-Apple-M1.dmg をダブル・クリックしてマウントしてから、 ターミナルで
cd /Volumes/FreeFEM-4.12-Apple-M1
bash ./Install-app.sh
(パスワードを尋ねてくるので答える)

これで /ApplicationsFreeFem++.app がインストールされる。

PATH の設定はどうなっているのかな?… .zprofile
export PATH=/Applications/FreeFem++.app/Contents/ff-4.12/bin:"$PATH"
を断りなく書き込んでいる。 おいおい (まあ大抵の場合はそれで動くのだろうけれど)。 個人的にPATHの設定は .profile でするようにしているので、 上の設定は削除して、 .profile の方を直す。


以下は後で。

(1)
色々なプログラムで動作チェック (多分大丈夫だとは思うけれど)。
(2)
Ventura にインストールしてみる。
(3)
Version 4.12 で採用された plotPDF() (だったっけ?) は動くのか。
(4)
Intel Mac 向けは提供されるのか。ソースから make かなあ。

後。まずは (3) plotPDF() が動くかどうか。 「FreeFem++ に藤原(PDF)パッチ当てて使う, plotPDF() (MacPorts を導入している Mac で make した記録)」 に書いたように、plotPDF() のサンプルを動かしてみた。
plotPDF() の動作チェック (藤原パッチのサンプル・プログラムを試す)
curl -O http://www-an.acs.i.kyoto-u.ac.jp/~fujiwara/ff++-programs/plotPDF-sample.edp
FreeFem++ plotPDF-sample.edp
無事に動作した (なお、plot() でPDFを作るようにはなっていない)。 なかなかハッピーである。


次に (2) M1 Mac, macOS Ventura へのインストール (なお M1 Ultra, macOS Ventura でも大体同じようになった)。 予告されていたように悪名高き(?) Gatekeeper に引っかかる。 具体的には
"FreeFem++.app"は壊れているため開けません。ゴミ箱に入れる必要があります。
と表示される。とりあえず \fbox{キャンセル}する。

FreeFEM-4.12-Apple-M1.dmg をマウントしたディレクトリィに、 README.md と言うファイルがあり、説明がある。

(これは多分無駄) まず「壊れている」ということで次が目に入る。
if you have message the FreeFem++.app is corrupted then do in terminal
> sudo xattr -rc /Applications/FreeFem++.app
and retry.
…この通りにしても改善されない (そもそもこれはスクリプトの中でやっているような気がするのだが…)。

README.md には、 ”Safely open apps on your Mac” あるいはそのフランス語版を見るように書いてあるが、日本人向けは 「Mac で App を安全に開く」 ということになるだろうか。 (率直に言って分かりにくい。一瞬英語のせいかと思ったけれど、 日本語で読んでも分かりにくい。説明が下手なのか、 仕組みの出来が悪いのか、それとも複雑になるのは仕方がないのか。)

そのWWWページの最後の方にある 「ノータリゼーションを受けていない App や未確認の開発元の App を開きたい場合」 に書いてあることを実行した…ことになるのかな?
"FreeFem++.app"は壊れているため開けません。ゴミ箱に入れる必要があります。
が表示された段階で、[システム環境設定][セキュリティとプライバシー]を開き、 [このまま開く]を選択して、[開く]とする。 これでインストール・スクリプト Install-app.sh はとりあえず終了した。

この場合、動作チェックはマニュアルで行うことになるみたい。
動作チェック (配布されている example を実行してみる)
/Applications/FreeFem++.app/Contents/ff-4.12/bin/FreeFem++ \
 /Applications/FreeFem++.app/Contents/ff-4.12/share/FreeFEM/4.12/examples/tutorial/Laplace.edp
とする。

(以前の FreeFem++ のように、スクリプトではなくて、 パッケージにすればいいのじゃないかなあ、とか考えている私でした。)


(2023/4/1追記) ついに Intel Mac 向けの FreeFem++ がやってきた! FreeFEM-4.12-Apple-Intel.dmg がサポートしている macOS は何なのかな。 それはそのうちレポートしよう。 (2023/4/29追記) Mojave (macOS 10.14.6) を載せた Intel Mac で FreeFEM-4.12-Apple-Intel.dmg のインストール&実行に成功した。

(2023/4/3追記) ころびまくりインストールの記録。 古いものは事前に削除しておいた方が良いかも (実際、あるMacでそれが必要なようだった)。
sudo rm -rf /Applications/FreeFem++.app
私の場合、以前 /usr/local の下にインストールしたこともあり、 そういう場合はそれも掃除しておく。
sudo rm -rf /usr/local/bin/FreeFem++*
sudo rm -rf /usr/local/bin/{ffglut,ff-mpirun,bamg,cvmsh2,ffmedit,ffmaster,ff-c++,ff-pkg-download,ff-get-dep}

FreeFEM-4.12-Apple-Intel.dmg をダブルクリックする。 (シェルに tcsh を使っていると、なぜかエラーになった。 一時的にでも chsh でシェルを /bin/zsh にしておく。) 次の操作は README.txt に書いてあるものである。
zsh
cd Volumes/FreeFEM.xx-Apple-intel
bash ./Install-app.sh
(なんか不思議な操作だ。 普段から zsh を使っていれば、最初のは不要のようだ。 FreeFem++ の開発者は、 このように zsh を起動していれば、chsh は不要かと思ったのかもしれないが、 それはエラーになった。)
以上、書いてあることがぐちゃぐちゃで信じられない、と思うかもしれない。 自分でもそう思うけれども、この紆余曲折で何とか出来た、 という報告である。

macOS Monterey の場合、これでサンプル・プログラムの実行まで進み、 インストール・スクリプトは正常に終了した。

macOS Ventura の場合は、色々ブレーキがかかった。以下激しく紆余曲折する。

  1. まず、これで「"FreeFem++"は壊れているため開けません。 ゴミ箱に入れる必要があります。」という表示がでる。
  2. [キャンセル]を選択する。
  3. [システム環境設定][プライバシーとセキュリティ]の[セキュリティ]に、 “"FreeFem++"は開発元を確認できないため、使用がブロックされました。” という表示と[このまま開く]という選択肢が現れる。
  4. [このまま開く]を選択する。
  5. 「"プライバシーとセキュリティ"が設定のロックを解除しようとしています。 許可するにはパスワードを入力して下さい。」 と表示が出る。パスワードを入力すると、 もう一度「"FreeFem++"は壊れているため開けません。 ゴミ箱に入れる必要があります。」という表示が出る。
  6. また[キャンセル]を選択する。
  7. また“"FreeFem++"は開発元を確認できないため、 使用がブロックされました。” という表示が出て来る。
  8. [このまま開く]を選択すると 「"FreeFem++"は壊れているため開けません。 ゴミ箱に入れる必要があります。」という表示に、 (ループしているかと思うところだけれど) 今度は[開く]という選択肢が現れる。
  9. [開く]を選ぶ。
  10. インストールスクリプトが終了する。 ターミナルに、 Error missing install missing lib ?? という気になる表示が出るが、 それはサンプル・プログラムを走らせようとしての失敗らしく、 インストールそのものは成功している。
  11. サンプル・プログラムは手動で実行する。
    動作チェック (配布されている example を実行してみる)
    /Applications/FreeFem++.app/Contents/ff-4.12/bin/FreeFem++ \
     /Applications/FreeFem++.app/Contents/ff-4.12/share/FreeFEM/4.12/examples/tutorial/Laplace.edp
    
    無事に動いた。

/Applications/FreeFem++.app/Contents/ff-4.12/bin を PATH に入れておくこと。
export PATH=/Applications/FreeFem++.app/Contents/ff-4.12/bin:"$PATH"

授業中にインストール大会をすることになりそうだが、 楽しい(もちろん反語である)ことになりそうだ。やれやれ。

(2023/4/29追記) 現在の情勢

桂田 祐史