데비안 패키지가 PyPI에서 파이썬 모듈을 설치하는 방법


20

이 질문은 보완하려고 이 일을 . PyPI의 타사 모듈을 사용하는 python 앱이 있습니다. 내 앱을 데비안 패키지로 패키지하고 싶지만 데비안 / 우분투 저장소에없는 파이썬 종속성을 처리하는 방법을 모르겠습니다 (데비안 패키지로 포장 됨)

해결책 # 1 :
PyPI에서 데비안 패키지로 모듈을 빌드하십시오.

해결 방법 # 2 : stdeb를
사용하는 데 필요한 모든 PyPI 모듈에 대한 데비안 패키지를 만들어 debian / ubuntu 리포지토리에 추가하십시오.

데비안 패키지를 가상 환경에 설치할 때 PyPI 종속성을 설치하려고하므로 실제로 솔루션 # 3이 필요합니다 !

솔루션 # 3 은 무엇입니까 ? DEBIAN / preinst 관리자 스크립트 를 조정해야 합니까?


왜 데비안 패키지를 만들어야하는지 설명 할 수 있습니까? Python 앱에 비 Python 리소스가 필요합니까?
— 조나단

@Jonathan 사용자가 Ubuntu Software Center에서 내 앱을 설치할 수 있기를 바랍니다. 나는 그것을 위해 * .deb가 필요하다고 생각합니다. 내 Python 앱에는 비 Python 리소스가 필요하지 않고 타사 Python 모듈 만 필요합니다.
— andri_ch

@Jonathan Debian 패키지는 Ubuntu의 표준 설치 방법입니다. .deb런치 패드에서 파일을 쉽게 분배 하거나 개인 저장소 또는 PPA를 설정할 수 있습니다 .
— MestreLion

답변:


20

Debian IRC 채널 irc : //irc.debian.org#debian-mentors 에서 일부 관리자와 이야기를 나 exact면서 정확히 같은 것을 요구했으며 일반적인 합의는 다음과 같습니다.

해결책 # 1 :

단일 코드베이스로 소스 파일을 복사하여 패키지에 종속성을 통합하는 것은 매우 어려워집니다. 의존성, 업데이트, 버전 관리 등을 처리하는 패키징 시스템의 목적을 무효화합니다.

해결책 # 3 :

바이너리 ( .deb)를 설치할 때 비 데비안 패키지를 즉석에서 다운로드 하는 것은 심각한 보안 위험이 될 수 있습니다. 설치시 다운로드 및 설치되기 때문에를 추출하여 종속성 을 검사 할 수도 없습니다 deb. 리포지토리 시스템을 완전히 우회하는 접근 방식입니다. root신뢰할 수없는 출처에서 신뢰할 수없는 추가 소프트웨어를 추가로 다운로드 하는 패키지 (및 기억하십시오!)에 관심이있는 사용자는 없습니다 . 예, DEBIAN/postinst(또는 preinst)를 다루고 (또는 wget귀하의 경우,pip install), 플래시, Oracle Java, Steam 및 기타 사용자가 취한 접근 방식입니다. 그러나 이것은 독점적 인 비공개 소스 소프트웨어이므로 보안은 아무 것도 아닙니다.

해결책 # 1.5 :

당신은 그것을 언급하지 않았다,하지만 당신은 단지에 종속성을 통합 할 수있는 빌드 시간 에, 즉, 소스 패키지합니다 ( .orig.tar.gz, .debian.tar.gz, .dsc은 "바이너리"패키지합니다 (을 만들 때 PyPi에서 다운로드하여, 인조) .deb). 에 대한 지침 pip install으로 갈 것 debian/rules(통보 소문자 debian는 발행 할 때와 바이너리 패키지에 반대,), 그리고 실행됩니다 debuild나 dpkg-buildpackage.

이것은 # 1과 # 3 사이의 중간입니다. 그것은 # 3의 문제 중 일부를 완화 (그러나 해결하지는 못합니다) : 적어도 최종 제품을 검사 할 수 .deb있으며 설치시 인터넷 액세스가 필요하지 않습니다. 모든 위험과 부담은 최종 사용자에서 패키지 관리자에게 전달됩니다. 그러나 대부분의 패키징 시스템 인프라를 우회하므로 # 1과 동일한 문제가 있습니다. Afterall는이 종속성을 처리합니다 (버전, 업데이트, 요구 사항, 충돌이) 왜 dpkg/ apt처음에 만들었습니다! :)

해결책 # 2 :

진정한 올바른 방법 ™ . 의존성에 대한 데비안 패키지를 만들고 패키지에 요구 사항으로 나열하고 모든 .debs또는 소스 패키지를 배송 합니다.

여기에는 여러 가지 옵션이 있습니다.

  • 데비안에 포함시키기 위해 소프트웨어와 그 의존성 둘 다의 소스 패키지를 제출 하십시오. 수락하면 Ubuntu와 같은 모든 파생 상품을 포함하여 모든 데비안 사용자가 자동으로 사용할 수 있습니다.

  • 소스 패키지를 Launchpad에 업로드하여 우분투 사용자 (및 Linux Mint와 같은 파생 제품)가 쉽게 추가하고 설치할 수 있는 PPA 를 만듭니다.

  • 웹 사이트에 자신의 데비안 리포지토리를 호스팅하십시오. 데비안 기반 시스템의 사용자는 추가 /etc/apt/sources.list.d하고 apt인프라를 사용 하여 위와 같이 다운로드, 설치 및 업데이트 할 수 있습니다!

  • .deb직접 다운로드 및 설치를 위해 파일을 호스팅하십시오 . 아니 apt거나 자동 업데이트는 생각과 관련이 있습니다.

에 관해서는 방법 (! 너무하고 파이썬 소프트웨어) 당신의 PyPi 종속성을 포장하는 도구 쉬운 과정을 참조가 있습니다 :

그리고 많은 유용한 참고 자료 :

도움이 필요하다? 그것들을 확인하십시오 :



2

이 pypi2debpypi에서 패키지를 가져 와서는 DEB 패키지로 만들 수 있습니다.


0

그것들은 펄의 cpan과 같지 않습니다. 리포지토리에 있다면 apt-get으로 설치할 수 있습니다. pip로 설치할 수 없다면 / usr / local에 pip 설치가 있어야합니다.

pip로 설치하려면 다음을 수행하십시오.

apt-get install python-pip 
pip install foopackage 

예를 들면 다음과 같습니다.

pip install MultipartPostHandler2

이것은 OP의 질문에 대답하지 않습니다. 문제는 'apt-get <custom-package>'또는 'dpkg -i <custom-package>'가 PyPi에서 Python 종속성을 가져 오도록 PyPi에서 Python 패키지를 설치하는 방법입니다.
— SevakPrime

그것들은 펄에 cpan과 같지 않습니다. 리포지토리에 있다면 apt-get으로 설치할 수 있습니다 .pip로 설치할 수 없다면 pip 설치는 / usr / local에 있지만 차이점은 내 답변을 삭제하는 것이 좋습니다.
— Sérgio

귀하의 의견은 OP의 질문에 대한 적절한 답변을 제공합니다. 당신은 그 의견을 당신의 대답에 넣어 투표해야합니다. (예를 들어, MestreLion의 답변을 참조하십시오.) 귀하의 답변은 OP의 질문에 답변하지 않습니다.
— SevakPrime
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.