Mac OS X El Capitan で NITE をインストールする

El Capitan には、 /usr/local を例外とし、 /usr 以下にrootですらファイルを置けないというセキュリティ機構が存在する。(/usr 以外にも、通常システムのみがアクセスするような階層のほとんどは同じ仕様。詳しくは”Rootless”で他をぐぐってください。)

後輩のインストールを手伝った際、El CapitanのRootlessでコケる問題を解決する必要があった。僕はKinectについて全く知らないけど、適当にやったらひとまず解決できた。
ぐぐっても他の成功例がなく(そもそもMacでKinectというケースが少ないんだと思う…)、最終的に自己解決することになったので、社会貢献のためにメモ。

最初はMacPortsを使ってインストールしようとしていたのだけど、MacPortsは常にRootlessに引っかかるので、最終的にMacPortsを消して、Rootlessに阻害されない(/usr/localに置く)brewを使うことにした。

基本的にこちらのお役立ち記事に従ってインストールしていく。

OS X で OpenNI/NITE 最速開発環境構築 http://qiita.com/gongo/items/c19bb9bd70a43433e252

sudo brew install libusb --universal
sudo brew install https://raw.github.com/gongo/openni-formula/master/openni.rb --devel
sudo brew install https://raw.github.com/gongo/openni-formula/master/sensor-kinect.rb --devel

記事の4行のinstallのうち上3つは普通にうまくいったが、

sudo brew install https://raw.github.com/gongo/openni-formula/master/nite.rb --devel

これをやろうとすると

######################################################################## 100.0%
==> Downloading http://www.openni.org/downloads/nite-bin-macosx-v1.5.2.21.tar.bz2
==> Downloading from http://www.apple.com/downloads/nite-bin-macosx-v1.5.2.21.tar.bz2

curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "nite"
Download failed: http://www.apple.com/downloads/nite-bin-macosx-v1.5.2.21.tar.bz2

と言われて失敗してしまう。何らかの事情があるのか知らないが現在は404になるらしい。
というわけで、 http://www.kinect-wiki.info/Download から直接ダウンロードしてくることにした。

落とした “nite-bin-macosx-v1.5.2.21.tar.bz2” を展開すると

Bin		Features_1_3_0	Features_1_4_2	Hands_1_3_1	Hands_1_5_2	Samples
Data		Features_1_3_1	Features_1_5_2	Hands_1_4_1	Include		install.sh
Documentation	Features_1_4_1	Hands_1_3_0	Hands_1_4_2	Lib		uninstall.sh

といったファイルが見える。明らかにinstall.shを実行したら良さげなので、実行してみると…

$ sudo ./install.sh 
Installing NITE
***************

Copying shared libraries... cp: /usr/lib/libXnVNite_1_5_2.dylib: Operation not permitted

と言われてしまう…明らかにまたRootlessに阻害されている状況。

しかし、所詮シェルスクリプトなので、適当に書き換えたら使える?!

というわけで、ファイルを開いて、すべての

/usr/

/usr/local/

に置換してみる。

改めて実行すると…

$ sudo ./install.sh
Installing NITE
***************

Copying shared libraries... OK
Copying includes... OK
Installing java bindings... OK
Installing module 'Features_1_3_0'...
ls: Features_1_3_0/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_3_1'...
ls: Features_1_3_1/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_4_1'...
ls: Features_1_4_1/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_4_2'...
ls: Features_1_4_2/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_5_2'...
Registering module 'libXnVFeatures_1_5_2.dylib'... OK
Copying XnVSceneServer... OK
Installing module 'Features_1_5_2'
ls: Hands_1_3_0/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_5_2'
ls: Hands_1_3_1/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_5_2'
ls: Hands_1_4_1/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_5_2'
ls: Hands_1_4_2/Bin/lib*dylib: No such file or directory
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_5_2.dylib'...OK
Adding license.. OK

*** DONE ***

(ぱっとみ)成功した!!

雑な処置だったので動くか心配だったが、無事動作確認に成功したので、たぶんこれでいいんだと思う。

以上です。

(Rootless、めちゃくちゃ悩まされるのでつらい…)


コメントする