오류: 패치 2147483647이 여러 번 정의되었습니다.

오류: 패치 2147483647이 여러 번 정의되었습니다.

제목이 난해해서 죄송합니다. 제가 얻은 내용은 다음과 같습니다.

bash-4.2# rpmbuild --rebuild dcmtk-3.6.7-3.fc39.src.rpm
Installing dcmtk-3.6.7-3.fc39.src.rpm
warning: user mockbuild does not exist - using root
warning: group mock does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mock does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mock does not exist - using root
warning: user mockbuild does not exist - using root
warning: group mock does not exist - using root
error: patch 2147483647 defined multiple times

rpmbuild 명령에 내가 뭘 잘못하고 있나요?

참고로:

bash-4.2# rpmbuild --version
RPM version 4.11.3

전체 단계:

% cat Dockerfile
FROM public.ecr.aws/lambda/dotnet:7
WORKDIR /tmp
RUN curl -O https://kojipkgs.fedoraproject.org//packages/dcmtk/3.6.7/3.fc39/src/dcmtk-3.6.7-3.fc39.src.rpm
RUN yum -y update && yum -y install rpm-build
RUN rpmbuild --rebuild dcmtk-3.6.7-3.fc39.src.rpm

다음에도 적용됩니다.

% cat Dockerfile
FROM public.ecr.aws/lambda/dotnet:7
WORKDIR /tmp
RUN curl -O https://kojipkgs.fedoraproject.org//packages/dcmtk/3.6.7/3.fc39/src/dcmtk-3.6.7-3.fc39.src.rpm
RUN yum -y update && yum -y install rpm-build cmake gcc-c++ libjpeg-devel \
 libpng-devel libtiff-devel libxml2-devel openssl-devel zlib-devel doxygen \
 git-core
RUN rpm -i dcmtk-3.6.7-3.fc39.src.rpm
WORKDIR  /root/rpmbuild/SPECS/
RUN rpmbuild -ba dcmtk.spec

결과 :

% docker build .
[...]
error: patch 2147483647 defined multiple times
The command '/bin/sh -c rpmbuild -ba dcmtk.spec' returned a non-zero code: 1

정의된 패치에 대해서는 여기에서 .spec 파일을 확인하세요.

% grep Patch: dcmtk.spec
Patch:      0001-Use-system-CharLS-include.patch
Patch:      0002-Add-FindCharLS.patch
Patch:      0003-Find-and-include-CharLS.patch
Patch:      0004-Use-cmake-suggested-locations-for-CharLS.patch
Patch:      0005-Correct-CharLS-API-call.patch
Patch:      0006-Remove-reference-to-bundled-CharLS.patch
Patch:      0007-Update-JLS_ERROR-to-jpegls_error-in-CharLS-usage.patch
Patch:      0008-Correct-JpegLsReadHeader-arguments.patch
Patch:      0009-Update-JlsParameters-for-new-CharLS.patch
Patch:      0010-Correct-JpegLsDecode-arguments-for-CharLS-2.patch
Patch:      0011-Update-ilv-for-new-CharLS.patch
Patch:      0012-Correct-extra-include-for-CharLS.patch
Patch:      0013-Update-errors-to-use-enum-class-in-CharLS-2.patch
Patch:      0014-Define-BYTE-for-CharLS.patch
Patch:      0015-Update-colorTransformation-for-CharLS-2.patch
Patch:      0016-Update-JpegLsEncode-for-CharLS-2.patch
Patch:      0017-Increase-sleep-for-tests.patch
Patch:      0018-CVE-2022-43272-Fixed-memory-leak-in-single-process-mode.patch

이 오류를 해결하기 위해 적용된 두 패치 중 하나에 주석을 달 수 있다는 것을 알았습니다. 예를 들면 다음과 같습니다.

sed -e '/0017-Increase-sleep-for-tests.patch/ s/^#*/#/' -i dcmtk.spec

그런데 이 숫자가 어디서 나오는지 궁금합니다 2147483647.

답변1

amazonlinux/2의 rpmbuild는 여러 패치가 있는 "patch:"를 지원하지 않는 것으로 나타났습니다. 명시적인 대체 형식을 사용해야 합니다.

Patch0:        foo.patch
Patch1:        bar.patch

이는 향후 amazonlinux 이미지에서 수정될 수 있습니다.

인용하다:

관련 정보