私は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でコメント
ユムは確かにそうです。ただし、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を試してWebサイトで以前のFedora RPMのいずれかを試して、CentOSバージョンのGCCシンボルで構築されていることを確認できます。