Linux patch 파일 만들기 & 적용하기
patch 파일 만들기
'diff' 명령을 사용해서 patch 파일을 만든다.
① 파일 vs 파일 비교
diff [옵션] [원본파일] [수정된파일] > 출력파일.patch
예) diff -u display.c display_new.c > display.c.patch
② 디렉토리 vs 디렉토리 비교
-r 옵션이 주어지지 않으면 재귀적 동작이 이루어 지지 않는다.
파일들의 비교 결과물이 .patch 파일에 모두 출력된다.
diff [옵션] [디렉토리1] [디렉토리2] > 출력파일.patch
예) diff -urN driver/ driver_new/ > driver.patch
③ 주요 옵션
일반적으로 -urN을 많이 사용한다. 좀 더 자세한 옵션은 'diff --help'로 알아보면 된다.
-u : '--unified=3' 형식으로 결과를 표시한다. unified 형식으로 출력되며, 수정된 부분의 앞뒤
동일한 내용을 3줄만 표시한다. --unified=2 을 사용하면 동일한 라인을 2줄만 표시한다.
-r : recursive. 재귀적 검색. 하위 디렉토리를 모두 검색하여 비교한다.
-N : new file. 두 디렉토리 중 어느 한 디렉토리에만 파일이 있는 경우에도
두 디렉토리 모두에 같은 파일이 존재한다고 가정하고 비교를 진행한다.
patch 파일 적용하기
'patch' 명령을 사용해서 patch된 결과를 적용한다.
① 사용법
patch [옵션] < 결과파일.patch
예) patch -p0 < display.patch
② 주요 옵션
-p : -pNUM 형식으로 사용한다(NUM=숫자). NUM은 patch 파일안에 적힌 patch를 적용
할 파일의 경로에서 NUM 만큼의 앞 단계를 벗겨내라는 의미인다.
예를 들어, patch 파일안에 '--- driver/src/display.c'라는 경로가 있는 경우,
-p1을 사용하면 'src/display.c' 파일에 해당 patch를 적용한다.