2011-10-19 9 views
0

rpmインストールの中からPythonスクリプトを実行する際に気が付かれるべきことがありますか?rpmインストールプロセスの一部としてPythonスクリプトを実行しています

ここに問題の要点があります。 Djangoアプリケーションを配備するためのカスタムRPMインストーラを作成しました。インストールプロセスの一環として、すべての静的ファイルを収集して定義済みの場所にコピーするDjango管理コマンドを実行したいと考えています。ここでは、これは、コマンドラインから手動で実行したときに次のようになります。問題があることである

%post 
# collect static files 
pushd . 
cd %{installpath}/src/app/ 
%{__python} manage.py collectstatic --noinput --settings=settings_prod 
popd 

$ python2.6 manage.py collectstatic --noinput 
/usr/lib/python2.6/site-packages/reversion/__init__.py:31: UserWarning: django-reversion 1.5 is intended for use with django 1.3.0. You are running django 1.3.1, so some features, such as admin integration, may not work. Please see https://github.com/etianen/django-reversion/wiki/Compatible-Django-Versions 
    "django_version": format_version(django.VERSION[:3]), 
Copying '/usr/lib/python2.6/site-packages/django/contrib/admin/media/img/gis/move_vertex_on.png' 
Copying '/usr/lib/python2.6/site-packages/django/contrib/admin/media/img/gis/move_vertex_off.png' 
Copying '/usr/lib/python2.6/site-packages/django/contrib/admin/media/img/admin/icon_clock.gif' 
Copying '/usr/lib/python2.6/site-packages/django/contrib/admin/media/img/admin/arrow-down.gif' 
Copying '/usr/lib/python2.6/site-packages/django/contrib/admin/media/img/admin/inline-restore.png' 
... 

ので、RPMの一部としてこれを実行するために、私はspecファイルに以下を追加インストール

sudo rpm -U app-0.2.8.18889M-1.x86_64.rpm -vv 

... 
+ pushd . 
// 
+ cd /opt/qpsi/app/src/app/ 
+ /usr/bin/python2.6 manage.py collectstatic --noinput --settings=settings_prod 
/usr/lib/python2.6/site-packages/reversion/__init__.py:31: UserWarning: django-reversion 1.5 is intended for use with django 1.3.0. You are running django 1.3.1, so some features, such as admin integration, may not work. Please see https://github.com/etianen/django-reversion/wiki/Compatible-Django-Versions 
    "django_version": format_version(django.VERSION[:3]), 
There is no South database module 'south.db.oracle' for your database. Please either choose a supported database, check for SOUTH_DATABASE_ADAPTER[S] settings, or remove South from INSTALLED_APPS. 
+ popd 

をしかし、実際に移入されていない出力および静的ディレクトリにコピーされたファイルのない予想されるリストはありません:私はこれを実行すると、私は仕事がキックオフされて見ることができます。

だから、質問は以下のとおりです。

  1. は私が
  2. を意識する必要がRPMからPythonスクリプトの実行に関する特別なことは、私は冗長出力を取得するには、rpmコマンドの-vvオプションを使用していますありますPythonスクリプトが起動されると、rpmの内部で何が起こっているのかをさらにデバッグする方法があります。ちょうどそれらをシンボリックリンクについて

おかげ D.

答えて

0

私は%のビルドに%のポストからスクリプトを移動することになりました。それが問題の世話をした。

0

どのように...

%post 
#Configure django admin media if it hasn't already been: 
[ -d /path/to/new/media ] || ln -s /usr/lib/python2.6/site-packages/django/contrib/admin/media/ /path/to/new/media 
+0

私はDjango 1.3の静的なファイルを扱う新しい方法を利用しているので、これは必要なステップではないと思います。手動でcollectstaticを実行すると、管理メディアに問題はありません。 –

0

あなたはに沿って、(http://pypi.python.org/pypi/virtualenv)virtualenvのを見て、その後、あなたの回転数が全体の仮想環境をバンドルしていなければなりませんsite-packagesディレクトリを使用すると、必要な卵が配備されたシステムで利用できるようになり、卵はあなたのスクリプトに必要なバージョンになります。 (上記の場合は、南のバージョンが期待どおりに違うかもしれません)。

そして、%postセクションでは、代わりにシステムのpythonの仮想環境からのpythonを呼び出し、

欠落している卵の問題を見ることがとても簡単になりますが、異なる卵のバージョンに起因する問題をデバッグすることはかなり可能微妙。

も参照してください:Deploying Django with virtualenv inside a distribution package?

関連する問題