Fedora

無法使用 64 位共享庫執行 JD-GUI,需要 32 位庫

  • March 19, 2015

我今天嘗試在我的 Fedora 20 筆記型電腦上使用免費的 Java 反編譯程序JD-GUI,但在嘗試執行該程序時遇到了錯誤。

$ '/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 位軟體包兼容性的解決方法?

您好解決類似問題,它幫助我先安裝 .x64 版本。

似乎 yum 抱怨安裝了不同版本的 .x64 包和您要安裝的 .i686。

所以

sudo yum install gtk2.x86_64

sudo yum install gtk2.i686

為我工作

對我有用的是

rpm --erase --nodeps cairo

它刪除cairo包而不檢查此類操作可能違反的任何依賴項,然後是

yum install cairo

它從配置的包儲存庫安裝 cairo

引用自:https://unix.stackexchange.com/questions/160063