몇 가지 관련 질문을 검토했는데 가장 가까운 질문은 다음과 같습니다.RPM에서 사양 파일 추출- 내 질문도 같은 방식으로 표현하겠다는 점을 덧붙여야겠습니다. 그러나 .spec 파일은 .rpm 파일에 없는 것 같습니다(바이너리 패키지인 경우).
그래서 제 질문은 사양 파일에서 파생된 정보를 최소한 가능한 한 많이 얻는 방법입니다.
- .rpm의 내용을 나열하는 명령이 있다는 것을 알고 있습니다(실제로
rpm2cpio xxx.rpm | cpio -itv
는 적어도 두 개가 있습니다. - 필요한 것을 얻기 위한 다른 명령
- 구체적으로 말하면 설치 프로세스의 일부로 pre/post/etc 스크립트를 실행하는 데 사용할 명령입니다.
이상적으로 대답은 단일 명령입니다. 그러나 여러 명령이어야 한다면 그게 전부입니다.
p.s. 확인했는데 rpmbuild --rebuild
(소스 RPM이 필요하다고 말함) 찾을 수 없습니다.rpmlint
감사해요.
답변1
예, rpm SPEC은 패키지 RPM의 일부가 아닙니다. 그러나 SPEC 파일에 있는 정보에 대해 RPM 패키지를 쿼리할 수 있습니다.
예를 들어:
1)다음 명령은 RPM 패키지를 설치하거나 업데이트할 때 실행되는 사전/사후 스크립트를 제공합니다.
rpm -q --scripts (installed RPM name, this name will be without the .rpm extension)
rpm -qp --scripts (if you have a rpm file)
2)--queryformat
rpm 명령 옵션을 사용하여 SPEC 파일에 있는 특정 정보를 볼 수 있습니다.
rpm -q --queryformat '%{ARCH} %{NAME}\n' (RPM name, if it installed)
rpm -qp --queryformat '%{ARCH} %{NAME}\n' (if you have an RPM file)
RPM 설계의 아키텍처와 RPM의 실제 이름은 위에 나와 있습니다. 이 정보는 Name, Arch, Requires(pre), Requires(post), BuildRequires 등과 같은 SPEC 파일의 특정 섹션에 있습니다. 유효한 쿼리 옵션을 보려면 여기를 확인하세요.협회
답변2
rpm을 생성한 소스 rpm을 소유하지 않는 한 rpm을 생성한 빌드 지침을 추출할 수 없습니다.
문제의 rpm이 공식 저장소에 있는 경우 /etc/yum.repos.d
(RHEL/CentOS용) 폴더에서 해당 소스 저장소를 활성화한 다음 yum을 통해 소스 rpm을 다운로드할 수 있습니다. (DNF/Zypper 등으로 유사한 작업을 수행할 수 있습니다.)