검색

4.7. 일반적인 오류가 있는지 RPM 확인

download PDF

패키지를 만든 후 패키지의 품질을 확인하는 것이 좋습니다. 패키지 품질을 확인하는 주요 도구는 rpmlint 입니다.

rpmlint 툴을 사용하면 다음 작업을 수행할 수 있습니다.

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

rpmlint 를 사용하여 바이너리 RPM, 소스 RPM(SRPM) 및 사양 파일을 확인할 수 있습니다. 따라서 이 도구는 패키징의 모든 단계에 유용합니다.

rpmlint 에는 엄격한 지침이 있습니다. 따라서 다음 섹션에 표시된 것처럼 일부 오류 및 경고를 건너뛸 수 있는 경우가 있습니다.

참고

다음 섹션에 설명된 예에서 rpmlint 는 검증되지 않은 출력을 생성하는 옵션 없이 실행됩니다. 각 오류 또는 경고에 대한 자세한 설명은 대신 rpmlint -i 를 실행합니다.

4.7.1. 일반적인 오류가 있는지 샘플 Bash 프로그램 확인

다음 섹션에서 bello 사양 파일 및 bello 바이너리 RPM의 예에서 RPM에서 일반적인 오류가 있는지 확인할 때 발생할 수 있는 경고 및 오류를 조사합니다.

4.7.1.1. 일반적인 오류가 있는지 벨로 사양 파일 확인

다음 예제의 출력을 검사하여 벨로 사양 파일에서 일반적인 오류가 있는지 확인하는 방법을 알아봅니다.

bello 사양 파일에서 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 의 경우 invalid-url Source0 경고 하나만 있습니다. 이 경고는 Source0 지시문에 나열된 URL에 연결할 수 없음을 의미합니다. 지정된 example.com URL이 없기 때문에 이는 예상되는 것입니다. 이 URL이 나중에 유효하다고 가정하면 이 경고를 무시할 수 있습니다.

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의 경우 새로운 invalid-url URL 경고가 있습니다. 즉, URL 지시문에 지정된 URL 에 연결할 수 없습니다. 이 URL이 나중에 유효하다고 가정하면 이 경고를 무시할 수 있습니다.

4.7.1.2. 일반적인 오류가 있는지 벨로 바이너리 RPM 확인

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

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

다음 예제의 출력을 검사하여 벨로 바이너리 RPM에서 일반적인 오류가 있는지 확인하는 방법을 알아봅니다.

벨로 바이너리 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 검사를 전달했습니다.

4.7.2. 일반적인 오류가 있는지 샘플 Python 프로그램 확인

다음 섹션에서 pello 사양 파일 및 pello 바이너리 RPM 예제의 RPM 콘텐츠를 검증할 때 발생할 수 있는 경고 및 오류를 조사합니다.

4.7.2.1. 일반적인 오류가 있는지 pello 사양 파일 확인

다음 예제의 출력을 검사하여 pello 사양 파일에서 일반적인 오류가 있는지 확인하는 방법을 알아봅니다.

pello 사양 파일에서 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-ctlplane-path 오류는 라이브러리 경로를 하드 코딩하는 대신 %{_libdir} 매크로를 사용하는 것이 좋습니다. 이 예제에서는 이러한 오류를 무시해도 됩니다. 그러나 프로덕션 환경으로 들어오는 패키지의 경우 모든 오류를 주의 깊게 확인합니다.

SRPM for pello에서 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 에 연결할 수 없음을 의미합니다. 이 URL이 나중에 유효하다고 가정하면 이 경고를 무시할 수 있습니다.

4.7.2.2. 일반적인 오류가 있는지 pello 바이너리 RPM 확인

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

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

다음 예제의 출력을 검사하여 pello 바이너리 RPM에서 일반적인 오류가 있는지 확인하는 방법을 알아봅니다.

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-manual-page-for-binary 경고는 제공하지 않았기 때문에 RPM에 문서 또는 수동 페이지가 없음을 의미합니다.
  • only-binary-in-usr-lib 경고는 /usr/lib/ 디렉터리에 바이너리가 아닌 아티팩트만 제공했음을 의미합니다. 이 디렉터리는 일반적으로 바이너리 파일인 공유 오브젝트 파일에 사용됩니다. 따라서 rpmlint/usr/lib/ 에 있는 하나 이상의 파일이 바이너리가 될 것으로 예상합니다.

    다음은 Filesystem Hierarchy Standard의 준수를 확인하는 rpmlint 검사의 예입니다. 파일이 올바르게 배치되도록 하려면 RPM 매크로를 사용합니다. 이 예제에서는 이 경고를 무시해도 됩니다.

  • non-executable-script 오류는 /usr/lib/pello/pello.py 파일에 실행 권한이 없음을 의미합니다. 파일에 shebang (#!)이 포함되어 있으므로 rpmlint 툴에서 파일을 실행할 수 있을 것으로 예상합니다. 이 예제의 목적을 위해 실행 권한 없이 이 파일을 그대로 두고 이 오류를 무시할 수 있습니다.

출력 경고 및 오류 외에도 RPM은 rpmlint 검사를 통과했습니다.

4.7.3. 일반적인 오류가 있는지 샘플 C 프로그램 확인

다음 섹션에서 cello 사양 파일 및 셀오 바이너리 RPM 예제의 RPM 콘텐츠를 검증할 때 발생할 수 있는 경고 및 오류를 조사합니다.

4.7.3.1. 일반적인 오류가 있는지 cello 사양 파일 확인

다음 예제의 출력을 검사하여 cello 사양 파일에서 일반적인 오류를 확인하는 방법을 알아봅니다.

cello 사양 파일에서 rpmlint 명령을 실행하는 출력

$ rpmlint ~/rpmbuild/SPECS/cello.spec
/home/admiller/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 의 경우 invalid-url Source0 경고 하나만 있습니다. 이 경고는 Source0 지시문에 나열된 URL에 연결할 수 없음을 의미합니다. 이는 지정된 example.com URL이 없기 때문에 예상됩니다. 이 URL이 나중에 유효하다고 가정하면 이 경고를 무시할 수 있습니다.

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의 경우 새로운 invalid-url URL 경고가 있습니다. 이 경고는 URL 지시문에 지정된 URL 에 연결할 수 없음을 의미합니다. 이 URL이 나중에 유효하다고 가정하면 이 경고를 무시할 수 있습니다.

4.7.3.2. 일반적인 오류가 있는지 cello 바이너리 RPM 확인

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

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

다음 예제의 출력을 검사하여 cello 바이너리 RPM에서 일반적인 오류가 있는지 확인하는 방법을 알아봅니다.

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-manual-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.