3.4. 심각도를 위한 RPM 확인


패키지를 만든 후 패키지의 품질을 확인합니다.

패키지 품질을 확인하는 주요 도구는 rpmlint 입니다.

rpmlint 툴은 다음을 수행합니다.

  • RPM 유지 관리 기능 개선.
  • RPM의 정적 분석을 수행하여 온전성 검사를 활성화합니다.
  • RPM의 정적 분석을 수행하여 오류 검사를 활성화합니다.

rpmlint 툴은 바이너리 RPM, 소스 RPM(SRPM) 및 SPEC 파일을 확인할 수 있으므로 다음 예와 같이 패키지의 모든 단계에 유용합니다.

rpmlint 에는 매우 엄격한 지침이 있으므로 다음 예제와 같이 일부 오류 및 경고를 건너뛸 수 있습니다.

참고

다음 예에서 rpmlint 는 옵션 없이 실행되며, 이는 비점적 출력을 생성합니다. 각 오류 또는 경고에 대한 자세한 설명을 위해 rpmlint -i 를 대신 실행할 수 있습니다.

3.4.1. sanity에 대한 bello 확인

이 섹션에서는 bello SPEC 파일 예와 bello 바이너리 RPM에서 RPM의 심각도를 확인할 때 발생할 수 있는 경고 및 오류를 보여줍니다.

3.4.1.1. bello SPEC 파일 확인

예 3.2. bello용 SPEC 파일에서 rpmlint 명령을 실행하는 출력

$ rpmlint bello.spec
bello.spec: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.

bello.spec 의 경우 하나의 경고만 있습니다. 이 경고는 Source0 지시문에 나열된 URL에 연결할 수 없음을 나타냅니다. 지정된 example.com URL이 존재하지 않기 때문에 이 문제가 예상됩니다. 나중에 이 URL이 작동할 것으로 가정하면 이 경고를 무시할 수 있습니다.

예 3.3. bello SRPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
bello.src: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.src: W: invalid-url Source0: https://www.example.com/bello/releases/bello-0.1.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.

bello SRPM의 경우 새로운 경고가 있습니다. 이 경고는 URL 지시문에 지정된 URL 에 연결할 수 없음을 나타냅니다. 향후에 링크가 작동할 것으로 가정하면 이 경고를 무시할 수 있습니다.

3.4.1.2. bello 바이너리 RPM 확인

바이너리 RPM을 확인할 때 rpmlint 는 다음 항목을 확인합니다.

  • 문서
  • 수동 페이지
  • 파일 시스템 계층 구조 표준을 일관되게 사용

예 3.4. bello의 바이너리 RPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/RPMS/noarch/bello-0.1-1.el8.noarch.rpm
bello.noarch: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Found
bello.noarch: W: no-documentation
bello.noarch: W: no-manual-page-for-binary bello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.

no-documentationno-manual-page-for-binary 경고는 RPM에 문서 또는 수동 페이지가 없음을 나타냅니다. 위의 경고 외에 RPM은 rpmlint 검사를 통과했습니다.

3.4.2. sanity에 대한 pello 확인

이 섹션에서는 pello SPEC 파일 및 pello 바이너리 RPM의 예에서 RPM의 심각도를 확인할 때 발생할 수 있는 경고 및 오류를 보여줍니다.

3.4.2.1. pello SPEC 파일 확인

예 3.5. pello용 SPEC 파일에서 rpmlint 명령을 실행하는 출력

$ rpmlint pello.spec
pello.spec:30: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}
pello.spec:34: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.pyc
pello.spec:39: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}/
pello.spec:43: E: hardcoded-library-path in /usr/lib/%{name}/
pello.spec:45: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.py*
pello.spec: W: invalid-url Source0: https://www.example.com/pello/releases/pello-0.1.2.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 5 errors, 1 warnings.

invalid-url Source0 경고에 따라 Source0 지시문에 나열된 URL에 연결할 수 없습니다. 지정된 example.com URL이 존재하지 않기 때문에 이 문제가 예상됩니다. 이 URL이 나중에 작동할 것으로 가정하면 이 경고를 무시할 수 있습니다.

hardcoded-library-path 오류는 라이브러리 경로를 하드 코딩하는 대신 %{_libdir} 매크로를 사용하도록 제안합니다. 이 예제에서는 이러한 오류를 무시해도 됩니다. 그러나 프로덕션으로 전환하는 패키지의 경우 모든 오류를 주의 깊게 확인하십시오.

예 3.6. pello SRPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
pello.src: W: invalid-url URL: https://www.example.com/pello HTTP Error 404: Not Found
pello.src:30: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}
pello.src:34: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.pyc
pello.src:39: E: hardcoded-library-path in %{buildroot}/usr/lib/%{name}/
pello.src:43: E: hardcoded-library-path in /usr/lib/%{name}/
pello.src:45: E: hardcoded-library-path in /usr/lib/%{name}/%{name}.py*
pello.src: W: invalid-url Source0: https://www.example.com/pello/releases/pello-0.1.2.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 5 errors, 2 warnings.

