검색

3장. RPM 패키지 소프트웨어 준비

download PDF

RPM을 사용하여 패키징할 소프트웨어를 준비하려면 먼저 소프트웨어를 패치하고 LICENSE 파일을 만들고 tarball로 보관하면 됩니다.

3.1. 패치 소프트웨어

소프트웨어를 패키징할 때는 버그 수정 또는 구성 파일 변경과 같은 원래 소스 코드를 변경해야 할 수 있습니다. RPM 패키징에서는 원래 소스 코드를 그대로 두고 패치를 적용할 수 있습니다.

패치는 소스 코드 파일을 업데이트하는 텍스트입니다. 패치는 두 버전의 텍스트의 차이를 나타내기 때문에 diff 형식이 있습니다. diff 유틸리티를 사용하여 패치를 생성한 다음 patch 유틸리티를 사용하여 소스 코드에 패치를 적용할 수 있습니다.

참고

소프트웨어 개발자는 종종 Git 과 같은 버전 제어 시스템을 사용하여 코드 기반을 관리합니다. 이러한 도구는 diffs 또는 Patch 소프트웨어를 만드는 자체 방법을 제공합니다.

3.1.1. 샘플 C 프로그램에 대한 패치 파일 생성

diff 유틸리티를 사용하여 원래 소스 코드에서 패치를 생성할 수 있습니다. 예를 들어 C (cello.c)로 작성된 Hello world 프로그램을 패치하려면 다음 단계를 완료합니다.

사전 요구 사항

  • 시스템에 diff 유틸리티를 설치했습니다.

    # yum install diffutils

절차

  1. 원래 소스 코드를 백업합니다.

    $ cp -p cello.c cello.c.orig

    p 옵션은 모드, 소유권 및 타임스탬프를 유지합니다.

  2. 필요에 따라 cello.c 를 수정합니다.

    #include <stdio.h>
    
    int main(void) {
        printf("Hello World from my very first patch!\n");
        return 0;
    }
  3. 패치를 생성합니다.

    $ diff -Naur cello.c.orig cello.c
    --- cello.c.orig        2016-05-26 17:21:30.478523360 -0500
    + cello.c     2016-05-27 14:53:20.668588245 -0500
    @@ -1,6 +1,6 @@
     #include<stdio.h>
    
     int main(void){
    -    printf("Hello World!\n");
    +    printf("Hello World from my very first patch!\n");
         return 0;
     }
    \ No newline at end of file

    + 로 시작하는 줄은 - 로 시작하는 행을 바꿉니다.

    참고

    대부분의 사용 사례에 적합하므로 diff 명령과 함께 n ur 옵션을 사용하는 것이 좋습니다.

    • - n (--new-file)

      N 옵션은 없는 파일을 빈 파일로 처리합니다.

    • -a (--text)

      a 옵션은 모든 파일을 텍스트로 처리합니다. 결과적으로 diff 유틸리티는 바이너리로 분류된 파일을 무시하지 않습니다.

    • -u (-U NUM 또는 --unified[=NUM])

      -u 옵션은 통합 컨텍스트의 출력 NUM(기본값 3) 줄로 출력을 반환합니다. 이는 패치 파일에서 일반적으로 사용되는 컴팩트하고 쉽게 읽을 수 있는 형식입니다.

    • -r (--recursive)

      r 옵션은 diff 유틸리티에서 발견된 하위 디렉토리를 재귀적으로 비교합니다.

    그러나 이 특별한 경우에는 -u 옵션만 필요합니다.

  4. 패치를 파일에 저장합니다.

    $ diff -Naur cello.c.orig cello.c > cello.patch
  5. 원본 cello.c 를 복원 :

    $ mv cello.c.orig cello.c
    중요

    RPM 패키지를 빌드할 때 RPM 패키지 관리자가 수정된 파일이 아닌 원본 파일을 사용하므로 원래 cello.c 를 유지해야 합니다. 자세한 내용은 사양 파일 작업을 참조하십시오.

추가 리소스

  • diff(1) 도움말 페이지

3.1.2. 샘플 C 프로그램 패치

소프트웨어에 코드 패치를 적용하려면 patch 유틸리티를 사용할 수 있습니다.

사전 요구 사항

절차

다음 단계는 cello.c 파일에 이전에 생성된 cello.patch 파일을 적용합니다.

  1. 패치 파일을 패치 명령으로 리디렉션합니다.

    $ patch < cello.patch
    patching file cello.c
  2. cello.c 의 내용이 이제 원하는 변경 사항을 반영하는지 확인합니다.

    $ cat cello.c
    #include<stdio.h>
    
    int main(void){
        printf("Hello World from my very first patch!\n");
        return 1;
    }

검증

  1. 패치된 cello.c 프로그램을 빌드합니다.

    $ make
    gcc -g -o cello cello.c
  2. 빌드된 cello.c 프로그램을 실행합니다.

    $ ./cello
    Hello World from my very first patch!
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.