2015年12月28日月曜日

温湿度気圧センサBMP280 Breakout基板について

BoschのBMP280温湿度気圧センサを使う例がいくつか紹介されていますが,試してみていくつかはまったのでメモ。

使用したのは,スイッチサイエンスさんオリジナルの「BMP280搭載 温湿度・気圧センサモジュール」であります。基板が青いので一瞬Adafruitかな?と思ってしまったのですが,Adafruitのは3.3Vレギュレータがついていて,あとピン配置も異なります。

配線ですが,使わないピンがないことに注意することが大事です。7ピンすべて,どこかにつなぐこと。具体的には,I2Cの場合,ピンを手前にしたときの並びで「SDO」を解放のまま使われている例が見られますが,これは「I2Cアドレスの選択ビット」になるので,必ずプルアップもしくはプルダウンしないと,I2Cアドレスがふらふらと変化して,変な値をランダムに出すことになります。
  • I2Cの場合,SDOはプルダウンで0x76,プルアップで0x77です。開放のままにしていると,両方のアドレスをふらふらします。
  • 右端のVioとVcoreの両方を3.3Vに接続しましょう。スイッチサイエンスのページではジャンパでつながっていると書かれていますが,手元の基板はそうなっていなくて,チップが動作しませんでした。
  • プルアップ抵抗は入れましょう。Raspberry Pi内蔵プルアップ抵抗があるからいいやと思っても,測定値がちゃんと得られていないように見えます。
それで,Arduino IDEからAdafruitのBMP280対応コードを入れると思いますが,内部でAdafruit_Sensor.hを読んでいて,これはライブラリ管理には登録されていないので,GitHubからZIPをダウンロードして,ZIPファイルからインストールする必要があります。

Raspberry Piの場合はPythonで試すと思いますが,python-smbusをパッケージマネージャ等から入れてから,Adafruit_Python_BMP280を入れることになると思います。GitHubのREADME.mdの記述通りにいろいろ入れようとすると,Python2.6が入ったりします。たぶん記述が古いので,python-smbusだけでよいはず。

あと,Adafruit_BMP280_Example.pyのなかでは,I2Cアドレスとして0x77が書かれているので,SDOピンをプルアップに変更するか,コードを0x76に書き換えるなどして,合わせる必要があります。エラーがどっと出るときは,アドレスが合わずにデバイスが見つかっていないときです。

設定ビットでは,オーバーサンプリング数やIIRフィルタの設定などします。スイッチサイエンスさんの説明がわかりやすいです。ただ,キャリブレーションの値の読み出しと計算については特に書かれていませんが,Boschのデータシートを見ると,出荷前にチップ内部のNVRAMに値が記録されているそうです。えらく大層な計算をしますが,精度を得るには必要なので,書かれている通りに補正計算ルーチンを使いましょう(もしくは使う言語に応じて移植しましょう)。固定小数点で計算する場合と浮動小数点計算する場合がありますが,精度が高々0.2%,湿度はもっと悪いのでどちらを使っても実用上の違いはないと思います。

それと,データシートを読まないと気づかないですが,湿度を得るまでのレイテンシは1秒かかります。1秒間隔で値を読みだすのはちとつらいと思います。

取り急ぎ,ご報告まで。

2015年12月17日木曜日

ownCloud 8で外部HDDをマウントして見せる別の方法

Another Solution for the Last Entry: Using Official Setting

There is another solution for mounting any folders out of data directory of ownCloud 8.

Please read carefully the document: Configuring External Storage (doc.owncloud.org)

Disclaimer:  The developer insists this "external storage support" is only for "Enterprise Edition".  This is only a report of my trial on open source edition of ownCloud 8.2.1.  I don't assure any occasions on you by following this procedure.

I tried by starting from writing configuration file because screen shots on the document looks not only for "Enterprise Edition".  But another document regarding to the GUI settings includes a "Enterprise Edition" logo in a screenshot.

After several trials, I could operate GUI screen even on the open source edition, but I don't describe the way for it.  One reason is a due diligence, but anyway I could not have yet making it clear how I reached at that point. 

