내 CentOS 7 컴퓨터에 Trillian을 설치하고 싶습니다. 저는 www.trillian.im/get/linux/6.1/linux.html로 가서 rpm 패키지 trillian-6.1.0.5-1.fc25.x86_64.rpm을 다운로드했습니다.
내가 이해하는 한 다음을 사용하십시오.
$ yum install trillian-6.1.0.5-1.fc25.x86_64.rpm
패키지가 설치되고 종속성을 해결하는 데 필요한 추가 파일이 확인되고 검색됩니다. 아무것도 발견되지 않은 것 같습니다.
Marking trillian-6.1.0.5-1.fc25.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package trillian.x86_64 0:6.1.0.5-1.fc25 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
trillian x86_64 6.1.0.5-1.fc25 /trillian-6.1.0.5-1.fc25.x86_64 30 M
Transaction Summary
================================================================================
Install 1 Package
.
.
.
Installed:
trillian.x86_64 0:6.1.0.5-1.fc25
Complete!
그러나 프로그램을 실행하려고 하면 다음과 같은 결과가 나타납니다.
$ trillian
trillian: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by trillian)
trillian: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by trillian)
이러한 특정 라이브러리를 다운로드하는 방법을 찾으려고 노력 중입니다.
답변1
YUM 및 deps의 댓글
Yum은 확실히 그렇습니다. 하지만 RPM이 지정한 만큼만 좋습니다. 이 경우 RPM에서는 GLIBC > 2.13에서 작동한다고 명시하지만 이는 분명히 특정 버전의 GLIBC로 구축되었으며 시스템에 적절한 GCC 기호가 있는 경우에만 작동합니다.
$ rpm -qpR trillian-6.1.0.5-1.fc25.x86_64.rpm
atkmm >= 2.22.0
cairo >= 1.12.0
cairomm >= 1.10.0
gdk-pixbuf2 >= 2.26.0
glib2 >= 2.30.0
glibc >= 2.13
glibmm24 >= 2.32.0
gtk3 >= 3.4.0
gtkmm30 >= 3.4.0
libX11 >= 1.5.0
libXScrnSaver >= 1.2.0
libnotify >= 0.7.5
librsvg2-tools >= 2.36.0
libsigc++20 >= 2.2.10
libzip >= 0.10.0
openssl-libs >= 1:1.0.1
pango >= 1.30.0
pangomm >= 2.28.0
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
zlib >= 1.2.0
rpm -qpR <rpm>
이를 사용하여 필요한 종속성을 결정할 수 있습니다.
귀하의 질문에 대한 추가 정보
문제의 핵심은 운영 체제에서 실제로 사용할 수 있는 런타임 라이브러리와 다른 버전의 GCC 컴파일러로 빌드된 패키지를 사용하려고 한다는 것입니다.
귀하의 경우 CentOS 7.x를 사용하고 있으며 실제로 이와 같이 Fedora와 CentOS 간에 RPM을 혼합할 수 없거나 적어도 혼합해서는 안 됩니다.
공유 라이브러리를 소유한 패키지를 살펴보면 다음과 같습니다.
$ rpm -qf /lib64/libstdc++.so.6
libstdc++-4.8.5-28.el7_5.1.x86_64
공유 라이브러리 자체를 조사하여 지원하는 GCC 기호를 확인할 수도 있습니다.
$ nm -D /lib64/libstdc++.so.6 | grep -i GLIBC | head -5
0000000000000000 A GLIBCXX_3.4
0000000000000000 A GLIBCXX_3.4.1
0000000000000000 A GLIBCXX_3.4.10
0000000000000000 A GLIBCXX_3.4.11
0000000000000000 A GLIBCXX_3.4.12
마지막으로 RPM 바이너리가 찾고 있는 내용이 포함되어 있는지 확인하십시오.
$ nm -D /lib64/libstdc++.so.6 | grep -iE '3\.4\.20|3\.4\.21'
$
당연히 이 .so
라이브러리에는 두 GCC 버전에 대한 기호가 포함되어 있지 않으므로 오류가 발생합니다.
무엇을 해야 할까요?
이 문제를 해결하는 일반적인 방법은 다음과 같습니다.
- GCC 기호 정의에 대해 빌드된 바이너리 가져오기
다른 도구에서 라이브러리를 가져와서
libstdc++.so.6
(많은 응용 프로그램이 더 쉬운 배포/설정/설치를 위해 라이브러리를 포함하도록 선택) 이를LD_LIBRARY_PATH
.$ LD_LIBRARY_PATH=/path/to/lib trillian
가상 머신에서 애플리케이션 실행
- Docker 컨테이너에서 애플리케이션 실행
- 운영 체제의 GCC 설정과 일치하는 기호로 작성된 바이너리가 포함된 RPM 버전을 얻습니다.
Fedora와 CentOS의 유사점을 고려하면 위의 많은 항목에서 좋은 성공을 거두었습니다. #5를 시도하고 웹 사이트에서 이전 Fedora RPM 중 하나를 시도하여 CentOS 버전의 GCC 기호로 구축되었는지 확인할 수 있습니다.
인용하다
답변2
yum
다른 패키지와의 종속성을 해결합니다. 즉, 설치하려는 패키지가 종속된 패키지를 설치합니다.
발생하는 오류는 라이브러리 파일 /lib64/libstdc++.so.6에 GLIBCXX_3.4.20
또는 가 포함되어 있지 않기 때문입니다 GLIBCXX_3.4.21
. 일반적으로 /usr/lib64/libstdc++.so.6은 /usr/lib64/libstdc++.so.6.0.#에 대한 기호 링크입니다. 여기서 #은 가장 높은 내부 GLIBCXX 버전입니다.
이 명령을 실행하면 GLIBCXX 버전이 포함된 것을 볼 수 있습니다.
strings /usr/lib64/libstdc++.so.6 | grep -i ^glibcxx_
해당 라이브러리가 없기 때문에 이러한 라이브러리가 포함된 패키지를 설치해야 합니다.
이를 제공하는 가장 간단한 설치 패키지는 다음과 같습니다.
파이썬 3
Anaconda 웹사이트에서 다운로드할 수 있으며 설치 방법이 나와 있습니다. 설치 후 Anaconda의 라이브러리를 LD_LIBRARY_PATH에 추가할 수 있습니다. 예를 들어 /opt/anaconda3에 설치한 경우 ~/.bash_profile
또는 에 다음 줄을 추가합니다 ~/.bashrc
.
export LD_LIBRARY_PATH=/opt/anaconda3/lib:$LD_LIBRARY_PATH
그런 다음 새 셸 세션을 시작하고 trillian을 다시 실행할 수 있습니다.
경로에 추가할 수 있는 올바른 라이브러리를 제공하는 GCC6, GCC7 또는 GCC8을 소스 컴파일할 수도 있지만, 값보다 더 나은 GMP, MPC 및 MPFR도 소스 컴파일해야 합니다.
답변3
두 분 모두 감사드립니다. 귀하의 답변이 매우 도움이 되었습니다.
설치할 libstdc++ 라이브러리를 찾지 못했기 때문에 Anaconda3 설치를 선택했습니다. 이로 인해 이 특정 문제를 극복하고 또 다른 질문이 생겼습니다.
$trillian trillian: 기호 조회 오류: trillian: 정의되지 않은 기호: _ZN4Glib25filename_display_basenameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
그래서 지금 나는 이 문제에 대한 해결책을 찾고 있습니다. 어떤 제안이라도 환영하며 이 지점에 도달하는 데 도움을 주셔서 다시 한번 감사드립니다!