"-p1" 등을 사용하여 루트 슬래시를 제거합니다.

"-p1" 등을 사용하여 루트 슬래시를 제거합니다.

내가 아는 한, patch특정 경로 구성 요소가 제거되면 응용 프로그램 패치가 허용됩니다.

-p0매개변수가 경로를 처리 하지만있는 그대로:

/var/www/html/example.com

-p1루트 슬래시가 제거되므로 사용하는 경로는 다음과 같습니다.

var/www/html/example.com

전체 경로로 패치하는 대신 루트 슬래시(또는 경로의 이전 구성 요소)를 제거하는 이유는 무엇입니까?

상대 경로를 통해 디렉토리 트리를 심화시키는 논리를 볼 수 있지만 대부분의 경우 그것이 실용적이거나 유용한지 여부는 알 수 없습니다.

답변1

patch이것POSIX 유틸리티입니다, 이 옵션의 사용 예는 유틸리티 표준 사양의 이론적 근거 섹션에 나와 있습니다 -p.

-p옵션을 사용하면 패치 파일을 수동으로 편집하지 않고도 로컬 사용자 디렉터리 구조에 맞게 패치 파일을 사용자 정의할 수 있습니다. 예를 들어, 패치 파일의 파일 이름이 다음과 같은 경우:

/curds/whey/src/blurfl/blurfl.c

설정은 -p 0수정되지 않은 전체 경로 이름을 제공합니다 -p 1.

curds/whey/src/blurfl/blurfl.c

프리앰블 없이 다음을 <slash>제공 -p 4합니다.

blurfl/blurfl.c

-p를 전혀 지정하지 않으면 다음이 제공됩니다.

blurfl.c

이것OpenBSD 매뉴얼다음은 유용할 수 있는 유사하지만 약간 확장된 예입니다 -p(강조).

-p strip-count,--strip strip-count

패치 파일에 있는 경로 이름을 처리하는 방법을 제어하는 ​​경로 이름 수를 설정합니다.패치를 보낸 사람과 다른 디렉터리에 파일을 저장한 경우. 제거 횟수는 경로 이름 앞에서 제거할 슬래시 수를 지정합니다. (중간에 있는 모든 디렉터리 이름도 사라집니다.) 예를 들어 패치 파일의 파일 이름이 다음과 같다고 가정합니다 /u/howard/src/blurfl/blurfl.c.

이 설정은 -p0수정되지 않은 전체 경로 이름을 제공합니다.

-p1주어진

u/howard/src/blurfl/blurfl.c

앞에 슬래시가 없습니다.

-p4주어진

blurfl/blurfl.c

계속해서 다음과 같이 말합니다.

-p이를 전혀 지정하지 않으면 blurfl.c선행 경로( )의 모든 디렉터리가 u/howard/src/blurfl존재하고 경로가 상대 경로가 아닌 경우에만 제공됩니다. 이 경우 전체 경로 이름이 수정되지 않은 상태로 표시됩니다. 결과적으로 무엇이든지 현재 디렉토리나 옵션에 지정된 디렉토리에서 검색됩니다 -d.

즉, 적용되는 파일에 대한 절대 경로가 포함된 패치를 얻고 해당 파일을 다른 디렉터리에 보관하는 경우 -p적절한 번호를 사용하여 패치의 경로를 -d(또는 현재 디렉터리) 로 "오프셋"할 수 있습니다. .

답변2

이것수리하다이 명령은 파일을 변경하는 방법에 대한 소스 파일의 지침을 읽은 다음 변경 사항을 적용합니다(예:자세한 내용은). 그리고 지나가다-pN플래그를 건너뛰었습니다.질소패치 파일에 있는 파일 이름의 앞에는 슬래시가 있습니다.
디렉토리 부분에 관한 내용입니다.차이점머리글. 귀하의 경우 diff 헤더에는 다음 문자열이 포함되어 있습니다 /var/www/html/example.com. -p1 플래그를 사용하면 패치 유틸리티는 문자열 리더에서 디렉토리를 제거하고 var/www/html/example.com패치하려는 디렉토리를 얻게 됩니다. -p0 매개변수를 사용하여 패치하면 문자열에서 아무것도 제거되지 않으며 올바르게 작동하지 않습니다.

예를 들어:
SSH2.xs 파일 패치를 올바르게 호출하려면(패치 파일은 다음 위치에 있습니다.rt.cpan.org/Public/Bug/Display.html?id=36614):

patch -p1 < net-ssh2-0.18-perl5.10.patch

패치 파일에는 패치 이전에 삭제한 디렉터리가 포함되어 있으며 Net-SSH-0.18.orig, SSH2.x2 파일이 위치한 디렉터리에서 위의 작업을 실행해야 합니다.

인용하다:
1.-p0 및 -p1
2.매뉴얼 페이지-IBM

관련 정보