チュートリアルを試してみる (2)

とりあえず python2.5 が python コマンドでナニできる環境、という事で chroot なソレを作る事に。
前職のネト環境云々な問合せ対応な日曜 2000 前だったのですが、なんとか収束。以下で chroot なソレを

# debootstrap etch /home/xxx/google http://ftp.jp.debian.org/debian/

あとは以下のおマジナイを

# echo "proc /home/xxx/jail/proc proc none 0 0" >> /etc/fstab
# mount proc /home/xxx/jail/proc -t proc
# cp /etc/hosts /home/xxx/jail/etc/hosts
# chroot /home/xxx/jail /bin/bash
/# cd /dev
/dev# /sbin/MAKEDEV generic
/dev# aptitude install locales mtools -fy
/dev# cd /
/# useradd -m guest
/# passwd guest

で、python2.5 を

# apt-get install -f python2.5
(中略
t:2 http://ftp.jp.debian.org etch/main python2.4-minimal 2.4.4-3 [901kB]
Get:3 http://ftp.jp.debian.org etch/main python-minimal 2.4.4-2 [12.2kB]
Get:4 http://ftp.jp.debian.org etch/main libsqlite3-0 3.3.8-1.1 [194kB]
Get:5 http://ftp.jp.debian.org etch/main python2.5-minimal 2.5-5 [784kB]
Get:6 http://ftp.jp.debian.org etch/main python2.5 2.5-5 [3445kB]
Fetched 5367kB in 6s (780kB/s)                                                                                                                                                          
Selecting previously deselected package mime-support.
(Reading database ... 7764 files and directories currently installed.)
Unpacking mime-support (from .../mime-support_3.39-1_all.deb) ...
Selecting previously deselected package python2.4-minimal.
Unpacking python2.4-minimal (from .../python2.4-minimal_2.4.4-3_i386.deb) ...
Selecting previously deselected package python-minimal.
Unpacking python-minimal (from .../python-minimal_2.4.4-2_all.deb) ...
Selecting previously deselected package libsqlite3-0.
Unpacking libsqlite3-0 (from .../libsqlite3-0_3.3.8-1.1_i386.deb) ...
Selecting previously deselected package python2.5-minimal.
Unpacking python2.5-minimal (from .../python2.5-minimal_2.5-5_i386.deb) ...
Selecting previously deselected package python2.5.
Unpacking python2.5 (from .../python2.5_2.5-5_i386.deb) ...
Setting up mime-support (3.39-1) ...

Setting up python2.4-minimal (2.4.4-3) ...
Linking and byte-compiling packages for runtime python2.4...

Setting up python-minimal (2.4.4-2) ...
Setting up libsqlite3-0 (3.3.8-1.1) ...

Setting up python2.5-minimal (2.5-5) ...
Linking and byte-compiling packages for runtime python2.5...

Setting up python2.5 (2.5-5) ...

#

で、確認。

# python -V
Python 2.4.4
#

がびーん。

# dpkg --get-selections|grep python
python-minimal                                  install
python2.4-minimal                               install
python2.5                                       install
python2.5-minimal                               install
#

python2.4-minimal を削除してみる

# apt-get remove -f python2.4-minimal -s
Reading package lists... Done
Building dependency tree... Done
The following packages will be REMOVED:
  python-minimal python2.4-minimal python2.5 python2.5-minimal
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
Remv python2.5 [2.5-5]
Remv python2.5-minimal [2.5-5]
Remv python-minimal [2.4.4-2]
Remv python2.4-minimal [2.4.4-3]
#

削除して -f ナシで再度 pytho2.5 入れたらどうなるか。

# apt-get install python2.5
(中略
Selecting previously deselected package python2.4-minimal.
(Reading database ... 7799 files and directories currently installed.)
Unpacking python2.4-minimal (from .../python2.4-minimal_2.4.4-3_i386.deb) ...
Selecting previously deselected package python-minimal.
Unpacking python-minimal (from .../python-minimal_2.4.4-2_all.deb) ...
Selecting previously deselected package python2.5-minimal.
Unpacking python2.5-minimal (from .../python2.5-minimal_2.5-5_i386.deb) ...
Selecting previously deselected package python2.5.
Unpacking python2.5 (from .../python2.5_2.5-5_i386.deb) ...
Setting up python2.4-minimal (2.4.4-3) ...
Linking and byte-compiling packages for runtime python2.4...

Setting up python-minimal (2.4.4-2) ...
Setting up python2.5-minimal (2.5-5) ...
Linking and byte-compiling packages for runtime python2.5...

Setting up python2.5 (2.5-5) ...

#

で、確認。

# python -V
Python 2.4.4
#

とほほ。/usr/local/bin に入れるかどうするか。

上記は日曜のログ

おそらくそのまま死亡した模様。ちなみに今日は火曜日ッス。体調的にはあまり回復してないものの、とりあえず Python-2.5.2 なソースを落として作業再開。configure の help 見たナニでは PREFIX が /usr/local なんでそのままヤッテみた。
んですが、環境が plain 杉で gcc とかが入ってない。gcc だの libc6-dev だのを入れてリトライ。Makefile できた模様。で

# make
sh: make: command not found
#

とほほほ。make 入れてコンパイル着手。終わったみたいなので試験してみる。

# make test

test_urllib2_localnet で止まる。他のトコでも微妙に失敗している模様。面倒なのでスルーで install する事に (を

Hello, World!! にリトライ

今度は言われた通りにナニ。NHK FM の Char さんの特番を BGM に。って BGM ゴキゲンなんですが、以下なソレで動かねぇ。

$ google_appengine/dev_appserver.py helloworld/
Traceback (most recent call last):
  File "google_appengine/dev_appserver.py", line 50, in <module>
    execfile(script_path, globals())
  File "/home/guest/google_appengine/google/appengine/tools/dev_appserver_main.py", line 338, in <module>
    sys.exit(main(sys.argv))
  File "/home/guest/google_appengine/google/appengine/tools/dev_appserver_main.py", line 297, in main
    server = MakeRpcServer(option_dict)
  File "/home/guest/google_appengine/google/appengine/tools/dev_appserver_main.py", line 259, in MakeRpcServer
    host_override=option_dict[ARG_ADMIN_CONSOLE_HOST])
  File "/home/guest/google_appengine/google/appengine/tools/appcfg.py", line 114, in __init__
    self.opener = self._GetOpener()
  File "/home/guest/google_appengine/google/appengine/tools/appcfg.py", line 319, in _GetOpener
    opener.add_handler(urllib2.HTTPSHandler())
AttributeError: 'module' object has no attribute 'HTTPSHandler'
$

google 先生に聞いてみたトコロ、

とのナニを発見。make ヤリ直しですか。Makefile に上記コンテンツなエントリが無さげだったので libssl-dev を入れて再度 configure を実行してみる。で、SSL 云々なエントリがあるか、と見てみると無ひ。
openssl 入れてリトライ。って configure の出力見てみると Modules ディレクトリの中に Setup ってファイルが出力されている模様。これか。(とほほ
修正して make 実行中。NHK-FM は現在 Zeppelin がウナりを上げてる状態。

make install 失敗

ええと、一旦綺麗な環境にしてから云々じゃねぇと微妙そげ。面倒なので

  • /usr/local/include/pytho2.5
  • /usr/local/lib/python2.5
  • /usr/local/bin/python2.5*

を削除して、ソースの展開からナニ。

動いた

BGM は JeffBeck がウナってる中、Hello, world!! が出た。ここで一旦ブログ出力。

続き

helloworld.py を書き換えて reload するだけで OK な模様。

Using the webapp Framework

そろそろ中身を真面目に読まんと微妙かも。
サンプルなソースと解説から読めるのは以下

  • wsgiref は Python の標準ライブラリな模様
    • main メソドで wsgiref.handlers.CGIHandler().run を呼んでいる
    • run に渡しているのは webapp.WSGIApplication なインスタンス
  • ハンドラは webapp.RequestHandler を継承
    • webapp.RequestHandler.response に戻しをセット
  • main メソド中の WSGIApplication にハンドラと URL のマップをナニしてる模様

そろそろ python きちんと読めるようにしとかんと微妙かも。

Using the Users Service

google なアカウントで云々な処理が可能な模様。なるほどね。最後までざくっと流すかどうか迷い中。ちょっと tutorial ナゾるだけだと不毛なのでストップ。
体調不良なママ何かをすると駄目ですな。(とほほ