%config(noreplace)
다른 RPM에 의해 설치된 파일을 수정하는 RPM을 생성하는 올바른 방법은 무엇입니까?
일반적인 문제의 구체적인 예: 정의가 내부 이미지를 almalinux-repos
가리키도록 설치된 저장소 정의를 수정하려고 합니다 . baseurl
저장소 정의는 %config(noreplace)
에 있으므로 almalinux-repos
다양한 방법으로 수정할 수 있습니다. 그러나 우리는 수정 사항도 패키지로 만들고 싶습니다.
한 가지 아이디어는 새 패키지를 만드는 것입니다 Obsoletes: almalinux-repos
. 이는 almalinux-repos
as를 사용한 BuildRequires
다음 해당 파일을 빌드 루트에 포함시키는 것을 제안합니다. Obsoletes
쉽게 상할 수 있으므로 이 방법은 사용하지 않는 것이 좋습니다.
또 다른 아이디어는 새 패키지를 만든 Requires: almalinux-repos
다음 이를 사용하여 %patch
파일을 수정하는 것입니다.
두 번째 질문: 이 메커니즘을 사용한다고 가정할 때 , 패키지 확인에 자동으로 포함되도록 새 패키지에 %patch
추가해야 합니까 ?Supplements: almalinux-repos
답변1
almalinux-repos
두 번째 접근 방식에는 로컬 패키지가 설치될 때까지 패키지의 파일을 수정할 수 없다는 문제가 있습니다. 수정이 있을 경우 %patch
올바르게 적용되지 않을 위험이 있습니다.
내 접근 방식은 RPM 파일을 사용하는 것이 아니라 Ansible을 사용하여 관심 있는 구성 파일에 올바른 설정이 있는지 확인하는 것입니다. 다른 많은 가능성이 있습니다. 이 접근 방식은 실제 솔루션이라기보다는 독선적인 솔루션에 가깝습니다.