5장. Python 3 RPM 패키징
DNF 패키지 관리자를 사용하여 시스템에 Python 패키지를 설치할 수 있습니다. DNF 는 소프트웨어에 대한 다운스트림 제어를 제공하는 RPM 패키지 형식을 사용합니다.
Python 프로젝트를 RPM 패키지로 패키징하면 기본 Python 패키지와 비교하여 다음과 같은 이점이 있습니다.
- Python 및 Python이 아닌 패키지에 대한 종속성은 DNF 패키지 관리자에 의해 엄격하게 적용됩니다.
- 패키지에 암호화 방식으로 서명할 수 있습니다. 암호화 서명을 사용하면 RPM 패키지의 내용을 다른 운영 체제와 검증, 통합 및 테스트할 수 있습니다.
- 빌드 프로세스 중에 테스트를 실행할 수 있습니다.
네이티브 Python 패키지의 패키징 형식은 PyPA(Python Packaging Authority) 사양으로 정의됩니다. 지금까지 대부분의 Python 프로젝트는 setup.py
파일에서 패키지 정보를 패키징하고 정의하는 데 distutils
또는 setuptools
유틸리티를 사용했습니다. 그러나 기본 Python 패키지를 생성할 가능성은 시간이 지남에 따라 진화했습니다.
-
setup.py
파일을 사용하는 Python 소프트웨어를 패키징하려면 이 문서를 따르십시오. -
pyproject.toml
파일로 최신 패키지를 패키징하려면 pyproject-rpm-macros 의README
파일을 참조하십시오.pyproject-rpm-macros
는 지원되지 않는 패키지가 포함된 CRB(CodeReady Linux Builder) 리포지토리에 포함되어 있으며 시간이 지남에 따라 최신 Python 패키징 표준을 지원할 수 있습니다.
5.1. 예제 Python 패키지에 대한 사양 파일 설명 링크 복사링크가 클립보드에 복사되었습니다!
Python 프로젝트의 RPM 사양
파일에는 Python이 아닌 RPM 사양 파일과 비교하여 몇 가지 특정 사항이
있습니다.
python3-
접두사를 포함하려면 Python 라이브러리의 모든 RPM 패키지 이름에 사용하는 것이 좋습니다.
python3-pello
패키지의 다음 예제에서 Python RPM 사양
파일 관련 노트를 참조하십시오.
Python으로 작성된 pello 프로그램의 SPEC 파일의 예
- 1
python3_pkgversion
매크로를 정의하면 이 패키지가 빌드될 Python 버전을 설정합니다. 기본 Python 버전3.12
에 대해 빌드하려면 행을 제거합니다.- 2
- Python 프로젝트를 RPM에 패키징할 때 항상
python-
접두사를 프로젝트의 원래 이름에 추가합니다. 여기에 프로젝트 이름은Pello
이며, 따라서 소스 RPM(SRPM)의 이름은python-pello
입니다. - 3
BuildRequires
는 이 패키지를 빌드하고 테스트하는 데 필요한 패키지를 지정합니다.BuildRequires
에서 항상 Python 패키지를 빌드하는 데 필요한 도구를 제공하는 항목을 포함합니다.python3-devel
과 사용자가 패키징하는 특정 소프트웨어에 필요한 관련 프로젝트(예:python3-setuptools
또는%check
섹션에서 테스트를 실행하는 데 필요한 런타임 및 테스트 종속 항목)를 포함합니다.- 4
- 바이너리 RPM의 이름(사용자가 설치할 수 있는 패키지)을 선택할 때 버전이 지정된 Python 접두사를 추가합니다. 기본 Python 3.12에
python3-
접두사를 사용합니다. 예를 들어 이후 버전의 Python을 사용할 수 있는 경우와 같이 기본 Python 버전3.12
의 경우3
으로 평가되는%{python3_pkgversion}
매크로를 사용할 수 있습니다. - 5
%py3_build
및%py3_install
매크로는 설치 위치, 사용할 인터프리터 및 기타 세부 정보를 지정하는 추가 인수와 함께setup.py build
및setup.py install
명령을 각각 실행합니다.참고setuptools
패키지의setup.py build
및setup.py install
명령을 사용하는 것은 더 이상 사용되지 않으며 향후 주요 RHEL 릴리스에서 제거됩니다. 대신 pyproject-rpm-macros 를 사용할 수 있습니다.- 6
%check
섹션은 패키지된 프로젝트의 테스트를 실행합니다. 정확한 명령은 프로젝트 자체에 따라 다르지만%pytest
매크로를 사용하여 RPM 친화적인 방식으로pytest
명령을 실행할 수 있습니다.