文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

macでIntelliJ IDEAのアップデート時に権限エラーが起きる時の対応

いつの間にかこのエラーが起きるようになって、面倒でずっと放置してたんですよね〜
f:id:treeapps:20170828014922p:plain

macでIntelliJ IDEAを使っている方は以下を見たことがあると思います。

f:id:treeapps:20170828002304p:plain

これが起きてから、「いつか直るだろうから今回は手動でdmgダウンロードしてアップデートしちゃうか」逃げていたのですが、いつまでも置き続けるし直らないので、原因と対策を調べてみました。


具体的には、以下のコメンドをターミナルで実行します。

cd /Applications
sudo xattr -dr com.apple.quarantine IntelliJ\ IDEA.app/
sudo chmod -R 755 IntelliJ\ IDEA.app/

コマンド実行後にIDEAを再起動し、Check for updates... でアップデートすると、以下のように見慣れたアップデートダイアログが表示されます。

f:id:treeapps:20170828004318p:plain

アップデート失敗の詳細はよく解ってないのですが、元々IDEAはアップデートの際に/private/var/folders配下を一時フォルダとして使用していたようなのですが、macOS sierraになって?(もっと前からかも)から/private/var/foldersがread onlyなフォルダになってしまい、書き込みでないよエラーが起きていたようです。

xattrコマンドでEA(Extended Attribute)、lsした時にファイル名末尾に@が付くアレがあると、失敗するようなので、EAを削除する事で更新できるようになるようです。
developer.apple.com

恐らくcom.apple.quarantine属性の検疫による制限をxattr -dr(再帰的に削除)する事で、強引に検疫を通過した事にしてしまい、今まで通りの更新権限を獲得する事で解決する?という感じなのだと思います。

もしかしたら、アップデートの仕方によって検疫(インターネット経由のファイル実行時に出る警告)されるされないの違いが出てきてしまって、IDEAのバージョンによってそれが起きてしまい、本来検疫済みである筈が未検疫ファイルが.app内にできてしまった?みたいな事が起きたのかもしれませんね。