読者です 読者をやめる 読者になる 読者になる

へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

"ubuntu/trusty64"を入れたVagrantの仮想環境で、tracdを使ってサーバを起動してもホストOSから接続したときに落ちる問題について

$ tracd -s --port 8000 hoge

と立ち上げて、それにVagrantfileで次のように書き込んだので

config.vm.network "forwarded_port", guest: 8000, host: 4568

ブラウザ上で、http://localhost:4568に接続。
だが接続はできたものの次のようなエラーを吐いて落ちた。

Exception happened during processing of request from ('10.0.2.2', 50915)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 593, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/home/vagrant/.virtualenvs/perfect/local/lib/python2.7/site-packages/trac/web/wsgi.py", line 192, in handle_one_request
gateway.run(self.server.application)
File "/home/vagrant/.virtualenvs/perfect/local/lib/python2.7/site-packages/trac/web/wsgi.py", line 92, in run
response = application(self.environ, self._start_response)
File "/home/vagrant/.virtualenvs/perfect/local/lib/python2.7/site-packages/trac/web/standalone.py", line 91, in __call__
return self.application(environ, start_response)
File "/home/vagrant/.virtualenvs/perfect/local/lib/python2.7/site-packages/trac/web/main.py", line 396, in dispatch_request
locale.setlocale(locale.LC_ALL, environ['trac.locale'])

File "/home/vagrant/.virtualenvs/perfect/lib/python2.7/locale.py", line 579, in setlocale
return _setlocale(category, locale)
Error: unsupported locale setting

こういうエラーがでていた。赤色は僕が勝手につけた色。

trac/web/main.pyの中を見ていくと、
setlocaleがおかしいよ的な問題が発生していた。
てゆか何がおかしいかエラーメッセージの中に書いてあるよね
なんでわからなかったんだろう。

ググると、

trac - tracd server problems - Stack Overflow

この人も同じ現象が発生していたようだ。
Vagrantのせいでは無い様子っぽいことが判明。

へぇ、localeがないってそういうことかとなった。確かめてみる。

(perfect)vagrant@vagrant-ubuntu-trusty-64:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=ja_JP.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

おっ、ないぞないぞ。
ということでLC_ALLに設定しにいく。
よくわからんがそっちはここのサイトの通りにやったらうまいこと行けた

command line - How do I fix my locale issue? - Ask Ubuntu

$ sudo locale-gen ja_JP.UTF-8

とりあえずこれと

$ sudo update-locale LANG="ja_JP.UTF-8"

これをやったら動くようになった。
後者はやらなくても動くかもしれない(僕は2連続でコマンド入力したからわからん)

実際なんで動いたのかはよくわからん。謎。ミステリー。

localeについても

(perfect)vagrant@vagrant-ubuntu-trusty-64:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=ja_JP.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

未だにこれ。
んん!?

パソコンってよくわからんわ……