Procedure with writing configuration file is following.  This is only a shortcut of the original document.
  1. Enable "External storage support" app.  One way is using Web GUI, another way is using ${owncloud}/occ command as described in the document.  Both works fine.  But before doing it, you might be better checking if your system already have "smbclient" command (from Samba3 package, etc) and PHP-FTP extension.  Either of these are missing, ownCloud shows warning messages on the admin screen.
  2. Compose "data/mount.json" file with a text editor.  My setting was like following:
{
  "user": {
    "tkamada": {
      "\/$user\/files\/Musics": {
        "class": "\\OC\\Files\\Storage\\Local",
        "options":  { "datadir": "\/Volumes\/HDD\/Musics" },
        "priority": 150
      }
    }
  }
}
The property "\/$user\/files\/foo" is a mount point of user's (in this case, "tkamada") ownCloud data folder, and the value of the other property "datadir" in "options" property is a real local directory path that you want to show.  In this case, it is an external drive mounted on the Mac as "/Volumes/HDD", which have a subfolder "Musics".

After saving your configuration file,  Reload the screen of ownCloud's Web app (or mobile app), Then you will see the "Musics" folder aligned with original "Documents" and "Photos" folders.

The GUI might be available right after procedure 1: activating external storage app,  Go "admin" screen, and try put "/" letter at the setting placeholder of external storage.  If you are lucky, you could choose one of supported external storages with selection menu.


前のエントリで書いたシンボリックリンクの方法以外に、外部フォルダその他各種ファイル共有をマウントする方法について書かれたドキュメントを発見しました。

「外部ストレージ」サポートはエンタープライズ版のみ、という目次になっていますが、読んでみるとGUI設定に関する説明のみであって(画面がオープンソース版と異なる)、手で設定ファイルを書く場合の文書は別のところにありました。試してみると、オープンソース版でもこの機能は動くようです。

また、運が良ければGUIからの設定も可能なようですが、どちらの場合も、管理画面(個人設定画面ではない)で作業をした場合のようです。不用意に個人設定をいじると設定が消滅し、最初からやりなおしになることがあるようです。

先に、設定ファイルを手書きする場合を述べますが、「外部ストレージ」サポートで、依存するものが足りずに管理画面に警告が出る状態の場合は、のちの設定で、この機能が停止に陥る場合があるようなので、smbclientコマンド(Samba3パッケージなど)とPHPのFTP拡張が入っていることを確認しておいたほうが無難かと思います。

設定ファイルを書くまでの手順はドキュメント「Configuring external storage (Configuration File)」にありますが、今回はローカルにあるディレクトリをマウントする場合に限って書いておきます。SMBやGoogle Drive, Dropbox等の設定は、ドキュメントに沿ってください。

以下、やってみた手順です。
  1. Web画面左上のアプリ追加「+」ボタンから、「無効なアプリ」にある、「External storage support」を「有効にする」ボタンを押します。このあとWebのホーム画面に戻ると、「ファイル」画面の左下に「外部ストレージ」が追加されます。これをクリックすると、「個人設定で追加できます」と言われますが、画面右上の自分のユーザ名メニューから「個人」を選んでいき、設定画面に追加された「外部ストレージ」GUIは、どこをクリックしても何も操作できませんでした。何度か試してみて、個人設定にいきなり入るのは避けたほうがよいようなので、ひとまず「クリックしない」方向で作業を進めるのがよいと思います。
  2. 次に、データ置き場である「data」フォルダの直下に、「mount.json」設定ファイルを作ります。名前の通り、JSON形式で記述します。例えば、/Volumes/HDD/Musics という外部HDD以下の音楽ライブラリを、"Musics"という名前で並べたければ、data/mount.jsonファイルの内容として、以下のように書くことになります。
{
  "user": {
    "tkamada": {
      "\/$user\/files\/Musics": {
        "class": "\\OC\\Files\\Storage\\Local",
        "options":  { "datadir": "\/Volumes\/HDD\/Musics" },
        "priority": 150
      }
    }
  }
}
トップレベルには、「group」「user」「特定ユーザ名(登録した人)」を書くことができるようです。それぞれ、登録したグループ、ユーザ、個別ユーザ、という意味に対応します。

今回は、「user」の下に自分のユーザ名を置くことにしました。

「user」セカンドレベルには、「all」あるいは特定ユーザ名を置くことができるようです。そこで、自分のユーザ名である"tkamada"を置きました。

その下は、外部ストレージの種類によって書き方がそれぞれあるようです。ローカルの場合は、まず、ownCloud側で見せたい場所をプロパティにして、その値として、マウント元の設定を書いていくようです。

"\/$user\/files"は、ownCloudの自分のホームディレクトリです。よって、"\/$user\/files\/Musics"と書けば、ホームディレクトリ直下のMusicsフォルダとして見せる、ということになります。

