패치(Unix)

patch (Unix)
패치
TuxOnIce patching.png
패치 사용의 스크린샷.
원저작자래리 월
개발자폴 에거트, 웨인 데이비슨, 데이비드 맥켄지, 안드레아스 그룬바허
초기 릴리즈1985년 5월 24일, 37년 전(1985-05-24)
저장소
운영 체제Unix 및 Unix 유사, MSX-DOS, Microsoft Windows
플랫폼크로스 플랫폼
유형명령어
웹 사이트savannah.gnu.org/projects/patch/ Edit this on Wikidata

컴퓨터 도구 패치는 패치 파일이라는 별도의 파일에 포함된 지침에 따라 텍스트 파일을 업데이트하는 Unix 프로그램입니다.패치 파일(일명 패치라고도 함)은 차이점 목록으로 구성된 텍스트 파일로 원래 파일과 업데이트된 파일을 인수로 사용하여 관련 diff 프로그램을 실행하여 생성됩니다.패치를 사용하여 파일을 업데이트하는 것을 흔히 패치 적용 또는 단순히 파일 패치 적용이라고 합니다.

역사

원래의 패치 프로그램은 Larry Wall에 의해 작성되어 (Perl 프로그래밍 언어를 작성)에 게시되었습니다.mod.sources[1] (나중에,comp.sources.unix1985년 5월).프로그램의 변종(단,[2][3][4] 유일한 것은 아님)은[5] GNU 프로젝트일부이며 FSF에 의해 유지된다.

사용 상황

다른 프로그래머를 위해 프로그래머에 의해 개발된 패치는 소스 코드를 새로운 버전으로 업데이트하기 위해 자주 사용되었습니다.이 때문에 많은 사람들이 패치를 소스 코드에 연관지을 수 있게 되었지만 실제로는 어떤 텍스트에도 패치를 적용할 수 있게 되었습니다.패치된 파일에는 불필요한 텍스트가 축적되지 않습니다.이것은 일부 사람들이 영어의 의미에 근거해 인식하고 있는 것입니다.패치는 텍스트를 추가할 때와 마찬가지로 삭제할 수 있습니다.

여기서 설명하는 패치는 이진 패치와 혼동해서는 안 됩니다.이 패치는 개념적으로는 비슷하지만 프로그램을 구성하는 이진 파일을 새로운 릴리스로 업데이트하기 위해 배포됩니다.

소프트웨어 개발 중 패치

패치의 입력이 되는 diff 파일은 읽기 쉬운 텍스트 파일이기 때문에 사람이 사용하기 전에 쉽게 검토하거나 수정할 수 있습니다.

"diff" 프로그램 외에도, diff는 Subversion, CVS, RCS, MercurialGit과 같은 다른 프로그램에서도 생성될 수 있습니다.

패치는 CVS를 포함한 많은 소스 제어 시스템의 중요한 컴포넌트입니다.

고도의 차이

보다 고도의 diff 를 사용하는 경우, 그 사이에 변경된 파일에도 패치를 적용할 수 있습니다.단, 이러한 변경이 패치에 영향을 주지 않는 한, 그 사이에 변경된 파일에도 패치를 적용할 수 있습니다.이것은, 각 변경을 콘텍스트로 둘러싸는콘텍스트의 차이」와 「통합의 차이」(「유니디프」라고도 불립니다)를 사용해 실현됩니다.이러한 차이는, 변경된 부분의 바로 전후의 텍스트입니다.그런 다음 이 콘텍스트를 사용하여 파일 내의 이전 변경으로 인해 위치가 바뀌었더라도 diff 내의 회선 번호를 시작점으로 하여 패치를 적용할 영역을 찾을 수 있습니다.이 속성 때문에 콘텍스트와 유니파이드 diff는 많은 소프트웨어 프로젝트에 제출하기 위해 권장되는 패치 형식입니다.

위의 기능에 의해 diff 및 패치는 오픈소스 소프트웨어로의 변경 교환에 특히 적합합니다.외부인은 최신 공개 소스 코드를 다운로드하여 수정한 후 다른 형태로 개발팀에 전송할 수 있습니다.개발팀은 diff를 사용하여 패치를 적용하기 전에 효과적으로 검토할 수 있으며 외부 개발자가 접근할 수 있는 코드베이스보다 새로운 코드베이스에 적용할 수 있습니다.

사용 예

패치를 작성하려면 셸에서 다음 명령을 실행할 수 있습니다.

$diff -u oldFile newFile > mods.diff # -u가 diff를 출력하도록 지시함

패치를 적용하려면 셸에서 다음 명령을 실행할 수 있습니다.

$ 패치 < mods.diff

이 명령어는 에서 설명하는 지정된 파일에 변경을 적용하도록 패치에 지시합니다.mods.diff. 서브디렉토리의 파일에 대한 패치는 추가가 필요합니다.-pnumberoption. 여기서 number는 소스 트리의 기본 디렉토리가 diff에 포함된 경우 1이고, 그렇지 않은 경우 0입니다.

패치는 를 사용하여 실행 취소 또는 되돌릴 수 있습니다.-R' 옵션:

$ 패치 -R < mods.diff

파일이 diff가 생성된 버전과 동일하지 않은 경우 패치를 새로 적용할 수 없습니다.예를 들어, 텍스트의 행이 선두에 삽입되어 있는 경우, 패치로 참조되고 있는 행 번호가 올바르지 않게 됩니다.패치는 패치를 적용할 텍스트를 재배치하기 위해 가까운 행을 참조함으로써 이 행에서 회복할 수 있습니다.또, 콘텍스트의 행(콘텍스트와 유니파이드 diff의 경우)이 변경되어도 회복됩니다.이것은 퍼즈라고 불립니다.

패치 포트

원래 Unix 및 Unix 유사 시스템용으로 작성된 패치는 Windows 및 기타 많은 플랫폼에도 이식되어 있습니다.패치의 Windows 포트는 GnuWin32UnxUtils에서 제공됩니다.

A patch명령어는 ASCII의 MSX-DOS2 Tools for MSX-DOS 버전2에도 포함되어 있습니다.[6]

「 」를 참조해 주세요.

레퍼런스

  1. ^ Larry Wall (May 24, 1985). "patch version 1.3". Google.com at mod.sources.
  2. ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Wayback Machine OpenBSD 패치 소스로 2017-06-07 아카이브 완료
  3. ^ https://sourceforge.net/projects/schilytools/files/ Schily 툴 컬렉션에 패치 버전이 있습니다.
  4. ^ 패치 버전은 IBM, Oracle 및 Open Software Foundation에 의해 관리됩니다.
  5. ^ "Patch - Free Software Directory". Free Software Directory. Free Software Foundation. 2010-05-01. Retrieved 2016-05-25.
  6. ^ ASCII Corporation의 MSX-DOS2 Tools 사용자 매뉴얼

외부 링크