2011-09-23 4 views
0

다음과 같은 문제가 있습니다. 파이썬의 자체 버전을 일부 마법과 함께 배포해야합니다. 이를 위해, 프로세스는 다음과 같다 : 자신의 파이썬, 크로스 리눅스 배포

  1. 내가
  2. 가 설치 (레드햇 리눅스에) 파이썬 인터프리터를 구축 곳
  3. tar.gz의 모든 일
  4. 는 시간이다 사용자 패키지를 만들기 위해, 사용자 패키지
  5. tar.gz의
  6. 는 웹에서 tar.gz의를 넣어 사용자 패키지 디렉토리가 될 디렉토리에 tar.gz의 압축을 풀고

이것은 사용해야하는 방법입니다. 좋았어? 나도 몰라, 포장업자로서의 경험이 거의 없으며, 어쨌든 나는 변화를 제안 할 수 없다. 이것은 그들이 항상 한 방식입니다.

사용자가 suse에서이 tar.gz의 압축을 풀고 python setuptools (python과 함께 설치됨)를 실행하려고 시도하면 hashlib 모듈에서 예외가 발생합니다. 내가 알아 낸 것은 레드햇에서 파이썬을 빌드하는 것입니다. 파이썬 구성 스크립트는 openssl 라이브러리를 찾고, shamodule.c, md5.c 등의 빌드를 건너 뛰고 hashmodule.c를 컴파일하여 openssl 라이브러리. 분명히 suse의 openssl 0.9.7과 redhat의 0.9.8은 다소 차이가 있습니다. 즉, _hashlib 모듈이 suse로 가져올 때 가져 오기 오류가 발생하고 hashlib가 _md5, _sha, _sha256, 왜냐하면 레드햇에는 그들을 컴파일 할 이유가 없었기 때문입니다. (openssl은 유쾌한 편 이었으므로).

누구든지이 문제를 해결하는 방법을 알고 있습니다. 제가 말했듯이, 포장업자로서의 나의 경험은 최소한의 것이므로 어떤 힌트와 제안도 환영하며, 나는 우리가 유산으로 허용하는만큼 그것을 배치하려고 노력할 것입니다.

답변

2

누구든지이 문제를 해결하는 방법을 알고 있습니까?

정말 그렇습니다. 문제가되는 OpenSSL 라이브러리가 아니라면 C 라이브러리 자체이거나 다른 중요한 구성 요소 일 수 있습니다. 가장 좋은 해결 방법은 다음 중 하나

(A) 각 당신이 지원하고자하는 운영 체제 또는

(B) 파이썬의 버전을 구축 각 플랫폼에서 네이티브 시스템 파이썬을 사용하도록 코드를 재 작업.

당신의 대안은 완전히 통합 된 빌드 환경을 만들어서 RedHat에서 빌드 할 때 시스템 OpenSSL 라이브러리를 사용하지 않고 직접 빌드 한 것을 사용하는 것입니다. 이것은 C 라이브러리가 아닌 다른 모든 것을 위해 작동하지만 설치가 까다로울 수 있습니다. 아이디어는 패키지와 시스템 라이브러리 간의 관계를 최소화하는 것입니다.

RedHat 및 SUSE 만 지원하는 경우 적절한 사양 파일을 만들고 각 플랫폼에 대한 바이너리 패키지를 작성하여 옵션 (A)을 수행 할 수 있습니다. 이것은 모든 것을 꾸려 나가는 좋은 방법이 될 것입니다.

0

바이너리 타르볼 대신 파이썬 버전의 소스 RPM을 배포하는 것을 고려해야합니다. 기존의 Python 릴리스를 가져 와서 변경 사항 패치로 다시 패키징 할 수 있습니다. RPM Book에서이 작업을 수행하는 방법에 대한 자세한 내용이 있습니다.

+0

옵션 없음 ... –

+0

모든 종속성을 포함하도록 정적으로 링크되어 있지 않으면 단일 이진 이미지로 여러 Linux 플랫폼을 지원할 방법이 없습니다. 그럼에도 불구하고 더 새롭거나 더 오래된 커널을 가진 플랫폼에서 문제가 발생할 것입니다. – CurtisB

관련 문제