RPMBuild가 TCL에서 전화했을 때 Topdir가 기본값으로 설정되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/416983

  •  03-07-2019
  •  | 
  •  

문제

rpmbuild를 'exec'rpmbuild로하는 tcl 스크립트가 있습니다. 그렇게 할 때 RPMBuild가 사용하는 'Topdir'가 잘못되었습니다. 내 홈 디렉토리에 .rpmmacros 파일이 있고 수동으로 rpmbuild를 호출하면 잘 작동합니다. 'Topdir'는 기본값이 아닙니다.

나는 추가했다 exec rpmbuild "-showrc" TCL 스크립트에서 값을 확인합니다 Topdir 그리고 기본값 인 '-14 : _topdir %{_ usrsrc}/redhat'이라고 말합니다.

누군가가 왜 그 상황인지, 어떻게 해결하는지 설명 할 수 있습니까?

나는 실제로 makefile에서 수행되기 때문에 -define으로 그것을 지정하지 않기를 원하며 그것을 만지고 싶지 않기 때문에 (다른 선택이 없다면, 나는 그것을 할 것입니다).

도움이 되었습니까?

해결책

기본 rpmbuild topdir를 변경하는 두 가지 방법이 있습니다.

  1. 사용자 당 : $ home/.rpmmacros의 RPM Topdir를 구성하여

    %_topdir    %{getenv:HOME}/rpmbuild
    
  2. 프로젝트 당 : makefile 또는 명령 줄에서 RPM Topdir를 구성하여

    rpmbuild --define '_topdir build' -ba package.spec
    

참고 : 두 경우 모두 Topdir 디렉토리에 적절한 디렉토리 (빌드, SRPM, RPM, 사양 및 소스)가 있는지 확인해야합니다.

다른 팁

~ 안에 RHEL6 하다:

  rpm --showrc|grep topdir
  rpm --showrc|grep srcrpmdir

사용되는 경로가 무엇인지 확인하십시오!

이 변경을 만드십시오 (내 Topdir가 설정되지 않았습니다. /usr/src/):

vi  /usr/lib/rpm/macros
#       Path to top of build area.
#%_topdir               %{getenv:HOME}/rpmbuild
%_topdir                %{_usrsrc}/redhat

rpm --showrc|grep topdir    now shows   /usr/src/redhat/ as its BUILD dir

TCL은 기본적으로 현재 디렉토리에서 실행됩니다. tcl 명령을 사용하여 현재 디렉토리를 변경할 수 있습니다. http://www.tcl.tk/man/tcl8.4/tclcmd/cd.htm CD, 예를 들어 :

cd ~username

Topdir가 환경 변수 인 경우 설정할 수 있습니다. http://www.tcl.tk/man/tcl8.4/tclcmd/tclvars.htm#m4 이와 같이:

set env(topdir) whatever/you/want

첫 번째 점검은 동일한 것을 실행하는 것입니다. 명령 줄 에서이 두 가지를 수행하여 별칭이나 경로가 아무것도 방해하지 않도록하십시오.

which rpmbuild

echo 'puts [auto_execok rpmbuild]' | tclsh

필자의 경우, 이것은 rpmbuild가 호출 될 때 설정되지 않은 변수 $ 홈 때문입니다.
변수는 '/rpmmacros'파일을 검색하는 데 사용됩니다. 'printenv'명령을 사용하여 확인하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top