以下、値として3つのプロパティを持つオブジェクトを書くことになります。

"class": "\\OC\\Files\\Storage\\Local",

は、ローカルの場合の決め打ちです。PHPのクラス階層に相当するようです。

"options": { "datadir": "マウント元のフルパス" },

ですが、ローカルの場合、オプションは"datadir"のみということです。ここに、PHPのフルパスでマウント元を書きます。Windowsの場合、ドライブ名がどうなるか知らないので、PHPの仕様にしたがって書いてみてください。

"priority": 150

は、マウントの優先度を決める値とのことで、デフォルトは100で、大きいほど優先度が高くなるそうです。今回はよくわからないので、ドキュメントのサンプル値のままにしておきました。

以上で、Web画面を再読み込みすれば、設定が反映されてホーム画面に外部ストレージがマウントされている様子がわかると思います。ただし、内容が反映されるのは、データベースにすべてのファイルが登録されてからになるので、マウント元のライブラリが大きい(ファイルがたくさんある)場合は、しばらくかかります。

この先については条件を追い込んでいないのですが、管理画面に入ると、「外部ストレージ」という項目が追加されていて、GUI操作ができるようです。ひとまず、そのすぐ下にある「ユーザの外部ストレージを有効にする」のチェックを入れておくとよさそうです。この状態でGUIに設定を入力すれば、「mount.json」にも新しい設定内容が反映されるようです。

ひとまず以上ですが、これはただ、「やってみたらできた」というだけでして、無保証です。開発側の主張は「外部ストレージサポートはエンタープライズ版のみ」ということなので、読まれて試されるとしても、営業妨害にならないよう穏便に進められるのがよいと思います。

2015年12月14日月曜日

OwnCloud 8でシンボリックリンクを有効にする方法

Simple Solution:

Comment out lines 343-345 in ${owncloud}/3rdparty/league/flysystem/src/Adapter/Local.php
that check if the file is link or not.  Please see following Japanese description part if you want to see what is the code regarding to.

Then, you will re-activate the function for following symbolic link within your local data folder in ownCloud 8.2.1.

Only those three lines are the part for blocking traversal of {sym,hard}links in current implementation.


やってみたらできたのでご報告。

OwnCloud 7までは、利用者の共有領域からシンボリックリンクで外部ディスクのフォルダやファイルを指してもデータベースに登録できたのですが、OwnCloudでは「禁止」となりました。

参照:ownCloud Does Not Follow Symlinks (ownCloud 8.0 Release Note)
ownCloud’s file scanner does not follow symlinks, which could lead to infinite loops. To avoid this do not use soft or hard links in your ownCloud data directory.
シンボリックリンクは適当に張っていくと無意識にループを作ってしまうことがあり、そんな状態のファイルシステムをたどってデータベースにファイル登録する作業をかけるとまずいという意図はよくわかります。でもそれはそれで使い勝手がよろしくない。

検索してみるといくつか質問があり、公式フォーラムでは、逆にライブラリ本体をownCloudの管理下に置いて、他のアプリ用に通常の場所からシンボリックリンク張って使ってますよという話が出ていたりするわけです。

しかし、外付けの大容量HDDに整理したライブラリがあるのに、そこにownCloud本体を置いて、data/${ユーザ名}/files以下に移動するというのもどうなのかと思って調べてみました。ちなみに、この場合はWebサーバ側の設定で外付けHDDに置いたownCloudをrootに設定するとか、Webサーバから見える適当な場所にシンボリックリンクを貼るとかすることになります。

それで、ownCloud 8では外部のクラウドと連携してownCloud側でまとめるようなアプリの実現に、PHPライブラリのLeague\Flysystemを最初から内蔵することで対応しておりました。Amazon S3, Dropbox, SFTP, WebDAV, Azureなど数多くの外部サービスをローカルファイルと同様のAPIでアクセスする設計であります。なんか、既存のDropBox, AWS, Google Drive, SMB対応とかぶってるような気がしないでもないですが、徐々に統合されていくのでしょうか。

FlysystemにおけるローカルファイルのモジュールはLOCALでありまして、ドキュメントに「ルートからのパスの一貫性を破壊するからリンクはサポートしない」ということが宣言されており、結局それをownCloud 8が引き継いでいるのが、シンボリックリンク非対応の真相でありました。逆に、ownCloud側の${owncloud}/lib/private/files/storage/local.phpではリンクの場合リンク先のパスを調べ直す処理が残っていて、ownCloudが積極的にリンクを排除することを現状ではやっていないようです。

