. rpmbuild
설치하는 동안 특정 파일에 의존했기 때문에 실패했습니다 libnvidia-ml.so.1
. 이 경우에는 다음과 같습니다.
Requires: libnvidia-ml.so.1()(64bit)
이는 패키지 관리자에 설치되지만 /usr/lib64
변경할 수 없는 패키지 관리자를 통해서는 설치되지 않습니다. yum
이 파일을 어디서 찾을 수 있는지 알 수 있는 방법이 있나요 ?
설명서에서 명확한 내용을 찾지 못했고 LD_LIBRARY_PATH
아무런 효과도 없었습니다.
답변1
yum에게 이 파일을 찾을 수 있는 위치를 알려주는 방법이 있나요?
yum/dnf
RPM 데이터베이스를 구체적으로 참조하십시오. 외부 파일을 고려하도록 지시할 방법은 없습니다.
이 라이브러리를 RPM으로 패키징하여 설치하거나 다음을 사용하여 설치하는 데 필요한 모든 것을 설치하십시오.rpm --nodeps [packages]
답변2
고쳐 쓰다
.so
가장 좋은 방법은 사용자 정의 빌드 패키지 자체를 통해 -File을 제공하거나 공유 라이브러리를 제공하는 다른 사용자 정의 패키지를 추가하는 것입니다.
사용 가능한 라이브러리가 rpmdb에도 저장된 것으로 나타나므로 다음은 작동하지 않습니다.
이 특별한 경우 종속성은 파일이 아니라 공유 라이브러리입니다. 라이브러리를 수동으로 추가하는 것이 가능해야 합니다.
라이브러리를 추가할 경로가 구성되어 있는지 확인하세요.
ldconfig
grep -R /usr/lib64 /etc/ld.so.*
그렇지 않은 경우 구성된 경로를 선택하거나 구성에 경로를 추가하십시오.
ldconfig
링크 및 캐시를 다시 생성하려면 실행하세요 .ldconfig -v
출력에 공유 라이브러리가 표시되어야 합니다.
마지막으로 패키지를 설치할 수 있어야 합니다.
답변3
설치하려고 했던 RPM 파일을 편집하고 다시 빌드하는 것이 나에게 효과적이었습니다. 나는 DNF에서 사용할 수 없는 오래된 종속성을 내 컴퓨터에서 사용할 수 있으며 그대로 유지된다는 것을 알고 있습니다. 이러한 모든 정보를 알려주는 가짜(또는 실제) RPM을 생성하여 DNF가 이 사실을 알도록 하는 데 시간을 소비할 필요가 없습니다.
나는 따라갔다:
ldconfig
에서 새 라이브러리 파일을 선택하도록 허용합니다 /usr/local
.
sudo bash -c 'echo -e "/usr/local/lib64\n/usr/local/lib" > /etc/ld.so.conf.d/local.conf'
레거시 라이브러리를 시스템 패키지와 구별 /usr/local
하지 않고 소스에서 빌드하고 설치합니다 . /usr
이는 프로그램마다 다르지만 다음은 예입니다.
./configure --prefix=/usr/local
make -j $(nproc)
sudo make install
sudo ldconfig
공유 라이브러리 파일(필자의 경우 libtcl 및 libtk)이 있는지 확인합니다.
sudo ldconfig -p | grep -i "libnvidia"
DNF 알 수 없는 종속성이 필요하지 않도록 사양 파일을 재구성하여 필요한 설치된 RPM을 다시 빌드합니다(예: 주석 처리). 먼저 설치해야 할 수도 있습니다 rpmrebuild
.
rpmrebuild --edit-spec --package original_x86_64.rpm
나에게는 다음과 같은 줄을 주석 처리했습니다.
#Requires: libtcl8.5.so()(64bit) #Requires: tcl-devel
재구축이 완료되면 새로 구축된 RPM의 위치를 알려줍니다. 나에게는 그것이 내부에 있다 ~/rpmbuild/RPMS/x86_64
. 원하는 위치로 이동하여 설치하세요. 예:
mv ~/rpmbuild/RPMS/x86_64/original-1.x86_64.rpm rebuilt_x86_64.rpm
sudo dnf install rebuilt_x86_64.rpm
RPM 사양 파일의 존재 rpmrebuild
와 즉시 RPM 사양 파일을 편집하는 기능을 검색하기 위한 소스:https://lists.fedoraproject.org/archives/list/[이메일 보호됨]/메시지/V2ZJORVHTA34UOJVRA2SEVNTJCM4ETXM/