私は使おうとしていたJD-GUI今日、Fedora 20 ラップトップに無料の Java デコンパイラ プログラムをインストールしましたが、プログラムを実行しようとするとエラーが発生しました。
$ '/home/jflory/Downloads/jd-gui-0.3.5.linux.i686/jd-gui'
/home/jflory/Downloads/jd-gui-0.3.5.linux.i686/jd-gui: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
このエラーを受け取った後、どのパッケージがこのライブラリを提供しているのか調べました。
$ sudo yum whatprovides libgtk-x11-2.0.so.0
gtk2-2.24.22-2.fc20.i686 : The GIMP ToolKit (GTK+), a library for creating GUIs for X
Repo : fedora
Matched from:
Provides : libgtk-x11-2.0.so.0
gtk2-2.24.24-2.fc20.i686 : The GIMP ToolKit (GTK+), a library for creating GUIs for X
Repo : updates
Matched from:
Provides : libgtk-x11-2.0.so.0
このパッケージは 32 ビット アーキテクチャであることに気付きました。私は 64 ビット コンピューターを持っており、64 ビット バージョンの Fedora 20 を使用しています。32 ビット バージョンのをインストールしようとしましたgtk2
。
$ sudo yum install gtk2.i686
Resolving Dependencies
--> Running transaction check
---> Package gtk2.i686 0:2.24.24-2.fc20 will be installed
[snip]
--> Running transaction check
[snip]
--> Finished Dependency Resolution
Error: Multilib version problems found. This often means that the root
cause is something else and multilib version checking is just
pointing out that there is a problem. Eg.:
1. You have an upgrade for cairo which is missing some
dependency that another package requires. Yum is trying to
solve this by installing an older version of cairo of the
different architecture. If you exclude the bad architecture
yum will tell you what the root cause is (which package
requires what). You can try redoing the upgrade with
--exclude cairo.otherarch ... this should give you an error
message showing the root cause of the problem.
2. You have multiple architectures of cairo installed, but
yum can only see an upgrade for one of those architectures.
If you don't want/need both architectures anymore then you
can remove the one with the missing update and everything
will work.
3. You have duplicate versions of cairo installed already.
You can use "yum check" to get yum show these errors.
...you can also use --setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).
Protected multilib versions: cairo-1.12.16-1.4.i686 != cairo-1.13.1-0.1.git337ab1f.fc20.x86_64
32ビットアーキテクチャパッケージをインストールすると、gtk2
他にもさまざまな影響があるようです。検索してみたところ、このスレッドLinuxQuestions.org で、どうやら彼の解決策は を実行しyum update
てから を実行することでしたyum install gtk2.i686
。しかし、それは私の環境では機能しません。
私のラップトップは、Fedora のリポジトリ内のすべてのパッケージで完全に更新されています。私の Linux カーネルは です3.16.3-200.fc20.x86_64
。
結局のところ、64 ビット ライブラリを削除せずに JD-GUI を自分のマシンで動作させるにはどうすればよいのでしょうか? 64 ビット / 32 ビット パッケージの互換性のための回避策はありますか?
答え1
こんにちは。同様の問題を解決するには、最初に .x64 バージョンをインストールすると役立ちました。
yum は、インストールされている .x64 パッケージとインストールしようとしている .i686 のバージョンが異なることを報告しているようです。
それで
sudo yum install gtk2.x86_64
sudo yum install gtk2.i686
私には効果があった
答え2
私にとって効果があったのは
rpm --erase --nodeps cairo
これは、cairo
そのようなアクションによって違反される可能性のある依存関係をチェックせずにパッケージを削除し、その後に
yum install cairo
設定されたパッケージリポジトリからcairoをインストールします