バリューサーバーで python の easy_install を使う

バリューサーバー で mysql-python を使いたかったので、easy_install を使ってインストールしました。バリューサーバーには既に easy_install は入っています。ただ、そのまま easy_install コマンドを実行しても、システム標準の場所にインストールしようとして失敗します。そこで、あらかじめ設定しておきます。.pydistutils.cfg を作ることで easy_install に –prefix オプションをつける必要はなくなります。また、sys.path に PATH の追加もしないで済むので楽になります。

バリューサーバー で mysql-python を使いたかったので、easy_install を使ってインストールしました。

以下は、valueserver.jp に SSH でログインして実行しています。

使いたいパッケージが入っているか調べる

前に書いた記事「python版phpinfo」の pyinfo.py をインストールして見てみます。

pyinfo.pyの導入

$ wget http://www.twoevils.org/files/pyinfo.txt
--2014-06-04 09:42:53--  http://www.twoevils.org/files/pyinfo.txt
www.twoevils.org をDNSに問いあわせています... 204.246.122.18
www.twoevils.org|204.246.122.18|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 11715 (11K) [text/plain]
`pyinfo.txt' に保存中

100%[===================================>] 11,715      --.-K/s 時間 0s      

2014-06-04 09:42:54 (78.6 MB/s) - `pyinfo.txt' へ保存完了 [11715/11715]

$ mv pyinfo.txt pyinfo.py
$ chmod 755 pyinfo.py

ブラウザで pyinfo.pyに アクセスして、表示してみると MySQL-Python は入っていませんでした。

pyinfo.pyの表示結果

そこで、独自にインストールします。

以下の作業は「さくらのレンタルサーバに Python モジュールをインストール」というページに書いてあることを、そのままバリューサーバーで実行しました。

easy_install の確認

バリューサーバーには既に easy_install は入っています。

$ which easy_install
/usr/bin/easy_install

ただ、そのまま easy_install コマンドを実行しても、システム標準の場所にインストールしようとして失敗します。

そこで「さくらのレンタルサーバに Python モジュールをインストール」に書いてある通り、あらかじめ設定しておきます。

*上記のサイトには、ローカルにインストールするオプションや、ローカルに入れたモジュールを使う方法も書いてあります。

site.USER_SITE の確認

Python を起動して、ユーザー・サイト用のディレクトリがどこに設定されているかを調べます。

$ python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.USER_SITE
'/virtual/xxxxx/.local/lib/python2.6/site-packages'
>>>

設定されているのは ‘/virtual/xxxxx/.local/lib/python2.6/site-packages’ ですが、そのディレクトリは用意されていませんので、自分で作る必要があります。ちなみに、/virtual/xxxxx が自分のホームディレクトリになります。

$ mkdir -p ~/.local/lib/python2.6

.pydistutils.cfg の作成

.pydistutils.cfg を作ることで easy_install に –prefix オプションをつける必要はなくなります。また、sys.path に PATH の追加もしないで済むので楽になります。

$ echo '[install]' > ~/.pydistutils.cfg
$ echo 'user=1' >> ~/.pydistutils.cfg
$ cat ~/.pydistutils.cfg 
[install]
user=1

easy_install を使ってみる

後は、普通に easy_install コマンドでモジュールをインストールできます。

MySQL-Python をインストールします。

$ easy_install mysql-python
Searching for mysql-python
Reading http://pypi.python.org/simple/mysql-python/
Best match: MySQL-python 1.2.5
Downloading https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030c
Processing MySQL-python-1.2.5.zip
Running MySQL-python-1.2.5/setup.py -q bdist_egg --dist-dir /tmp/easy_install-UDQRse/MySQL-python-1.2.5/egg-dist-tmp-yYD_3Q
/usr/include/mysql/my_config.h:14 から include されたファイル中,
                 _mysql.c:44 から:
/usr/include/mysql/my_config_x86_64.h:422:1: 警告: "HAVE_WCSCOLL" が再定義されました
/usr/include/python2.6/pyconfig.h:6 から include されたファイル中,
                 /usr/include/python2.6/Python.h:8 から,
                 _mysql.c:29 から:
/usr/include/python2.6/pyconfig-64.h:808:1: 警告: ここが以前の宣言がある位置です
zip_safe flag not set; analyzing archive contents...
Adding MySQL-python 1.2.5 to easy-install.pth file

Installed /virtual/xxxxx/.local/lib/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg
Processing dependencies for mysql-python
Finished processing dependencies for mysql-python

先ほどの、pyinfo.py にブラウザでアクセスしてみると MySQL (MySQL-Python) が enabled に変わっています。

pyinfo.pyの表示結果

サーバーの細かな設定が誰でも読めてしまうのは、セキュリティの心配があるので、当サイトでは確認終了後に pyinfo.py は削除しました。

$ rm pyinfo.py

極悪?Windows XP はダメで危険なOSなのか?

これは、永江一石さんの書かれた記事「XP使い続けるような会社とは絶対に仕事しないし、客にもなりたくない」に触発されて書きました。記事の趣旨に異論はないんです。ないんですが、読んでて感じた違和感がありました。まるで Windows XP が極悪人みたいです。「危険なXPを使い続けるのは、無知と言うより自分勝手きわまりないと思う」とか「XPからのメールはマジ、全拒否したい」とか。Windows XP って長期間シェアのトップを君臨し続けたOSがそんなに危険で、悪いOSなんでしょうか。

これは、永江一石さんの書かれた記事「XP使い続けるような会社とは絶対に仕事しないし、客にもなりたくない」に触発されて書きました。

