2016-07-23 5 views
0

아파치를 자동으로 컴파일하는 스크립트를 작성하려고합니다. 슬프게도 나는 설치 한 모든 아파치를 컴파일해야한다. 나는 구성 부분에 붙어 순간Python에서 명령을 실행하십시오.

print("Source location %s" % source_location) 
print("Configure command %s" % configure_command) 
config = subprocess.Popen(configure_command, stdout=subprocess.PIPE, shell=True) 
(output, err) = config.communicate() 
config_status = config.wait() 
print("Return configure status = %s" % config_status) 

:
그래서,이 명령을 실행하려면이 작은 코드를 함께했다.
는 기본적으로 configure 줄은 다음과 같이이다 :

/Volumes/nirvash/script/workarea/httpd-2.2.31/configure --prefix =/tmp를/아파치 2.2.31-INSTANCE1 --enable- mods-shared = all - 사용 가능 프록시 - 사용 가능 프록시 - 연결 - 사용 가능 프록시 -ftp - 사용 가능 - 프록시 - http - 사용 가능 - 사용 불가 - 사용 가능 캐시 - 사용 가능 디스크 캐시 - --with-included-apr --with-mpm = worker

문제는 아파치가 컴파일 할 때 (mkdir) "include "디렉토리에 httpd-2.2.31. 그러나이 경우 디렉토리는 내 스크립트의 bin 디렉토리에 만들어집니다.
스크립트가 실행 중이므로 디렉터리가 만들어집니다.

이 문제를 해결할 수 있습니까? 컴파일하는 디렉토리에서 configure를 실행할 방법이 있습니까?

답변

1

os.chdir을 사용하면 스크립트의 현재 디렉토리를 소스 코드가 들어있는 디렉토리와 동일하게 변경할 수 있습니다.

os.chdir(source_location) 

또는, 이전 configure을 실행하기 cd를 사용하여 첫 번째 변경 디렉토리에 configure_command을 변경할 수 있습니다.

configure_command = 'cd "%s" && %s' % (source_location, configure_command) 
관련 문제