Python 프로그램 배포를위한 데비안 패키지를 만드는 표준 방법이 있습니까?
이 작업을 수행하는 방법에 대한 많은 정보가 있지만 "고양이를 피부로 만드는 방법은 여러 가지가 있습니다" 이므로 프로세스의 일부를 다루는 모든 자습서 / 매뉴얼은 다른 것과 다른 특정 가정을하는 것 같습니다. 튜토리얼, 나는 여전히 그것을 이해하지 못했습니다.
지금까지 이것이 내가 이해했다고 생각하는 것입니다.
- 나의 최종 목표는 "이진".deb 패키지를 만드는 것입니다. 이러한 패키지는 모든 Python 프로그램이 그렇듯이 플랫폼 독립적 (32/64 비트)입니다.
- "바이너리"패키지를 생성하려면 먼저 소스 패키지를 생성해야합니다.
- 소스 패키지를 만들려면
CDBS또는을 사용할 수 있습니다debhelper. Debhelper는 초보자에게 권장되는 방법입니다. - 소스 패키지를 만드는 핵심은
DEBIAN파일을 복사해야하는 위치, 적용되는 저작권 및 라이센스 체계, 파일 종속성 등을 설명하는 여러 파일로 소스 디렉토리 의 디렉토리를 채우는 것입니다. - Python 소스가 distutils의 스크립트 와 함께 제공되는 경우 # 4 단계는
dh_make명령을 크게 자동화 할 수 있습니다 .setup.py
이제 내 질문 :
- 프로세스에 대한 나의 이해가 정확합니까? 내가 놓친 것이 있거나 내가 잘못한 것이 있습니까?
- 5 단계는 나에게 더 혼란 스럽습니다. 특히 나에게 가장 모호한 두 가지 사항은 다음과 같습니다.
setup.py독립 실행 형 프로그램을 설치하는 스크립트는 어떻게 작성 합니까? 편집 : 하여 독립 실행 형 프로그램 (A 반대로 내가 프로그램을 의미 데스크톱 사용자가 사용하기위한 모듈 내가 가져온 후에 다른 소프트웨어에서 사용하는 기능의 모음처럼 이해). 필자의 특정한 경우에는 실제로 두 개의 "프로그램"이 필요 합니다. 주 소프트웨어와 별도의 유틸리티 (실제로는 다른 하나와 동일한 패키지에 있어야하는 두 번째 "프로그램").- DEB 패키지에 대한 이러한 스크립트의 특성은 무엇입니까? 공식 문서는 RPM 및 Windows 관련 항목 만 다루는 것 같습니다.
BTW : 이것이 제가 지금까지 찾을 수있는 최고의 정보 소스입니다. 이보다 더 좋은 것이 있다면 공유 해주세요! :)
- Ubuntu의 Python 패키징 가이드
- python setup.py에서 .deb 패키지 만들기 ( 단계를 보여 주지만 따라하기에는 충분히 설명 하지 않음 )
- "python 프로그램에서 .deb 패키지 만들기"에 대한 ShowMeDo 비디오 (최신 버전이 아닌 것 같고-내가 올바르게하면-종속성없이 서명 된 변경 로그 및 기타 사항없이 개인적인 용도로 패키지를 생성합니다. 데비안 정책과 호환되지 않게 만드는 주요 데이터).
stdeb 가 원하는 것을 할 것 같습니다 .
또한 스크립트 설치를 위해 배포의 console_scripts 진입 점 지원을 강력히 권장 합니다.
Barry Warsaw의이 기사 는 프로세스를 상당히 진행하는 데 도움이되었습니다. 그래도 여전히 측면에서 많은 검색을해야 했고, 과거에 대부분의 우분투 패키징 가이드를 읽었습니다 .
좋은 것을 갖는 것은 setup.py정말 좋은 조언입니다. 이 두 가지 가이드가 아주 좋습니다.
deb 패키지를 빌드하는 올바른 방법은 사용하는 dpkg-buildpackage것이지만 때로는 약간 복잡합니다. 대신 사용할 수 있으며 dpkg -b <folder>데비안 패키지가 생성됩니다.
dpkg -b <folder>바이너리 또는 수동 컴파일 (Python, Bash, Pearl, Ruby)없이 자동으로 실행되는 모든 종류의 스크립트를 사용 하여 데비안 패키지를 만들기위한 기본 사항은 다음 과 같습니다.
- 다음 구조를 다시 만들려면 파일과 폴더를 만듭니다.
ProgramName-Version/
ProgramName-Version/DEBIAN
ProgramName-Version/DEBIAN/control
ProgramName-Version/usr/
ProgramName-Version/usr/bin/
ProgramName-Version/usr/bin/your_script
에 배치 된 스크립트 /usr/bin/는 터미널에서 직접 호출되며 스크립트에 확장자를 추가하지 않았습니다. 또한 deb 패키지의 구조는 일단 설치되면 프로그램의 구조가된다는 것을 알 수 있습니다. 따라서 프로그램에 단일 파일이있는 경우이 논리를 따르면 파일을 바로 아래에 배치 할 수 ProgramName-Version/usr/bin/your_script있지만 여러 파일이있는 경우 아래에 배치하고 아래에 스크립트를 호출 할 ProgramName-Version/usr/share/ProgramName/all your files파일 하나만 배치해야합니다./usr/bin//usr/share/ProgramName/
모든 폴더 권한을 루트로 변경하십시오.
chown root:root -R /path/to/ProgramName-Version스크립트 권한 변경 :
chmod 0755 /path/to/the/script마지막으로 다음을 실행할 수 있습니다.
dpkg -b /path/to/the/ProgramName-Version그러면 deb 패키지가 생성됩니다! (또한 post / pre inst 스크립트와 원하는 모든 것을 추가 할 수 있습니다. 일반 데비안 패키지처럼 작동합니다)
다음은 control파일 의 예입니다 . "control"이라는 빈 파일에 복사하여 붙여넣고 DEBIAN 폴더에 넣으면됩니다.
Package: ProgramName
Version: VERSION
Architecture: all
Maintainer: YOUR NAME <EMAIL>
Depends: python2.7, etc , etc,
Installed-Size: in_kb
Homepage: http://foo.com
Description: Here you can put a one line description. This is the short Description.
Here you put the long description, indented by 1 space.
필요한 모든 단계를 추상화하고 단일 명령으로 Python 패키지를 데비안 패키지로 변환 할 수있는 여러 라이브러리가 있습니다.
파이썬 패키지에 이미 setup.py있는 디렉토리 가 있다고 가정하면 다음을 setup.py사용할 수 있습니다.
stdeb (이 답변 에서 이미 언급했으며으로 설치하십시오
pip install stdeb). 데비안 패키지를 생성하려면 다음을 실행하십시오.python setup.py --command-packages=stdeb.command bdist_debOutput
.debfile will be located inbdist_debdirectory.fpm (install with
gem install --no-ri --no-rdoc fpm). To create a debian package, run:fpm -s python -t deb setup.pypy2deb (install with
pip install py2deb). To create a debian package, run:py2deb -r . .
Each of these libraries has its own caveats, so you might want to try what works best for you.
'Nice programing' 카테고리의 다른 글
| JSONP를 반환하는 ASP.net MVC (0) | 2020.10.30 |
|---|---|
| Android의 Java 버전은 Java SE 버전과 어떤 관련이 있습니까? (0) | 2020.10.30 |
| GraphQL에서 "에지"와 "노드"의 의미는 무엇입니까? (0) | 2020.10.30 |
| 얼굴 인식 API (0) | 2020.10.30 |
| 확장 가능한 소프트웨어 (플러그인 아키텍처)를 설계하는 방법은 무엇입니까? (0) | 2020.10.30 |