여기에 새로운 invalid-url URL 오류는 연결할 수 없는 URL 지시문에 대한 것입니다. 나중에 URL이 유효한 것으로 가정하면 이 오류를 무시해도 됩니다.

3.4.2.2. pello 바이너리 RPM 확인

바이너리 RPM을 확인할 때 rpmlint 는 다음 항목을 확인합니다.

  • 문서
  • 수동 페이지
  • 파일 시스템 계층 구조 표준을 일관되게 사용

예 3.7. pello의 바이너리 RPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/RPMS/noarch/pello-0.1.2-1.el8.noarch.rpm
pello.noarch: W: invalid-url URL: https://www.example.com/pello HTTP Error 404: Not Found
pello.noarch: W: only-non-binary-in-usr-lib
pello.noarch: W: no-documentation
pello.noarch: E: non-executable-script /usr/lib/pello/pello.py 0644L /usr/bin/env
pello.noarch: W: no-manual-page-for-binary pello
1 packages and 0 specfiles checked; 1 errors, 4 warnings.

no-documentationno-ECDHE-page-for-binary 경고는 RPM에 문서 또는 수동 페이지가 없음을 나타냅니다.

only-non-binary-in-usr-lib 경고는 /usr/lib/ 에 바이너리가 아닌 아티팩트만 제공했음을 나타냅니다. 이 디렉터리는 일반적으로 바이너리 파일인 공유 개체 파일용으로 예약되어 있습니다. 따라서 rpmlint/usr/lib/ 디렉토리에 있는 하나 이상의 파일이 바이너리여야 합니다.

이는 rpmlint 검사에서 파일 시스템 계층 구조 표준을 준수하는 예입니다. 일반적으로 RPM 매크로를 사용하여 파일을 올바르게 배치하십시오. 이 예제에서는 이 경고를 무시해도 됩니다.

실행 불가능한-script 오류는 /usr/lib/pello/pello.py 파일에 실행 권한이 없음을 경고합니다. 파일에hebang이 포함되어 있으므로 rpmlint 툴에서 파일을 실행할 수 있어야 합니다. 이 예제에서는 실행 권한 없이 이 파일을 그대로 두고 이 오류를 무시할 수 있습니다.

위의 경고와 오류 외에 RPM은 rpmlint 검사를 통과했습니다.

3.4.3. 유일성을 위해 cello 확인

이 섹션에서는 cello SPEC 파일 및 pello 바이너리 RPM의 예에서 RPM sanity를 확인할 때 발생할 수 있는 경고 및 오류를 보여줍니다.

3.4.3.1. cello SPEC 파일 확인

예 3.8. cello에 대한 SPEC 파일에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/SPECS/cello.spec
/home/<username>/rpmbuild/SPECS/cello.spec: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
0 packages and 1 specfiles checked; 0 errors, 1 warnings.

cello.spec 의 경우 하나의 경고만 있습니다. 이 경고는 Source0 지시문에 나열된 URL에 연결할 수 없음을 나타냅니다. 지정된 example.com URL이 존재하지 않기 때문에 이 문제가 예상됩니다. 이 URL이 나중에 작동할 것으로 가정하면 이 경고를 무시할 수 있습니다.

예 3.9. cello용 SRPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
cello.src: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.src: W: invalid-url Source0: https://www.example.com/cello/releases/cello-1.0.tar.gz HTTP Error 404: Not Found
1 packages and 0 specfiles checked; 0 errors, 2 warnings.

cello SRPM의 경우 새로운 경고가 있습니다. 이는 URL 지시문에 지정된 URL 에 연결할 수 없음을 나타냅니다. 나중에 링크가 작동한다고 가정하면 이 경고를 무시할 수 있습니다.

3.4.3.2. cello 바이너리 RPM 확인

바이너리 RPM을 확인할 때 rpmlint 는 다음 항목을 확인합니다.

  • 문서
  • 수동 페이지
  • 파일 시스템 계층 구조 표준을 일관되게 사용

예 3.10. cello의 바이너리 RPM에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/RPMS/x86_64/cello-1.0-1.el8.x86_64.rpm
cello.x86_64: W: invalid-url URL: https://www.example.com/cello HTTP Error 404: Not Found
cello.x86_64: W: no-documentation
cello.x86_64: W: no-manual-page-for-binary cello
1 packages and 0 specfiles checked; 0 errors, 3 warnings.

no-documentationno-ECDHE-page-for-binary 경고는 해당 RPM에 문서 또는 수동 페이지가 없음을 나타냅니다. 위의 경고 외에 RPM은 rpmlint 검사를 통과했습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.