이 문제에 대한 답을 찾기 위해 인터넷을 검색했지만 아무런 정보도 얻을 수 없었습니다. 나는 내 자신의 RPM을 구축 중이며 특정 파일을 특정 디렉토리에 압축 해제하는 데 필요합니다. 이러한 디렉터리는 사용자에게 속하므로 , 및 ( ) support
에 매핑되어야 합니다 . 그러나 rpm을 빌드하기 위해 명령을 실행하면 다음과 같습니다.~/exporttool
~/bin
~/jlog
/home/support/directory
rpmbuild -v -bb SPEC/supportScripts.spec
알겠어요:
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd8
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/exportToTransferSyntax.sh
나는 여기 있다협회사양 문서. 누군가 내가 뭘 잘못하고 있는지, 사양 파일을 올바르게 매핑하도록 구성하는 방법을 말해 줄 수 있습니까?/home/support/directoryOfWhereFilesShouldGo
답변1
이 /home
디렉토리에 소프트웨어를 설치하기 위해 RPM을 사용하지 마십시오. 이것은 단지 나쁜 생각입니다. RPM은 시스템 관리 디렉터리 /bin
( 등) 에서만 사용할 수 있습니다 /usr/bin
.
대신 소프트웨어는 다음 디렉터리 중 하나에 설치되어야 합니다.
- 심볼릭 링크되거나
- 예를 들어, 일단 설치되면
/usr/bin
시스템의 를 통해 이러한 도구에 액세스할 수 있습니다$PATH
.
Linux/Unix에서 어떤 작업을 하려고 할 때 수행하기 어렵다고 느낄 때마다 한발 물러나야 합니다. 이것은 당신에게 무언가를 말해주는 아키텍처/시스템입니다. 당신은 아마도 해서는 안 될 일을 하고 있을 것이고, 그것이 사용되도록 설계된 방식에 어긋나는 일을 하고 있을 것입니다.
사양 문서
이 %install
매크로는 현재 형식으로는 이해가 되지 않습니다.
%install
mkdir -p %buildroot/%name
tar -xvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar
mkdir /home/support/exporttool
mkdir /home/support/bin
mkdir /home/support/jlog
타르볼의 압축을 푼 후 왜 mkdir
이 디렉토리를 확인해야 합니까? 왜 그것들을 만들고 싶나요? 타르볼에 포함된 경우에는 필요하지 않습니다. 이러한 디렉토리가 타르볼에 포함되지 않은 경우 해당 디렉토리는 단순히 비어 있으며, 수신되는 오류는 이를 알려줍니다.
파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
cmd2
파일이 tarball이나 .dll에 없기 때문에 포함 되지 않습니다 %install
.
tarball의 인벤토리를 확인하여 이를 확인할 수 있습니다:
$ tar tvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar | \
grep -E 'support/{exporttool,bin,jlog}'