永江さんの記事の趣旨に異論はないんです。ないんですが、読んでて感じた違和感がありました。まるで Windows XP が極悪人みたいです。

「危険なXPを使い続けるのは、無知と言うより自分勝手きわまりないと思う」とか「XPからのメールはマジ、全拒否したい」とか。

Windows XP って長期間シェアのトップを君臨し続けたOSがそんなに危険で、悪いOSなんでしょうか。

新しい機能にこそ穴は出やすい

新しいOSがいいのかといえば、必ずしもそうとは言い切れないと思います。

何故かというと、新しい機能にこそ穴は出やすいから。

大勢に使われ、何年も稼動しているシステムならそれだけ、バグは発見されつくされていて、穴がなくなっている可能性があります。それに比べ、テスト回数が少なくて、稼働実績が少ないものほど、見つかっていない穴が潜在している可能性は高くなります。

例として、F1マシンで考えてみます。ストーブシーズンに、昨シーズンのマシンとシェイクダウン中の、来シーズンのマシンを比べたらどうなるでしょう。

速いのは新しいマシンかもしれません。でもトラブルが出やすいのも新しいマシンじゃないでしょうか。そのトラブルをなくすためのテストがシェイクダウンなんだから。

シェイクダウンの初期に2台を比べれば、昨シーズンの1年間、実戦というテストを重ね続けた、古いマシンの方が安定しているんじゃないでしょうか。

ただ、もしも「好きな方に乗っていいよ」と言われたら、新しいマシンに乗りたいですけどね。

枯れたOSは安定している

インターネットの黎明期、今ではサーバー用OSで主流になりつつある Linux が出てくるまで、サーバー用途にはBSD系のOS、中でも FreeBSD が主流でした。

Linux が人気を得はじめた頃、多くの FreeBSD ユーザーが主張していたのが、こういう内容です。

FreeBSD はもう何年も止まらずに稼動しているサーバーがいくつもあって、信頼できる。

つまり、新しい Linux よりも、古くて実績のある FreeBSD の方が信頼できる。という主張です。

確かに、せっかく安定稼働していたのに、バージョンアップしたらおかしくなったという例はあります。

だから、この主張自体は正しいと思うんです。新人よりもベテランの方が信頼できる。

今のシステムに困っていないなら、いじるなという意見もあります。

発展するためには育てること

でも、その理屈を企業に当てはめた場合、疑問が出てきます。定年間近の社員しかいない企業に発展性はあるでしょうか。

発展するためには、信頼のおけない新人を、信頼できるようになるまで育てるしかないです。

現在では Linux は充分に発展し、安定しているし信頼されています。

考えてみれば、FreeBSD が何年も止まらずに稼動していたのは、世に出て何年も経っていたからであって、出てきたばかりの Linux が長期間稼動していなかったのは当たり前の話だったんじゃないのかな。

Windows XP はダメなのか

Windows XP のサポートがまもなく終了するけど、新しい Windows の方が安定しているのでしょうか。

さっき書いたように、新しい機能がある新OSの方が見つかっていない穴は多いかもしれません。

10年以上にわたって大勢にテストされ続けた XP が、Windows8 よりも安定している可能性はあります。

もしも、新機能にバグがあった場合どうなるでしょう。Windows8 の新機能にバグがあった場合、攻撃の被害に遭うのは Windows8 であって、XP は被害を受けません。

そういう事態が発生する可能性もありますね。

むしろ、セキュリティ・アップデートをしないなら、Windows8 の方が、より危険かもしれません。

それなら XP を使い続けても大丈夫なのでしょうか。重要なのはここです。

問題なのは修正されないこと

OSが古いこと自体には、何も問題はありません。問題なのは修正されないことです。

修正されないという事は、発展しないという事ですから。

セキュリティホールが見つかった場合、パッチが配布されて、Windows8 の穴は塞がれます。穴がひとつ塞がって Windows8 の信頼性は上昇します。

では、もしも Windows XP にまだ発見されていないセキュリティホールが見つかった場合はどうなるでしょう。

セキュリティパッチは配布されないので、被害に遭い続けることになります。ここが、重要です。

OSが古いことが悪いのではなくて、修正されない事が悪いんです。

「XPくんは悪くないんだからね!」

信用を得るための投資

検切れの車を運転して事故を起こせば、ただの事故より問題があります。もしも、車検切れの車を運用してる企業があれば信用失墜でしょう。同じ事はパソコンにもいえます。企業にとっては、車もパソコンも同じ道具ですから。

重要なのは、4月になれば Windows XP は車検の切れた車と同じだということ。車検の切れた車は点検に出さないといけないし、点検できないのであれば買い替えるしかないです。予算かかって苦しくなりますが。

そして、新しい機能が必要ならバージョンを上げるしかないという事があります。古いバージョンの機能だけで足りるならバージョンを上げる必要はないのかもしれません。機能が少ない方が安定稼働出来るかもしれません。

でも、顧客が望むサービスに対応できるだろうかという疑問があります。日に日に進歩する技術の中で、顧客満足度を考えた場合、古い機能だけで対応できるでしょうか。お客は、古いF1と新しいF1のどちらに乗りたいでしょうか。

ということで、定年間近の社員しかいない企業に発展性はないように、新しいパソコンにも投資をしないと発展しないし、信用されないのかもしれないな。なんて思ったのでした。

そういえば、Windows XP が出たばかりの頃、生まれて初めてパソコンを買うから、一緒に行って教えてと頼んだYさんは、アキバでノートのVAIOを抱きしめながら「絶対大事にする!一生このVAIOを使い続ける!」と感激しながら言っていたけど、まだ使っているのかな?