환경 변수 없이 사양의 %files 섹션을 관리하는 방법

환경 변수 없이 사양의 %files 섹션을 관리하는 방법

다음 명령을 사용하여 소프트웨어용 패키지를 생성하고 있습니다 MPICH. 바이너리는 다음 위치에 설치되어야 합니다.mpich 디렉토리. 이 디렉토리는 mpich 버전에 따라 /usr/lib64/mpich-3.2/다릅니다 /usr/lib64/mpich/. 이번 섹션에서는 %install변수 MPI_BIN와 매크로 설정을 통해 MPI_LIB관리했습니다 . 그러나 이러한 변수는 이 섹션에서 확장되지 않습니다 %files.

바이너리 섹션 %files에 바이너리를 어떻게 나열할 수 있나요? 나는 기사를 읽었다오래된 게시물그러나 솔루션이 작동하지 않습니다.

답변1

%files필요한 변수가 있으면 설치 중에 생성된 파일에서 파일 이름 목록을 읽을 수 있습니다. 예를 들어

%install
echo /$MPI_BIN/somefile >>myfilelist

그런 다음 사용

%files -f myfilelist

답변2

변수는 $MPI_LIB섹션 내에서만 범위를 가집니다 %install. 매크로를 사용해 볼 수 있습니다.

%install
MPI_LIB=some_value
%global mpi_lib $MPI_LIB

%files
/usr/lib64/%{mpi_lib}

그러나 이는 매크로 정의가 사양 파일 구문 분석 시작 시 평가되기 때문에 실패합니다. 따라서 %install부품을 실행하기 전에도 마찬가지입니다 .

나는 이것을 사용할 것입니다 :

%global mpi_lib %(echo -n "mpich3")

%files
/usr/lib64/%{mpi_lib}

이 구성은 %( )콘텐츠를 쉘 스크립트로 실행하고 출력을 매크로 값으로 사용합니다.

관련 정보