ownCloud同梱のFlysystemでは、

${owncloud}/3rdparty/league/flysystem/src/Adapter/Local.php

がLOCALファイルシステムの実装でして、343〜345行目あたり、normalizeFileInfo(SplFileInfo $file)メソッドの先頭の、
if ($file->isLink()) {
    throw NotSupportedException::forLink($file);
}
の3行が該当部分という、わりとあっさりな結論。このforLink()メソッドはただエラーメッセージを含む例外オブジェクトを返すだけの簡単な処理であります。びっくり。

この状態でownCloud 8.2.1を初期設定からやり直すと、あらびっくり、シンボリックリンク追跡機能が復活です。しっかり、外付けHDDに構築したライブラリがモバイルアプリから参照でき、ダウンロードして再生することができました。

あんまりにもあんまりなので、遠からず、しっかりリンクを排除するよう改善されると思いますが、検索でいろいろ質問が出る割には簡単な話だったので、ご報告する次第です。

いや、これはあれですか、公然の秘密ってやつなんでしょうか。だとしたら野暮な話でありました。

2015年11月17日火曜日

SSL LabsでA+評価をもらえるWebのTLS設定

職場で公開している、とあるWebサーバのCA証明書をようやく入手できたので、TLS対応しました。

いまどきはどんな設定するんだろうと思い検索すると、「SSL Labsで検査する」というのがひとつの指標のようです。

よい検査結果を得るためには、というか、これだけサイバー攻撃が激しくなっているいまを生き抜くために、2015年秋現在では最低でも使えるプロトコルはTLSv1以上にするのはもちろんのこと、暗号の組も現時点で弱いことが確定したものは排除しなければならず、さらに最近見つかったDHのlogjam脆弱性にも対応しなければいけません。

まず暗号の組は

Guide to Deploying Deffie-Hellman for TLS

で。とても長くなってますが、そういう時代なんでしょう。

このなかで、dhparam.pemファイル作成については

logjam対策でやったことまとめ

が日本語なのでわかりやすいと思います(といっても、opensslで1行コマンドですが)。

ここまでやって「B評価」。レポートを読むと、セッション関係の設定を改めなければならないようです。Nginxの場合ですが、ssl_session_cacheをきちんと設定するのがよいようです。ここまででひとまず「A評価」。レポートを見ると、「HSTS Preload」という項目が無効らしいことが気になります。

つまり、80番につないできたら443に飛ばす設定をして、HSTS Preloadというらしいですが、httpスキームを入れてもブラウザが80番でなく、443番に勝手につなぎにいく相手を並べたJSONファイルがネット上にあって、それに関連する設定を加えるのと、ブラウザが随時読みに行くそのJSONファイルに登録してもらう作業が必要なようです。

もろもろありますが、「とりあえずNginxならこう書いておけ」という例が

Nginx Configuration for HSTS Preload

というページにありました。ただ、resolverに8.8.8.8と4.4.4.4を設定しているのはやめるべきだと思う。

ひとまずここまでやると、「A+評価」になりました。うれしいです。

SSL LabsさんでA+評価いただきました

とはいえ、ブラウザがHSTS Preloadしないよという行は残りますので、HSTS Preloadファイルへの追加登録依頼をしなければいけないわけですが、それは

HSTS Preloadを導入しよう

というブログエントリにしたがって、Webフォームから入力することになるようです。このとき、www.ではじまるサイトが必要なようですが、当方まだできていないので、これは後日対応しようと思います。

2015年11月15日日曜日

NTTフレッツ光のCTU設定変更(結局フレッツ光ネクストに契約切り替えたので意味なしエントリになりました:2015-12-15)

(追記:2015-12-15)フレッツ光プレミアムは新規契約打ち切り、フレッツ光ネクストというCTUいらない子な契約に切り替えていくようで、自宅もそうしたらとても快適になりました。

それから、以下の記述は10年ほど前に契約した当時の、住友電工のCTUにのみ該当するようで、クレーム後いったん予防交換といって工事屋さんが置いていった日立のCTUでは、デフォルトのパケットフィルタ設定は入っていないようでした。

