2017/11/16(木) [n年前の日記]
#1 [raspberrypi][love2d] love2dが音を鳴らしてくれない件でまだハマってる
raspbian jessie までは pulseaudio が標準で入ってたけど、raspbian stretch は pulseaudio を使わなくなった、という話が気になるわけで。そのあたりが絡んでいて、love2d の音が鳴らないのではないか、と。
Raspberry Pi Zero W + raspbian stretch 上で、pulseaudio関係のパッケージをアンインストールしてから love2d をビルドしてみた。これで音が鳴るだろうか…。
残ってるのは以下。
love2dをビルド。1時間半かかった。
試してみたが、ダメだった。相変わらず音を出そうとすると「Illegal instruction」と表示される。
Raspberry Pi Zero W + raspbian stretch 上で、pulseaudio関係のパッケージをアンインストールしてから love2d をビルドしてみた。これで音が鳴るだろうか…。
◎ pulseaudio関係をアンインストール。 :
sudo aptitude purge pulseaudio libpulse-dev pulseaudio-utils libsox-fmt-pulsesudo aptitude purge hoge で、設定も含めてパッケージをアンインストールできる。
残ってるのは以下。
$ sudo aptitude search pulse | grep -E '^i' i A libpulse-mainloop-glib0 - PulseAudio client libraries (glib support) i A libpulse0 - PulseAudio client librariesvlc等が libpulse0 を必要とするらしいので残しておいた。
love2dをビルド。1時間半かかった。
試してみたが、ダメだった。相変わらず音を出そうとすると「Illegal instruction」と表示される。
◎ 「Illegal instruction」が気になる。 :
「Illegal instruction」というメッセージでググってるうちに気になる話を見かけた。armv7l の命令を armv6l で実行しようとした場合、そういうエラーメッセージを出す場合もあるそうで。
_raspberry pi - Illegal instructionというエラーについて - スタック・オーバーフロー
もしかすると、raspbian stretch の SDL2 を作る際に必要になるパッケージの中に ―― それも音関係を処理するパッケージの中に、ARMv7 が載ってる Raspberry Pi2 / Pi3 を前提にして作られてしまったパッケージが存在していて、それを ARMv6 の Raspberry Pi Zero W 上で動かそうとした、からエラーが出る、という可能性はないだろうか。raspbian jessie の頃は ARMv6のことも考えて作られてたけど、raspbian stretch は、まだそこまで手が回ってない、とか。
だとすれば、ARMv7 が載ってる Raspberry Pi3上で同じ作業をすると、そちらではすんなり動く・音が鳴る、かもしれない。
_raspberry pi - Illegal instructionというエラーについて - スタック・オーバーフロー
もしかすると、raspbian stretch の SDL2 を作る際に必要になるパッケージの中に ―― それも音関係を処理するパッケージの中に、ARMv7 が載ってる Raspberry Pi2 / Pi3 を前提にして作られてしまったパッケージが存在していて、それを ARMv6 の Raspberry Pi Zero W 上で動かそうとした、からエラーが出る、という可能性はないだろうか。raspbian jessie の頃は ARMv6のことも考えて作られてたけど、raspbian stretch は、まだそこまで手が回ってない、とか。
だとすれば、ARMv7 が載ってる Raspberry Pi3上で同じ作業をすると、そちらではすんなり動く・音が鳴る、かもしれない。
◎ Raspberry Pi3 で love2d の動作を試してみる。 :
手持ちの Raspberry Pi3 + raspbian stretch + love2d で、音が鳴るか試してみたり。
ますは公式リポジトリ版のパッケージをインストール。
GL Driver (Fake DKMS) を有効化。公式リポジトリ版の SDL2関係は OpenGL を使うオプションでビルドされているらしいので。
love2d で音が出るか試してみた。音が鳴った。相変わらず、jack server がどうこうとメッセージが出るし、なんだかワンテンポ遅れてから鳴ってるけど、それでも一応音は鳴った。
ということは、raspbian stretch の公式リポジトリにアップされてる SDL2 + love2d は、必ずしも音が鳴らない、というわけではないということかな…。
しかし、何故か途中で音が鳴らなくなる。
ふと、Raspberry Pi3 に、pulseaudio が入っていて、動いてることに気づいた。おそらく gosu を動かす際にインストールしたのではないかな…。
pulseaudio --kill としてから love2d を動かすと、音がずっと鳴ってくれるようになった。ただ、love2d を動かすと、その時点で pulseaudio が起動してしまう模様。love2d を終了させてから確認すると、また pulseaudio が復活してる。
現状、pulseaudio と jack 関係でインストールされていたのは以下。
pulseaudio をアンインストールしてみる。設定まで含めて削除。
つまり、raspbian stretch + love2d だから音が鳴らない、というわけではないらしい。少なくとも、Raspberry Pi3 + raspbian stretch + love2d なら、音が鳴る。ただし、Raspberry Pi Zero W + raspbian stretch + love2d では、音が鳴らない。
となると…。これはもしかすると、raspbian stretch の公式リポジトリには、ARMv7を前提にしたパッケージが色々アップロードされていて、ARMv6の Raspberry Pi Zero W にインストールしてしまうと不具合が起きる、ということになるのだろうか。
本当にそうかな? 実は Raspberry Pi Zero W も、raspbian stretch を入れてすぐに love2d を動かせば、音が鳴ってくれたりしないだろうか。試してみるしかないかな…。
ますは公式リポジトリ版のパッケージをインストール。
$ sudo aptitude install love 以下の新規パッケージがインストールされます: binfmt-support{a} liballegro4.4{a} libdevil1c2{a} libluajit-5.1-2{a} love
GL Driver (Fake DKMS) を有効化。公式リポジトリ版の SDL2関係は OpenGL を使うオプションでビルドされているらしいので。
love2d で音が出るか試してみた。音が鳴った。相変わらず、jack server がどうこうとメッセージが出るし、なんだかワンテンポ遅れてから鳴ってるけど、それでも一応音は鳴った。
ということは、raspbian stretch の公式リポジトリにアップされてる SDL2 + love2d は、必ずしも音が鳴らない、というわけではないということかな…。
しかし、何故か途中で音が鳴らなくなる。
ふと、Raspberry Pi3 に、pulseaudio が入っていて、動いてることに気づいた。おそらく gosu を動かす際にインストールしたのではないかな…。
$ ps x | grep pulse 1536 ? S<l 0:01 /usr/bin/pulseaudio --start --log-target=syslog
pulseaudio --kill としてから love2d を動かすと、音がずっと鳴ってくれるようになった。ただ、love2d を動かすと、その時点で pulseaudio が起動してしまう模様。love2d を終了させてから確認すると、また pulseaudio が復活してる。
現状、pulseaudio と jack 関係でインストールされていたのは以下。
$ sudo aptitude search pulse | grep -E '^i' i A libpulse-dev - PulseAudio client development headers and libraries i A libpulse-mainloop-glib0 - PulseAudio client libraries (glib support) i A libpulse0 - PulseAudio client libraries i A libpulsedsp - PulseAudio OSS pre-load library i pulseaudio - PulseAudio sound server i A pulseaudio-utils - Command line tools for the PulseAudio sound server $ sudo aptitude search jack | grep -E '^i' i A jackd - JACK Audio Connection Kit (default server package) i A jackd2 - JACK Audio Connection Kit (server and example clients) i A libjack-jackd2-0 - JACK Audio Connection Kit (libraries) i A qjackctl - User interface for controlling the JACK sound server
pulseaudio をアンインストールしてみる。設定まで含めて削除。
sudo aptitude purge pulseaudioこの状態でも love2d の音は鳴る。しかも、pulseaudio が入っていた時より音が鳴り始めるまでの反応が全然早い。
つまり、raspbian stretch + love2d だから音が鳴らない、というわけではないらしい。少なくとも、Raspberry Pi3 + raspbian stretch + love2d なら、音が鳴る。ただし、Raspberry Pi Zero W + raspbian stretch + love2d では、音が鳴らない。
となると…。これはもしかすると、raspbian stretch の公式リポジトリには、ARMv7を前提にしたパッケージが色々アップロードされていて、ARMv6の Raspberry Pi Zero W にインストールしてしまうと不具合が起きる、ということになるのだろうか。
本当にそうかな? 実は Raspberry Pi Zero W も、raspbian stretch を入れてすぐに love2d を動かせば、音が鳴ってくれたりしないだろうか。試してみるしかないかな…。
[ ツッコむ ]
#2 [firefox] Firefox 57が出たらしい
今までの拡張(アドオン)が使えなくなる、Firefox 57 だか Firefox Quantum だかが、とうとう公開されてしまったらしい。
Firefoxにたくさん拡張を入れて便利に使ってるつもりになってた自分としては、コレは困った…。どうしよう…。拡張が使えない Firefox なんて、利用する意味が無い…。
いやまあ、Webなんたらで書き直された拡張なら動くらしいけど。現状ではほとんど書き直されてないし、「全部書き直せって? だったら拡張の開発なんてやめるわ」と言い出した作者さんもチラホラ居るし。
Firefox ESR版を使えば従来の拡張も動くらしいけど、半年後にはESR版も Firefox 57 と同じ状態になるらしいし。Pale Moon、Waterfoxという派生ブラウザなら従来の拡張も動くという話があるけど、完全に互換性があるわけでもなさそうで。困った。
どうせ使いづらくなるなら、別ブラウザへの移行を、例えば Google Chrome へ移行することをちゃんと検討し始めたほうがいいのだろうか。うーん。
ちなみにFirefox ESR ってのは、法人向けとして、最新版よりちょっと古いバージョンの、セキュリティ面だけを修正して公開していくスタンスの Firefox、という説明で合ってるのかな。ベースは古い版なので、従来の拡張もまだ動くわけで。
Firefoxにたくさん拡張を入れて便利に使ってるつもりになってた自分としては、コレは困った…。どうしよう…。拡張が使えない Firefox なんて、利用する意味が無い…。
いやまあ、Webなんたらで書き直された拡張なら動くらしいけど。現状ではほとんど書き直されてないし、「全部書き直せって? だったら拡張の開発なんてやめるわ」と言い出した作者さんもチラホラ居るし。
Firefox ESR版を使えば従来の拡張も動くらしいけど、半年後にはESR版も Firefox 57 と同じ状態になるらしいし。Pale Moon、Waterfoxという派生ブラウザなら従来の拡張も動くという話があるけど、完全に互換性があるわけでもなさそうで。困った。
どうせ使いづらくなるなら、別ブラウザへの移行を、例えば Google Chrome へ移行することをちゃんと検討し始めたほうがいいのだろうか。うーん。
ちなみにFirefox ESR ってのは、法人向けとして、最新版よりちょっと古いバージョンの、セキュリティ面だけを修正して公開していくスタンスの Firefox、という説明で合ってるのかな。ベースは古い版なので、従来の拡張もまだ動くわけで。
◎ storageフォルダって何だろう。 :
とりあえず Firefox の Profilesフォルダをバックアップしておこう…と思ったら、1.38GBもある。なんでや。
中のファイルサイズを一つ一つ確認していったら、storageフォルダが1GBほどのサイズ。何だろう。このフォルダは…。
中身を眺めると…。どうも Unityで作成された何かしらをブラウザ上で動かそうとした場合に、件の場所にデータ等が格納されてるっぽいなと。ソレ以外にも色々入ってるけど。コレは勝手に削除してもいいのだろうか。ダメなのだろうか。ググってもそれらしい情報が見つからない…。
中のファイルサイズを一つ一つ確認していったら、storageフォルダが1GBほどのサイズ。何だろう。このフォルダは…。
中身を眺めると…。どうも Unityで作成された何かしらをブラウザ上で動かそうとした場合に、件の場所にデータ等が格納されてるっぽいなと。ソレ以外にも色々入ってるけど。コレは勝手に削除してもいいのだろうか。ダメなのだろうか。ググってもそれらしい情報が見つからない…。
◎ Firefox ESRをインストールしてみた。 :
とりあえず、Firefox ESR をインストールしてみたのだけど。
起動しようとしても、いつまで経ってもウインドウが表示されない。仕方ないのでタスクマネージャからプロセスを殺してみたけど…。再度起動させたら、ウインドウは表示されたものの、ブックマークが全部消えた…。
バックアップしておいたブックマークの .json を渡して復元しようとしてみたら、CPUを1コア全部使って何か処理をしてるものの、そこから先に進まない。もしかして、Firefox ESR は52ベースで、今まで使ってたのは56ベースだから、処理できない .json になっているのだろうか…。
htmlでもバックアップしておいたので、そちらからならインポートできた。
と思ったら Firefox Sync が動き始めたようで、ブックマークの中身がグチャグチャに。しかもおそらく Firefox Sync がツッコんできたブックマークの内容が妙に古い。拡張も少しずつ入り始めたけど、これまた内容が古い。
Firefox Sync…酷いな…。たぶんある時期から同期ができてなかったんだな…。ダメダメなサービスだ…。いや、もしかすると Firefox 52時点の内容を同期しようとしたのだろうか。
最初の起動で固まってたというか処理が戻ってこなかったのも、Firefox Sync が必死に処理をしていたから、だろうか。たぶんこの機能、大量のブックマークやアドオンは想定してないのではないかなあ…。いや、Firefoxのブックマーク機能自体が、大量のブックマーク数を想定してなさそうだけど。整理してるうちにどんどん重くなっていくし…。
起動しようとしても、いつまで経ってもウインドウが表示されない。仕方ないのでタスクマネージャからプロセスを殺してみたけど…。再度起動させたら、ウインドウは表示されたものの、ブックマークが全部消えた…。
バックアップしておいたブックマークの .json を渡して復元しようとしてみたら、CPUを1コア全部使って何か処理をしてるものの、そこから先に進まない。もしかして、Firefox ESR は52ベースで、今まで使ってたのは56ベースだから、処理できない .json になっているのだろうか…。
htmlでもバックアップしておいたので、そちらからならインポートできた。
と思ったら Firefox Sync が動き始めたようで、ブックマークの中身がグチャグチャに。しかもおそらく Firefox Sync がツッコんできたブックマークの内容が妙に古い。拡張も少しずつ入り始めたけど、これまた内容が古い。
Firefox Sync…酷いな…。たぶんある時期から同期ができてなかったんだな…。ダメダメなサービスだ…。いや、もしかすると Firefox 52時点の内容を同期しようとしたのだろうか。
最初の起動で固まってたというか処理が戻ってこなかったのも、Firefox Sync が必死に処理をしていたから、だろうか。たぶんこの機能、大量のブックマークやアドオンは想定してないのではないかなあ…。いや、Firefoxのブックマーク機能自体が、大量のブックマーク数を想定してなさそうだけど。整理してるうちにどんどん重くなっていくし…。
[ ツッコむ ]
以上、1 日分です。