buildout

説明

buildout はサイトの設定を継続的にまた自動的に行うためのツールです。 必要なソフトウェアをダウンロードして設定を行います。

はじめに

buildout はサイトの設定を継続的かつ自動的に行うためのツールです。 必要なソフトウェアをダウンロードして設定を行います。

  • buildout.cfg というファイルを使用します。
  • bin/buildout コマンドを実行すると、 buildout.cfg に指定された内容にしたがって、新しいソフトウェアをダウンロード、インストールして設定を行います。

チュートリアル

自身をビルドするコマンドの作成方法以外の誰にでも必要となる buildout に関する情報が記載されています。

レシピ

buildout は複数のレシピから構成されています。レシピは以下のもので構成されています。

  • pypi.python.org で配布されている Python パッケージ
  • [buildout] parts=パート名 という宣言
  • [パート名] セクションに recipe= で有効な pypi.python.org の名前を指定

レシピは pypi から Python egg 形式で自動的にダウンロードされます。

buildout のフォルダー構成

Plone buildout は以下のようなフォルダで構成されています。

  • bin/ - 各種の egg によりインストールされた Python スクリプトとシェルスクリプトがあります。 また buildout コマンド自身もここにあります。 Plone の最初に実行するスクリプト bin/instance はここにあります。

  • parts/ - ソースツリーが構築されます。

    buildout の実行時に削除されます。 ここには残しておきたい情報は保存しないでください (備考: いくつかの壊れたレシピは pid ファイルなどをここに作成します)。 生成された設定ファイルはここに格納され、そのファイルを変更しても意味がありません。

  • src/ あなたが開発しているソースコード

  • eggs/ Python の egg ファイル

  • downloads/ ダウンロードされた Python egg ファイルのキャッシュ (システムの設定に依存して他の場所の場合もあります)

  • var/ Zope の Data.fs のようなデータ

  • bootstrap.py - buildout コマンドをインストールします

  • buildout.cfg - buildout の設定ファイルです。 他の .cfg ファイルで拡張する場合もあります たくさんの .cfg ファイルからあなたが必要とするものを指定して以下のような buildout コマンドを実行する場合もあります。:

    bin/buildout -c production.cfg

buildout を proxy の後ろで実行する

buildout は setuptools を使用しており、setuptools は urllib を使用しているため、 http_ploxy (小文字です!)環境変数を使用して proxy を利用できます。

例として以下のような UNIX シェル (bash) で設定できます。

# proxy のアドレスを環境変数にセットします
# この場合は同一コンピュータ上に Polipo サーバーが動作しています
http_proxy=http://localhost:8123/

# Bash シェル特有のコマンド export によって環境変数を有効にします
export http_proxy

# buildout を通常通り実行します
bin/buildout

また、リモートサーバー上の proxy に SSH トンネルで接続する方法もあります。:

# Polipo proxy を yourserver.com:8123 で動作させ
# ローカルの 8123 ポートと SSH トンネルで接続します
ssh -L 8123:localhost:8123 yourserver.com

buildout のキャッシュフォルダー

同一ユーザーでいくつかの buildout を実行する場合はキャッシュフォルダーを設定することを検討してみてください。 全てのダウンロードされた egg ファイルがキャッシュされるようになります。

キャッシュフォルダーを設定するには2種類の方法があります。

  • PYTHON_EGG_CACHE 環境変数
  • [buildout] の中の download-cache 変数 - buildout.cfg ファイルを異なる設定の環境同士で共有しない場合にのみ使用することをおすすめします。

例:

# キャッシュディレクトリを作成する
mkdir ~/python-egg-cache

# buildout キャッシュディレクトリをシェルに対して設定する
export PYTHON_EGG_CACHE=~/python-egg-cache

buildout のデフォルト

ユーザ固有の buildout に関する設定を以下のファイルに記述できます。

$HOME/.buildout/default.cfg

この設定ファイルは、たくさんの Plone の開発を buildout で行っている時や、同一の buildout の egg キャッシュ設定を共有するときに非常に便利です。

詳細な情報はいかを参照してください。

動作するコンポーネントのバージョンを指定してダウンロードする

これは pindowning として知られています。 使用するコンポーネントそれぞれの Python egg バージョンを手動で選ぶことができます。 この手法はバージョンが衝突する問題を解決するために必要となる場合があります。

異なった Python インタプリターへ buildout を移行する

以下のような場合に必要となる手順を説明します。

  • 全 buildout フォルダーを新しいコンピューターにコピーする(おすすめしません)
  • 同一のコンピューター上で Python インタプリターを変更する

まずはじめに異なった Python バージョンや CPU アーキテクチャーに対応している、ダウンロード済みの egg ファイルを消去します。

rm -rf eggs/*

バイナリーの egg の開発を行っている場合は src/ フォルダー以下も削除します。

新しい Python インタプリターを使用して bootstrap.py を実行することにより、 buildout は新しい環境に対応するようになります。

source ~/code/python/python-2.4/bin/activate
python bootstrap.py

その後 buildout コマンドを再度実行して、新しい Python インタプリターに対応した全ての egg を取得しなおします。

bin/buildout