patch

패치 파일에 포함된 지시에 따라 텍스트 파일을 수정하는 유닉스 프로그램

patch 컴퓨터 도구는 패치 파일로 불리는 별도의 파일에 포함된 지시에 따라 텍스트 파일을 업데이트하는 유닉스 프로그램이다. 이 패치 파일은 줄여서 간단히 패치라고도 하며, 일련의 차이를 구성하고 있는 텍스트 파일인데 이 파일은 원래의 파일과 업데이트된 파일을 변수로 받아 관련 diff 프로그램을 실행하여 만들어진다. patch로 파일을 업데이트하는 일을 "패치를 적용한다"고 표현한다.

patch
원저자래리 월
개발자Paul Eggert, Wayne Davison, David MacKenzie, Andreas Grünbacher
발표일1985년 5월 24일(39년 전)(1985-05-24)
저장소
운영 체제유닉스, 유닉스 계열, MSX-DOS, 마이크로소프트 윈도우
종류명령어

역사

편집

최초의 patch 프로그램은 프로그래밍 언어를 창시한 래리 월이 작성하여 mod.sources[1](나중의 comp.source.unix)에 1985년 5월에 게시한 것이다. 프로그램 변종들 중 하나[2][3][4]GNU 프로젝트의 일부로서 FSF에 의해 유지보수되고 있다.

사용 예

편집

셸에 다음의 명령을 입력하면 패치를 만들 수 있다:

  $ diff -u oldFile newFile > mods.diff  # -u는 통일(unified) 포맷으로 출력함을 의미

패치를 적용하려면 다음의 명령을 셸에 입력한다:

  $ patch < mods.diff

위의 명령은 patch가 mods.diff에 기술된 지정 파일로 변경 사항을 적용하게 한다. 하위 디렉터리에 위치한 파일들에 대한 패치들은 추가적인 -p숫자 옵션을 요구하며, 여기에서 숫자는 소스 트리의 기본 디렉터리가 diff에 위치해 있으면 1이고, 그렇지 않으면 0으로 지정한다.

'-R' 옵션을 사용하면 적용된 패치를 되돌릴 수 있다:

  $ patch -R < mods.diff

파일이 diff 생성 시의 버전과 유사하지 않으면 패치는 깨끗하게 적용되지 않을 수 있다. 이를테면 텍스트의 줄들이 처음에 삽입된 경우 해당 패치에서 가리키는 줄 번호를 정확하지 않을 수 있다. patch는 주변의 줄들을 찾아서 패치가 적용될 텍스트를 재할당하는 방법으로 이러한 상황을 모면할 수 있다. 이 경우 fuzz로 기술된다.

같이 보기

편집

각주

편집
  1. Larry Wall (1985년 5월 24일). “patch version 1.3”. Google.com at mod.sources. 2020년 1월 24일에 원본 문서에서 보존된 문서. 2015년 11월 28일에 확인함. 
  2. http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Archived 2017년 6월 7일 - 웨이백 머신 OpenBSD patch source
  3. https://sourceforge.net/projects/schilytools/files/ A version of patch exists in the Schily tools collection
  4. A version of patch is maintained by IBM, Oracle and the Open Software Foundation

외부 링크

편집