re:dashがインストールできなくなったので調査した
7/3 22:30追記
re:dash開発者の @arikfr さんがこの記事を読んでくれたらしく。setuptoolsが修正されるまではこの記事で紹介したワークアラウンドを入れることになったようです。
なので、これからインストールする方にはこの記事は不要なのですが、記事は自分の活動記録としてそのまま残しておきます。
まえがき
Ubuntu用のセットアップスクリプトでre:dashをインストールしようとしたらインストールできなくなってたので調べました。
使用した環境はVagrantで起動したUbuntu14.04で、Vagrant Boxはubuntu/trusty64 (virtualbox, 20160627.0.0)
, re:dashのバージョンは0.10.1.b1834
です。
検証に使用したVagrantfile
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" config.vm.network "forwarded_port", guest: 80, host: 9001 config.vm.provider "virtualbox" do |vb| vb.memory = "2048" end config.vm.provision "shell", inline: <<-SHELL sudo locale-gen ja_JP.UTF-8 SHELL end
セットアップスクリプト実行中のエラー
$ curl https://raw.githubusercontent.com/getredash/redash/master/setup/ubuntu/bootstrap.sh $ sudo bash bootstrap.sh
VMにログインし上記の様にスクリプトを実行したところ、途中は割愛しますがre:dashが依存しているモジュールを pip
でインストールするあたりでこんなエラーが出てしまいました。
Downloading/unpacking httplib2==0.9.2 (from -r requirements.txt (line 1)) Downloading httplib2-0.9.2.zip (210kB): 210kB downloaded Running setup.py (path:/tmp/pip_build_root/httplib2/setup.py) egg_info for package httplib2 Traceback (most recent call last): File "<string>", line 3, in <module> File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 14, in <module> from setuptools.extension import Extension File "/usr/local/lib/python2.7/dist-packages/setuptools/extension.py", line 11, in <module> from . import msvc File "/usr/local/lib/python2.7/dist-packages/setuptools/msvc.py", line 244, in <module> class PlatformInfo: File "/usr/local/lib/python2.7/dist-packages/setuptools/msvc.py", line 253, in PlatformInfo current_cpu = safe_env['processor_architecture'].lower() File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'processor_architecture' Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 3, in <module> File "/usr/local/lib/python2.7/dist-packages/setuptools/__init__.py", line 14, in <module> from setuptools.extension import Extension File "/usr/local/lib/python2.7/dist-packages/setuptools/extension.py", line 11, in <module> from . import msvc File "/usr/local/lib/python2.7/dist-packages/setuptools/msvc.py", line 244, in <module> class PlatformInfo: File "/usr/local/lib/python2.7/dist-packages/setuptools/msvc.py", line 253, in PlatformInfo current_cpu = safe_env['processor_architecture'].lower() File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'processor_architecture' ---------------------------------------- Cleaning up... Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_root/httplib2 Storing debug log for failure in /root/.pip/pip.log
re:dashのセットアップスクリプトでいうと以下の辺りです。
原因を考える
ちょっと前に使った時は問題なかったのですが、なぜエラーが発生するようになってしまったのでしょうか。
いろいろ調べて回ったのですが、同様の事例や解決策を見つけられなかったのでsetuptools
のリポジトリを見てみました。
リリースを見てみると、最近リリースがあったようです(2016/7/03 10時現在では8時間前)
先ほどのエラーメッセージに/usr/local/lib/python2.7/dist-packages/setuptools/msvc.py
とあったので、該当のファイルが追加されたPull Requestをみてみます。
たぶんこのあたりでなんかあるんだろうなと思ったので、セットアップスクリプトを以下のように変えて再度実行します。
@@ -29,7 +29,7 @@ apt-get -y update apt-get -y dist-upgrade apt-get install -y python-pip python-dev nginx curl build-essential pwgen -pip install -U setuptools +pip install -U setuptools==23.1.0 # redash user # TODO: check user doesn't exist yet?
再実行
再実行時は念のためVMを破棄し、再度作成しなおしたVM上でスクリプトを実行したところインストールが問題なく完了し、 http://localhost:9001/ にアクセスすることが出来ました。
まとめ
re:dashは頻繁にアップデートされるため、たまにインストールがうまくいかないことがある印象があるのですが、今回はsetuptoolsの問題でした。
おそらくsetuptoolsもそのうち修正されるんじゃないかと思いますが、re:dashを使おうとして同じような問題にぶつかった方がこの記事を参考にしていただけたらうれしいです。