« 良い感じのケース見つけました。 | トップページ | SDブート環境へのSuperZaxxon 1.54 アップデート »

2013年2月 8日 (金)

ぱんだ

Pandoraのアプリケーション配布単位である.pndファイルですが、配布、実行には便利なのですが、なにかごにょごにょやろうとすると標準のLinuxとは勝手が違う部分もありちょっと悩んだりしてしまいます。
そんな感じで今回はpndファイルの実行の仕組みをちょっと調べてみました。
さわりはITMediaの記事にもあるのですが、デスクトップやメニューから実行指示されると、pndファイルがSDカード上の /media/[LABEL]/pandora/appdata/[PNDID]ディレクトリと共に /mnt/utmp/[PNDID]aufsでマウントされ、アプリケーションの実行が終わるとアンマウントされます。
アプリケーションの設定やログなんかは /media/[LABEL]/pandora/appdata/[PNDID]に書き込まれるので、きちんとログを吐くアプリケーションなんかはこの中を探せば実行の痕跡なんかを追うことができます。

ですが、エラーを標準エラー出力にしか吐かないアプリとか普通に存在するので「とりあえずコマンドラインから実行して出力見てみる」という行為がpndファイル実行ではもう一手間必要になってきます。

pndファイルの実行は通常 pnd_run.shスクリプトに対してファイルPATHとアプリ起動スクリプト名、PNDID等を指定することで行われますが、こいつにはマウントするだけでアプリ起動スクリプト実行を行わないオプション(-m)があり、そいつでマウント後 手でアプリ起動スクリプトを実行してやることで標準出力を得ることができたりします。
# 通常実行
$ sudo /usr/pandora/scripts/pnd_run.sh \
-p "/media/APL01/pandora/apps/gngeo.pnd" \
-e "./run.sh" -b gngeo

# マウントのみ(-eオプションが存在しても無視されるようです)
$ sudo /usr/pandora/scripts/pnd_run.sh \
-p "/media/APL01/pandora/apps/gngeo.pnd" \
-b gngeo -m

# マウントの確認
$ ls /mnt/utmp/gngeo/

実際gngeoの設定ファイルいじった後にDesktopからアプリが起動しなくなった原因調べるのに有用でした。
まぁ、お約束のコピペミスで設定ファイルに全角ブランクが紛れて起動時セグフォ起こしてたのですがw

デスクトップやメニューから起動した際にどんなオプションが渡されてるのかは /usr/share/applications内の *.desktopファイルにひととおりのアプリ設定ファイルがあるので、それの"Exec"項目の値を引っ張ってくれば コマンドラインから実行を再現することが出来ます。

$ cd /usr/share/applications/
$ grep -H ^Exec *.desktop

作業後はアンマウントを忘れずに。
# アンマウントのみ
$ sudo /usr/pandora/scripts/pnd_run.sh \
-p "/media/APL01/pandora/apps/gngeo.pnd" \
-b gngeo -u

|

« 良い感じのケース見つけました。 | トップページ | SDブート環境へのSuperZaxxon 1.54 アップデート »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/199635/56719658

この記事へのトラックバック一覧です: ぱんだ:

« 良い感じのケース見つけました。 | トップページ | SDブート環境へのSuperZaxxon 1.54 アップデート »