RPM에 종속 항목이 누락되었다고 표시되지만 이미 라이브러리가 설치되어 있습니다(소스에서).

RPM에 종속 항목이 누락되었다고 표시되지만 이미 라이브러리가 설치되어 있습니다(소스에서).

rpm패키지를 설치할 때 필요한 종속성 라이브러리가 누락되었다는 경고가 표시됩니다. 사실 저는 소스에서 라이브러리를 설치해놨기 때문에 rpm그냥 몰랐던 것 같아요.

rpm그럼 기존 도서관을 알려드 릴까요 ? 어떻게? 어쩌면 구성 파일에 일부 코드를 추가할까요 rpm?

그런데 누락된 라이브러리를 다시 설치하면 rpm문제가 (빠르게) 해결될 수 있지만 때로는 사용 가능한 버전이 없는 경우도 있습니다 rpm.

답변1

RPM 종속성 데이터베이스는 소스에서 패키지를 설치했는지 여부를 알 수 없습니다. RPM 데이터베이스는 RPM 패키지에 있는 메타데이터만 알고 있습니다. 소스에서 설치된 패키지에는 이 메타데이터가 포함되어 있지 않습니다.

소스 생성에서 패키지를 빌드하는 일부 구성 스크립트pkg-config, 설치된 패키지에 대한 메타데이터입니다. 그러나 pkg-configRPM 메타데이터(또는 DEB메타데이터 또는 pacman메타데이터) 의 메타데이터 간에는 명시적인 통합이 없습니다 . 배포판을 패키징할 때 패키저는 특정 형식의 메타데이터를 패키지(예: RPM 패키지)에 삽입하고 이 메타데이터는 종속성을 결정하는 데 사용됩니다. 메타데이터는 다른 형식으로 제공되지 않습니다.

반면에 동일한 시스템에 서로 다른 버전의 라이브러리가 있을 수 있습니다. 기본적으로(예:GNU 코딩 표준대부분의 패키지는 configure해당 제품 을 /usr/local.RPM/usr

따라서 규칙(이라고 함)을 따르면FHS) 소스에서 설치된 패키지/라이브러리를 유지한 /usr/local다음 동일한 것을 설치해도 RPM라이브러리와 충돌하지 않습니다(배포판의 패키지 프로그램이 FHS를 따르기 때문에).

RPM을 사용할 수 없으면 직접 구축할 수 있습니다. 이렇게 하려면 소스에서 패키지/라이브러리를 빌드하고 이를 가상 위치(빌드 루트)에 설치해야 합니다. 그런 다음 RPM 패키지에 필요한 메타데이터를 제공하고 이를 RPM 파일로 패키징합니다. TLDP는 오래되었지만 매우 철저한RPM 구축 가이드.

답변2

이는 패키지 관리자(예를 들어)를 사용하는 것이 좋으며 yum최악의 경우 rpm소스에서 설치하는 것을 피하는 것이 좋습니다.

따라서 해결책은 RPM 패키지를 사용하여 누락된 종속성을 설치하는 것입니다. 먼저 설치된 버전을 소스에서 제거하는 것이 좋지만 때로는 약간 어려울 수 있습니다.

관련 정보