CTUにつないでいたBuffaloのWi-Fiルータはフレッツ光のPPPoEリンク設定がデフォルトで入っていたようで、ほとんど何も考えずにISPのログイン設定するだけで終わったので、フレッツな人はみんなネクストに契約切り替えたほうがいいと思います。うちは集合住宅で光ケーブルが部屋まできていないので上限100Mbpsのままですけど、いままでがひどすぎたので劇的な改善であります。

工事料金無料、契約は「隼」(最大1Gbps)ではないので料金同じ、2年縛り割引もそのまま引き継ぐということで、特にこちらから申込書を書くこともなく、ただ契約変更通知が郵送されてきただけでした。工事屋さんは管理人室内の終端ボックスの配線付け替えとCTUの引取り、データリンクの確認と伝票の印刷だけしてお帰りになられました。簡単。

ひかり電話とかフレッツ・テレビ(スカパーHDとかがフレッツIPv6網で観られる)を契約するとそういう機能つきのNTTご提供ルータに交換するみたいですが、うちはシンプルにやっております。


自宅はNTT西のフレッツ光を使っていますが、どうも最近つながらない、よく切れるという症状で悩んでおりました。

困るのは、SSH接続がブツブツ切れることでして、これではサーバのメンテナンスもできません。コンパイル途中で切れるとか、インデックス作成中に切れるとかすると、shellが子プロセスもろとも落ちるので、ちっとも作業が進みません。

NTT西に電話して、機器や配線の電気的な点検を依頼するとか、週末なので問い合わせフォームしかなかったけれど某ISPのカスタマサポートに通信制限状況の問い合わせを投げてみるとかしてみましたが、そうしている間、瞬間的にIPアドレス重複のメッセージが現れたのをみつけて、どうもDHCPサーバになっているCTU(NTT用語で要するにPPPoEルータ)が怪しいと思い、設定を見なおしてみました。

まず、自分のMacのIPアドレスが使われるのはたまらないので、MACアドレス指定でスタティックなIPアドレス設定に変更。

そのあと、ログをみるわけですが、「不正アクセスログ」という画面ぐらいしかまともに時系列のログがないので開いてみたところ、「つながらない」と思っていた相手への接続をCTUが切断していました。現員は「SPIによる破棄」。へえ、そんな立派なものがと思いつつ、「なんで捨てるんだよ」という怒りにも似たやるせなさが。

検索すると、CTUのWAN側IPv4アドレスが「123から125の間で始まる場合」、つまり上から8bitが123-125のブロックの場合、一部のIPアドレスに対するパケット送信をSPIが破棄するという問題がある、という古い記事(しばらく前にファームウェアの更新があったけれど、それより古いという意味)がいくつか見つかり、「ファイアーウォールをオフにしてください」と書かれているサイトが複数ありました。

CTUの設定画面上、たしかにオフが誰でもわかる選択項目だけれど、それは乱暴ではないかと思いつつ。
CTUログイン直後の画面左にファイアウォール設定項目がある

とはいえ、「制限なし」は乱暴ではないかと思う。SPIは「詳細設定」のなか

ということで、SYN Flooding対策にはSPIほしい気もするけどどうなんだと思いながらも、現実にいまつながらない相手があり、家人のスマホらしきIPアドレスでも破棄されているので、これは手元のMacだけの問題ではないと思い、SPIを停止して様子をみることにしました。

ただ、SPIを止めるためには、「ファイアウォール詳細設定」という別立ての項目を設定して、とパケットフィルタリングのルールを自分で書く画面と同じところに入らなければならないわけです。
「詳細設定」画面の上にSPIの項目があるけれど、「編集」を押さなければならない仕様

ここでようやく選択できる。OKで前の画面に戻る
こうなると、普通のルータ同様に細かくルールを書かないとフィルタリングなしになるような気がするのですが、結論からいうとそうでもないようです。でも、ルールの書き方の規則がわかったので、以下続けます。

ルールは先頭(若い番号)から順に評価されます。なので、「全部閉じて開くものを指定する」か「全部開いておき、閉じるものを指定する」か、どちらかを最初に決めなければなりません。

それで、後者を選んだ場合、デフォルトは「全部閉じている」になります。よって、先頭に、全てを「許可」するルールを置かなければなりません。ルール番号は1がいいでしょうか。「IPバージョン」に「IPv4・IPv6」を選び、「プロトコル」を「すべてのプロトコル」に変更するのを忘れないでください。初期値は「IPv6」「TCP」です。

