teamikl / ninjam-chat

NINJAM Chat gateway
http://teamikl.github.io/ninjam-chat
2 stars 1 forks source link

ninjam-botのウィンドウが表示されなくなってしまいました。 #35

Closed NakajimaYusuke closed 8 years ago

NakajimaYusuke commented 8 years ago

毎回お手数かけてしまってすみません。 おそらく先々月くらいからninjam-botのウィンドウが立ち上がらなくなっており、 ちょっと原因がよくわかりませんでした。直し方わかりますでしょうか?

今まで、ninjamchat2.shを実行するとチャット内容の表示される白いウィンドウが開いていたのですが、 いつの間にかそれが出なくなっており、黒背景のコマンドライン画面にこのようなエラーっぽい表示が出ておりました。

↓ninjamchat2.shのエラー文

nakajimasrv@nakajimasrv-EP43-UD3L:~$ cd Desktop
nakajimasrv@nakajimasrv-EP43-UD3L:~/Desktop$ ./ninjamchat2.sh
./ninjamchat2.sh: 2 行: cd: OLDPWD が設定されていません
2015-12-26 20:22:51,731 - bot.py - INFO - KeepAlive timer started (interval 30)
1E01
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/autobahn/asyncio/websocket.py", line 37, in <module>
    from asyncio.tasks import iscoroutine
ImportError: cannot import name 'iscoroutine'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "bot.py", line 634, in <module>
    main()
  File "bot.py", line 614, in main
    import ws_chat_client
  File "/home/nakajimasrv/Desktop/ninjam-chat/src/ninjam-bot/ws_chat_client.py", line 8, in <module>
    from autobahn.asyncio.websocket import (
  File "/usr/local/lib/python3.4/dist-packages/autobahn/asyncio/websocket.py", line 42, in <module>
    import trollius as asyncio
ImportError: No module named 'trollius'
nakajimasrv@nakajimasrv-EP43-UD3L:~/Desktop$ 

↓ninjamchat2.shの内容

#!/bin/sh
cd -
#cd /home/nakajimasrv/Desktop/ninjam-chat/
#npm run ninjam-bot
cd /home/nakajimasrv/Desktop/ninjam-chat/src/ninjam-bot/
./start-bot.sh
teamikl commented 8 years ago

Python のバージョンが、自動メンテナンス等で更新された為、 利用しているライブラリもそれに追従して更新する必要が出てきたようです。 ライブラリのアップグレードを試してみてください。

 $ sudo pip3 install -U autobahn

ライブラリのバージョン更新に伴い、ソースコードの変更も必要になるかもしれませんが、 取り急ぎ↑を試してもらって、まだ他の問題があるようならこちらでもデバッグしてみます。


この種の問題を避けるには、利用するPython等のバージョンを自動更新させず固定する方法がありますが、 コマンドひとつでインストールしていたのを、自前でソースから構築する事になるため、 環境構築が手間になります。

また、重要なセキュリティのアップデート等も自分で更新しないといけなくなるので、 きちんと保守するなら、常時そういった情報調べてないといけないといったコストがかかってきます。

ということで、運用形態としては、これまでどおり 問題が起こった時に報告してもらって修正というのがベストかなと思います。


MEMO:

ライブラリ側での類似のエラー報告 https://github.com/crossbario/autobahn-python/issues/275

teamikl commented 8 years ago

コマンドの pip3 の所は、環境に合わせて変更して下さい。 (フルパスで指定していた場合、別の場所へインストールする可能性あり)

インストール時の端末のログが残っていれば、autobahn ライブラリをインストールしたコマンドを調べ その時に使った pip3 (もしくは pip) コマンドに -U (upgrade) オプションを付けて実行します。


また、今回の端末での作業もログを取って、インストール時と同じような形式で保存しておいて下さい。 (アップデートしたライブラリのバージョン情報など、後で必要になるかもしれません)

ログ記録開始のコマンド

script ninjam-chat-upgrade-log-$(date +%Y%m%d).log

ログ記録の終了は exit もしくは、Ctrl+D です。

teamikl commented 8 years ago

EDIT: 投稿内容の ログ を、markdown 書式で色付き表示するように変更させてもらいました。

NakajimaYusuke commented 8 years ago

どうもありがとうございます! $ sudo pip3 install -U autobahn で解決してくれたようです。また同じような症状が出たらこのコマンド試してみます。 一応ログはとっておきました。

teamikl commented 8 years ago

bot動いたようですね。IRC/Webから接続確認。

また同じような症状が出たらこのコマンド試してみます。

今回のケースだと、ライブラリが対応されてたので、ライブラリのアップグレードもしくは、 再度最初から環境構築する事でも解決できましたが、次回も同じ方法で解決できるとは限りません。

不用意にライブラリを更新してしまうと、後方互換が保たれてなかった時に、 今回の件の様な不整合が他の場所で起こり得るので、 出来れば、同じような症状の場合でも報告をお願いします。

NakajimaYusuke commented 8 years ago

ありがとうございます。 今回のようにライブラリを更新することで解決する問題もあれば、 逆に不用意な更新が別の問題を招いてしまう場合もあるんですね。 また何か問題が起こったら早めに報告させて頂きます。