経緯
- 2025/3/11 エラーを再現できたので、エラーメッセージの記述を更新しました。
- 2025/3/15 IntelじゃなくてもApple M1のMac Miniでも同じ問題おきますね。
4年もののMacBook Pro(2019, Intel)のOSをバージョンアップしたあと、macportsでインストールしてあったemacs-appをDockやFinderのアイコンから起動しようとしたら、
「アプリケーション"Finder"には、(null)を開くアクセス権がありません。」
みたいなメッセージが出ました。
諦めてMacPortsを1から別の場所にソースからインストールしてport install emacs-app ......して作り直しましたが、同じ症状でした。
コマンドラインから起動してみると、
openコマンドで起動しようとすると、
% open $macports_root/Applications/Emacs.app
_LSOpenURLsWithCompletionHandler() failed with error -54
というエラーメッセージが出ました。このエラーメッセージでWeb検索すると、他のアプリケーションでの似たような例がヒットしましたが、「最新版をダウンロードして再インストールしたら治った」という例が多かった。
openコマンドでなく、直接実行形式ファイルを叩くと立ち上がるので、実行ファイルそのものに問題は無さそう。
% $macports_root/Applications/Emacs.app/Contents/MacOS/Emacs
# 正常に起動する
さらにWebを検索していたら、「spctl --add (アプリケーションフォルダ)で解決するかも」というページがみつかった。 が、この手はmacOS Sequoia (15)ではダメな手でした。ただ、spctlのマニュアルを読んで、もう少し詳しい情報がわかりました。
% spctl --add $macports_root/Applications/Emacs.app
This operation is no longer supported. Please see the man page for more information.
% spctl --assess -v $macports_root/Applications/Emacs.app
$macports_root/Applications/Emacs.app: rejected
source=no usable signature
なんか署名がされてない、というのでrejectされているようです。
解決策
もうすこし真面目にmacportsのTracを調べたらドンピシャのものがありました。もともとhomebrewのバグレポートにあった回避策みたいです。ちなみに、Intel Macだと起きる問題で、AppleSilicon Macでは起きてないようなことが書かれていました。が、M1のMac Miniでも同じ問題おきました。(2025/3/15追記)
% sudo codesign --force --deep --sign - -v --strip-disallowed-xattrs $macports_root/Applications/Emacs.app
$macports_root/Applications/Emacs.app: signed app bundle with Mach-O thin (x86_64) [org.gnu.Emacs]
% open $macports_root/Applications/Emacs.app
# 正常に起動
めでたしめでたし。(--signのあとの-を忘れがち。)
Emacs以外の他のアプリでも同じような問題が起きそうなので、メモとして残しておく感じです。