そのあと、Windowsのファイル共有関係の137-139と445を書いておけば十分なようです。念のため、以下の図では53/TCPと53/UDP(DNS)を拒否するルールを書いていますが、「不正アクセスログ」をみると、特にルールを書かなくても「NATによる破棄」を理由として、たいていの試みは失敗するような動作をするようです。少なくともWell Knownなポートに関してはSYNの時点で捨ててくれますし、そうでない怪しい443(HTTPS)からの接続とかは、宛先ポートによらずESTABLISHEDのところで捨ててくれます。したがって、ルールがなくてもそれなりにうまく制限してくれるのかもしれない。

しかし、443や53から接続する攻撃があるのに驚きました。ルールの書き間違いを期待しているんでしょうか。あるいは、送信元が80や443だと通してしまう誤ったフィルタが設定された商品があるんでしょうか。
特定のポートを制限するなら、先頭に「全部通過する」ルールを置く必要があるので注意
いずれにせよセッション有効時間が短いので、調べ物に時間をかけていると、せっかく入力したルールを保存できないまま、最初からやりなおしになるので、最小限の設定からはじめるのがいいと思います。

この画面には「戻る」ボタンしかありませんが、変更内容はメモリに保持されています。これを保存するには、「戻る」で現れたトップ画面の画面左にある「設定反映」ボタンを押さなければなりません。すると、いったん確認画面を経由したあと、再起動が必要な選択をしたから再起動してくださいというメッセージとともに、「再起動」ボタンが配置された画面に遷移します。再起動は1分ぐらいだと思います。ときどき適当なサイトにpingでも打ちながら待っていると、そのうち反応があります。いつまでたってもunreachableな場合は、おそらく1番ルールの「最初にすべての通信を許可する」ときに「すべてのプロトコル」を選ぶのを忘れていて、ICMPが通らなくなっています。

あとはお好みで調整してください。再起動の時点で「不正アクセスログ」を開くと、早くも多数の怪しいパケットを捨てたことがみてとれます。

ひとまずこれで様子見です。

2015年11月5日木曜日

Mac OS XのKeychainに対応するOpenSSHパッチがGiHubにありました

以前、Mac OS Xのキーチェーンアクセスに対応したOpenSSHのパッチについてのエントリを書きました。

El Capitanになり、入っていたMacPortsの全リコンパイルをなんとか終えてしばらくしてから、port -uv upgrade outdatedしたら、MacPortsのOpenSSHが7.1p1になりました。

Homebrewのほうはどうだろうと思ったら、メンテナンスされているパッチのリポジトリをGitHubで見つけました。

https://github.com/zoltansx/openssh-keychain

Homebrewの場合は、dups/opensshのkegをeditしろとのことで、追加すべきコードを含め、手順がReadme.mdに書かれております。

気になる方は、上記URLを参照してみてはいかがでしょうか。

当方で試してみたところ、無事7.0p1がコンパイルでき、キーチェーンアクセスに保存されたpassphraseを用いてssh接続できました。ありがたや。

2015年11月1日日曜日

Yosemite以後のMac OSでJavaインストールのダイアログを消すにはJDKを入れる

そのまんまですが、El CapitanでJava6を入れないで、やむなくOracle JREを入れたけれど、いつまでもインストールしろとうるさいので調べたら、こんなFAQがOracleにありました。

After I updated to Mac OS X 10.10 (Yosemite), why am I told to install Java after I already installed the latest Java?

回答は、「full JDKを入れろ」でありました。Java SEですね。見つかりにくいですが、たぶんこのへんからたどるとよいのでは。

たしかに、JREだけだと空のディレクトリがあちこちにあって、なんか変だなと思っておりました。環境変数JAVA_HOMEを設定すればjavaコマンドは動きますが、ダイアログはシステムが出しているわけで、ユーザ側の環境変数は関係ないはずで。

それで、Java SE入れて再起動すると、あたりまえですが特に環境変数JAVA_HOMEを設定しなくてもOracle Java 8が動きました。まあ、しのごの考えないで、さっさと再起動するのがいいような気がします。

一方、検索してみると、El Capitanのrootlessを解除してApple Java 6を入れる手順が説明されていますが、気持ちはわかりますがやめたほうがいいんではないかと思う次第。

AppleのJava 6サポートはEl Capitanが最後なんだそうです。Java 6依存のコードは、Oracle Javaの新しいコード(Java 8とか)で警告なくコンパイルできるよう、リファクタリングしなければいけませんね。いろいろめんどくさいですが。