2016-11-10 9 views
2

Eclipse (RPM)를 실제로 설치하지 않고 리치 클라이언트 플랫폼 인 Rational Software Architect (RSA 9.5)라는 프로그램을 CentOS 7에 설치했습니다. RSA는 eclipse 파일을 파일 시스템에 떨어 뜨린 설치 bash 스크립트와 함께 제공됩니다. 내 Eclipse 실행 파일은 /opt/IBM/SDP/eclipse에서 "plugins", "features"및 "dropins"같은 일반 Eclipse 폴더와 같은 레벨에 있습니다.spec 파일에서 RPM 소유가 아닌 파일을 요구하는 방법 "Requires"줄?

"dropins"폴더에 배치하고 나중에 eclipse -clean -initialize을 호출하여 jar 파일로 작성한 일부 Java 플러그인을 설치 한 "실제"Eclipse의 이전 버전에 대한 스펙 파일을 작성한 후 이클립스를 새로운 플러그인. 이것은 여전히 ​​RSA에서 작동합니다.

내 질문은 이클립스가 RPM으로 설치하기 때문에 전에, 나는 단순히

Requires: eclipse >= 4.4.2

비슷한 사양 파일의 라인을 가지고 것이라고 아래 사실에 온다. Eclipse 대신 RSA가 설치되고 RPM이 연결되지 않았으므로 RPM을 설치하기 전에 "dropins"폴더가 필요하다는 사양 파일을 알려주는 방법을 찾아야합니다. 아마도 다음과 같을 것입니다 :


위의 방법으로 어떤 성공도 이루지 못했고 패키지가 아닌 파일을 기반으로 RPM 요구 사항을 설정할 수도 있습니까? 주제에 대한 문서를 찾을 수 없으며 모두가 도와 주길 바랍니다. 미리 감사드립니다.

참고 ... 저는 CentOS 7.2에서 rpm-build-4.11.3 및 rpmdevtools-8.3으로 작업하고 있습니다.


편집 : Fedora Packaging Guidelines 의하면 스펙[[email protected] trunk]# yum localinstall myplugin-1.1.6-rev1255.x86_64.rpm Loaded plugins: fastestmirror, langpacks, rhnplugin This system is receiving updates from RHN Classic or Red Hat Satellite. Examining myplugin-1.1.6-rev1255.x86_64.rpm: myplugin-1.1.6-rev1255.x86_64 Marking myplugin-1.1.6-rev1255.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package myplugin.x86_64 0:1.1.6-rev1255 will be installed --> Processing Dependency: /opt/IBM/SDP/eclipse for package: myplugin-1.1.6-rev1255.x86_64 Loading mirror speeds from cached hostfile --> Processing Dependency: /opt/IBM/SDP/eclipse for package: myplugin-1.1.6-rev1255.x86_64 --> Finished Dependency Resolution Error: Package: myplugin-1.1.6-rev1255.x86_64 (/myplugin-1.1.6-rev1255.x86_64) Requires: /opt/IBM/SDP/eclipse You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest

[[email protected] trunk]# ll /opt/IBM/SDP/eclipse -rwxr-xr-x. 1 root root 74675 Jan 28 2015 /opt/IBM/SDP/eclipse

+0

나는 절대 경로를 가질 수 있다고 확신한다. 그것없이 설치하는 것을 멈추어야하지만, 어떤 RPM에서도 발견되지 않기 때문에,'yum' /'dnf'는 그것을 찾는데 도움이되지 않습니다. glibc 32 비트 라이브러리를 RPM의 요구 사항으로 강제하기 전에이 작업을 수행했습니다. –

+0

@ AaronD.Marasco 위 편집을 참조하십시오.절대 경로 (파일에서'ls -al'을 실행할 때 볼 수있는)를 사용할 때 나는 여전히 문제가 있습니다. – mstep91

+0

모의와 함께 rpm을 구축 할 때 요구 사항이 자동으로 선택 될 수 있습니다. –

답변

5



를 절대 경로를 사용하는 경우 추가 에러 메시지 얌로부터 반환

을 ... rpm 파일 종속성이 제대로 작동하지 않습니다. 파일 시스템에있는 것을보고, rpm % files 섹션에 지정된 경로에 따라 작업합니다.

따라서 Requires:을 사용하여 RPM이 소유하지 않은 파일을 요구할 수 없습니다.

가능한 대안은 %pre 섹션에 파일의 존재를 확인하고 존재하지 않는 경우 0이 아닌 상태로 종료하는 것입니다. 이 기술을 사용하는 방법의 예는 Paul Rubel's reply ~ Failing an RPM install programatically in a spec step 또는 ᴳᵁᴵᴰᴼ's reply ~ How to abort the installation of an rpm package if some conditions are not met in specfile?을 참조하십시오.

%pre 섹션의 0이 아닌 종료 상태로 인해 RPM이 설치되지 않지만 RPM 트랜잭션은 여전히 ​​성공한 것처럼 보이므로 혼동을 일으킬 수 있습니다. How to exit rpm install in case of an error을 참조하십시오.