LoginSignup
0
0

More than 5 years have passed since last update.

AirDropで.app(のtarball)を送信すると送り先で起動できない件

Last updated at Posted at 2015-06-30

経緯

Eclipes Marsがリリースされたので、さっそく端末Aにダウンロードし、いろいろセッティングしてEclipse.appをtarballに固めた(注1)。

このtarballを端末Aから端末BにAirDropで送信したところ、端末Bでtarballから展開したEclipse.appが起動できなかった。起動した時のエラーダイアログは下図のとおり。

01_check.png
    ↓
02_trash.png

送信前・送信元のファイルのハッシュも一致しており、AirDropではなくscpを使って送信した場合は再現しなかった

原因

AirDropの時だけなんでよーと呟いていたら、

と助言をいただいた。

まずは com.apple.quarantine を調査。

メモ:com.apple.quarantine 拡張属性(考える日常)未知のファイルを隔離するEAの仕組みと謎(ザリガニが見ていた...。) によれば、 xattr コマンドでEA:Extended Attributesの状況が確認できる。

そこで、端末BがAirDrop, scpで受信したtarballと、それぞれを展開した.appの com.apple.quarantine を確認してみた。

(1) scpで受信したtarball

03_scp-tar.png

(2) (1) を展開した.app

04_scp-app.png

(3) AirDropで受信したtarball

05_ad-tar.png

(4) (3) を展開した.app

06-ad-app.png

どうやら、AirDropを経由したファイルには com.apple.quarantine が設定され、それが少なくともtarballの場合、展開したファイルにも設定されるようだ。

これは、AirDropで第三者から受け取ったファイルを「セキュリティとプライバシー」の機能と連係させる(不用意に怪しい.appを開かせない)ためだと推測できる。結果、壊れていると表示されるのはちょっとアレな気もするけど。

解決方法

けれども今回は、素性が明らかな端末からのファイル受信なので、これを開かせるようにしたい。先述のサイトによれば、xattr -d コマンドでEAを解除できるようなので、com.apple.quarantine を解除してみた。

xattr -d com.apple.quarantine Eclipse_mars.app

解除の後、.appは正常に起動できた。


注1:
端末は両方ともOSX Yosemite 10.10.3。Eclipse.appはRenameしてEclipse_mars.appとした。そもそもEclipse Marsからトップディレクトリが.appになったことに驚いたりした。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0