2009-12-27 2 views
1

저는 VMware Fusion에서 Linux VM (Ubuntu 9.10)에서 데이터베이스 서버를 실행 중이지만 Mac 측에서 Django를 코딩하고 있습니다. mysql-python을 설치하려면 _mysql.sosite-packages에 컴파일하기 위해 Mac에 MySQL이 설치되어 있어야합니다.mysql-python : Mac OS X에서 완전히 독립형 _mysql.so를 빌드 하시겠습니까?

그러나이 작업이 끝난 후에는 Mac 측에서 MySQL을 더 이상 사용할 필요가 없으며 단지 삭제 만합니다. 물론 _mysql.so에 /usr/local/mysql/lib/libmysqlclient_r.16.dylib이 필요한 경우에는이 작업을 수행 할 수 없습니다.

이 "true"로 설정, mysql을 - 파이썬의 site.cfg는, 크게 _mysql.so 파일의 크기를 증가에서 "정적"옵션이지만 여전히이 .dylib에 따라 달라집니다.

파일을 엄청나게 만드는 것을 의미한다고해도 .so가 MySQL이 설치되어 있는지 여부와 완전히 독립적으로 만드는 방법이 있습니까?

솔루션이 존재하는 경우 솔루션은 10.5와 10.6 모두에서 작동해야합니다. 당분간 두 버전을 서로 다른 시스템에서 사용하게 될 것이기 때문입니다.

답변

3

좀 더 파고 나서 신경 쓰지 마세요. 사실 꽤 간단합니다.

  1. mysql.com에서의 MySQL의 소스 타르볼 (안 플랫폼 별 바이너리 타르)

  2. 그것을 풀고 가져 오기 ./configure을 실행 나는 경우 다른 사람이 그것을 필요로 여기에 솔루션을 기록 할 것 당신의 목적에 맞는 어떤 옵션이든, --enable-static이 필요합니다. 단지 확실하게, 나는 반드시 --disable-shared을 포함 시켰지 만, 엄격히 필요하지는 않습니다. 나는 당신이 다른 계산에 다를 수 있습니다, 다음을 사용 : 여기에 문자 집합 및 정렬 매개 변수에 관한

    $ ./configure --prefix=/usr/local/mysql-src/ --enable-static --disable-shared --with-charset=utf8 --with-extra-charsets=ascii,binary,latin1 --with-collation=utf8_general_ci
    $ make
    $ sudo make install

    (: 그들은이 사용 사례에서 완전히 불필요 할 수있다, 이후에 MySQL을 삭제할 것이기 때문에 모든 클라이언트 연결은 일부 charset/collation을 사용하기 때문에 MySQLdb에서 사용되는 기본 charset/collation이 영향을받는 경우에 대비하여 UTF-8-Wwise를 커버합니다. _mysql.so 컴파일 된 - 현명한 m EN 나는이 방법은 하나 또는 다른을 확인 할 수 있습니다보다.)

  3. http://pypi.python.org/pypi/MySQL-python

  4. 에서 mysql을 - 파이썬의 최신 소스 타르볼이 그것을 풀고 가져 오기 및 site.cfgstatic = Truemysql_config = /usr/local/mysql-src/bin/mysql_config (또는 어떤 경로를 설정 configure)를 선택했습니다.

  5. python setup.py build. 일부 아키텍처 관련 오류는 컴파일이 끝날 때 나타날 수 있지만 무시해도됩니다.

  6. 실행 sudo python setup.by install. 그러면 site-packages 디렉토리에 .egg가 만들어지고 easy_install.pth 파일에 추가됩니다.

  7. 끝났습니다! 이제 mysql-python 소스뿐만 아니라 MySQL의 모든 흔적을 삭제할 수 있습니다.달걀은 OS X의 동일한 버전을 실행하는 다른 Mac으로 그대로 복사 할 수 있습니다. 우리가 말하는대로 virtualenv으로 만든 다양한 가상 환경에 행복하게 복사하고 있습니다.

이것은 10.5에서 적용되었으므로 곧 10.6에서 테스트하고, 다르게 수행해야 할 작업이 있으면 여기에 결과를보고하십시오.

+1

지침에 따라 10.6에서 정상적으로 작동합니다. –

+1

정적 빌드에'--disable-shared'가 필요하다는 것을 알았습니다. –

+0

구성 할 환경 변수 CFLAGS = -fPIC CXXFLAGS = -fPIC을 추가해야합니다. 그렇지 않으면 MySQLdb 빌드가 실패합니다. – tianyapiaozi

2

나는 구형 리눅스에 정적 MySQLdb를 만들려고 여기에왔다. 나는 MySQL이 cmake로 전환 한 것을 발견 :

이 같은 정적 MySQL을 구축 할 수 있었다 : 모두

# set INSTALL to taste, run from where you extracted the tar file 
SOURCE=$(pwd) && mkdir bld && cd bld && 
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL -DWITH_PIC=ON -DDISABLE_SHARED=ON \ 
     -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=ascii,binary,latin1 \ 
     -DDEFAULT_COLLATION=utf8_general_ci \ 
     $SOURCE 

공지 사항 "WITH_PIC = ON"과 "DISABLE_SHARED = ON"이 맞지 않는 것처럼 보입니다. 동적으로로드 할 수있는 MySQLdb 파이썬 모듈을 빌드하려면 모든 정적 라이브러리를 -fPIC로 빌드해야합니다.