사용해 보았습니다징둥 GUI무료 Java 디컴파일러인 가 오늘 내 Fedora 20 노트북에서 실행 중이었지만 프로그램을 실행하려고 할 때 오류가 발생했습니다.
$ '/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 저장소의 모든 패키지로 완전히 업데이트되었습니다. 내 리눅스 커널은 3.16.3-200.fc20.x86_64
.
궁극적으로 64비트 라이브러리를 제거하지 않고 JD-GUI가 내 컴퓨터에서 작동하도록 하려면 어떻게 해야 합니까? 64비트/32비트 패키지 호환성에 대한 해결 방법이 있습니까?
답변1
안녕하세요. 비슷한 문제를 해결하기 위해 .x64 버전을 먼저 설치하는 데 도움이 되었습니다.
yum이 설치하려는 .i686 버전과 다른 버전의 .x64 패키지가 설치되어 있다고 불평하는 것 같습니다.
그래서
sudo yum install gtk2.x86_64
sudo yum install gtk2.i686
나를 위해 일해
답변2
나에게 효과가 있었던 것은
rpm --erase --nodeps cairo
cairo
해당 작업으로 인해 위반될 수 있는 종속성을 확인하지 않고 패키지를 제거한 다음
yum install cairo
구성된 패키지 저장소에서 cairo를 설치합니다.