리눅스/LFS

[LFS12] Patch 빌드

sik13579 2026. 4. 8. 00:32

1. Patch 패키지의 역할

Patch는 리눅스 시스템에서 '변경사항 적용기' 역할을 하는 도구입니다.

단순히 파일을 여는 편집기가 아니라, 원본 파일과 수정본의 차이점(diff) 을 기록한 패치 파일을 읽어, 그 변경 내용을 원본 소스코드나 설정 파일에 자동으로 반영해 주는 프로그램입니다.

 

2. Patch 패키지의 구성

이 패키지는 겉보기에는 단순해 보이지만, 실제로는 패치 적용에 필요한 핵심 기능들로 이루어져 있습니다.

  • patch : 핵심 실행 프로그램입니다.
    패치 파일을 읽어 어떤 파일의 몇 번째 줄이 어떻게 바뀌어야 하는지 해석한 뒤, 실제 파일에 그 변경사항을 반영합니다. 
    GNU 문서에 따르면 patch는 diff형식을 자동으로 판별하고, 헤더 정보를 이용해 어떤 파일을 수정해야 하는지도 결정합니다.
  • 옵션 체계 : 적용 방식을 세밀하게 제어합니다.
    -pN 옵션은 경로 앞부분을 몇 단계 제거할지 결정하고 -i는 입력할 패치 파일을 지정하며, -b는 원본 백업을 남기게 해 줍니다.
  • 자동 보정 기능 : 완벽히 일치하지 않아도 문맥을 바탕으로 적용을 시도합니다.
    GNU 문서는 patch가 주변 문맥을 검색해 줄 번호가 조금 어긋난 경우에도 패치를 적용할 수 있다고 설명합니다. 그래서 소스가 약간 달라져 있어도 패치가 성공 하는 경우가 많습니다.

3. Patch 패키지 빌드

1. 소스 준비 및 이동 (lfs 유저)

cd $LFS/sources
tar -xvf patch-2.8.tar.xz
cd patch-2.8

 

2. 설정 

./configure --prefix=/usr                     \
            --host=$LFS_TGT                   \
            --build=$(build-aux/config.guess)

 

3. 컴파일 및 설치

make
make DESTDIR=$LFS install

 

4. 뒷정리

cd $LFS/sources
rm -rf patch-2.8