2011-10-19 2 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의 일부 나 추가 설치로이 작업을 실행하려면 : 다음은이 명령 줄에서 수동으로 실행할 때의 모습입니다

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 

을하지만 실제로 채워되지 않는 출력과 정적 디렉토리에 복사되는 파일의 어떤 예상 목록이 없습니다 :이 프로그램을 실행할 때, 나는 작업을 시작했다되는 것을 볼 수 있습니다.

그래서 질문은 : 나는 자세한 출력을 얻을 수있는 rpm 명령의 -vv 옵션을 사용하고
  • 의 인식 할 필요가 RPM에서 파이썬 스크립트를 실행하는 방법에 대한 특별한 아무것도

    1. 있는가 파이썬 스크립트가 시작되면 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

    당신은 VIRTUALENV (http://pypi.python.org/pypi/virtualenv)을보고, 다음 rpm으로 전체 가상 환경을 번들해야, 함께 site-packages 디렉토리를 사용하면 배포 된 시스템에서 필요한 달걀을 사용할 수 있고 스크립트에서 필요한 버전의 달걀을 사용할 수 있습니다. (위의 경우에는 남쪽 버전이 예상 한 것과 다를 수 있습니다.)

    그런 다음 % post 섹션에서, 대신 시스템 파이썬의 가상 환경에서 파이썬을 호출

    누락 된 달걀 문제가보고 아주 쉽게 수 있지만 인해 다른 계란 버전 문제를 디버깅하는 것은 꽤 될 수 있습니다 세밀한.

    은 참조 : Deploying Django with virtualenv inside a distribution package?