2017-08-09 170 views
0

我需要將libvncserver和libvncclient庫更新到0.9.11。 我運行CentOS的7.3,目前,最新的libvncserver RPM是0.9.9修改的SRPM衝突解決

於是我拿了libvncserver SRPM,修改規範文件,並更新了libvncserver壓縮包來創建一個0.9.11版本的libvncserver和libvncclient RPM的。

我在安裝時遇到依賴性問題。

Loaded plugins: fastestmirror 
Examining ../RPMS/x86_64/libvncserver-0.9.11-1.el7.centos.1.x86_64.rpm: libvncserver-0.9.11-1.el7.centos.1.x86_64 
Marking ../RPMS/x86_64/libvncserver-0.9.11-1.el7.centos.1.x86_64.rpm as an update to libvncserver-0.9.9-9.el7_0.1.x86_64 
Examining ../RPMS/x86_64/libvncserver-debuginfo-0.9.11-1.el7.centos.1.x86_64.rpm: libvncserver-debuginfo-0.9.11-1.el7.centos.1.x86_64 
Marking ../RPMS/x86_64/libvncserver-debuginfo-0.9.11-1.el7.centos.1.x86_64.rpm to be installed 
Examining ../RPMS/x86_64/libvncserver-devel-0.9.11-1.el7.centos.1.x86_64.rpm: libvncserver-devel-0.9.11-1.el7.centos.1.x86_64 
Marking ../RPMS/x86_64/libvncserver-devel-0.9.11-1.el7.centos.1.x86_64.rpm to be installed 
Resolving Dependencies 
--> Running transaction check 
---> Package libvncserver.x86_64 0:0.9.9-9.el7_0.1 will be updated 
--> Processing Dependency: libvncclient.so.0()(64bit) for package: x11vnc-0.9.13-11.el7.x86_64 
Loading mirror speeds from cached hostfile 
--> Processing Dependency: libvncserver.so.0()(64bit) for package: x11vnc-0.9.13-11.el7.x86_64 
---> Package libvncserver.x86_64 0:0.9.11-1.el7.centos.1 will be an update 
---> Package libvncserver-debuginfo.x86_64 0:0.9.11-1.el7.centos.1 will be installed 
---> Package libvncserver-devel.x86_64 0:0.9.11-1.el7.centos.1 will be installed 
--> Finished Dependency Resolution 
Error: Package: x11vnc-0.9.13-11.el7.x86_64 (@epel) 
      Requires: libvncclient.so.0()(64bit) 
      Removing: libvncserver-0.9.9-9.el7_0.1.x86_64 (@base) 
       libvncclient.so.0()(64bit) 
      Updated By: libvncserver-0.9.11-1.el7.centos.1.x86_64 (/libvncserver-0.9.11-1.el7.centos.1.x86_64) 
       ~libvncclient.so.1()(64bit) 
Error: Package: x11vnc-0.9.13-11.el7.x86_64 (@epel) 
      Requires: libvncserver.so.0()(64bit) 
      Removing: libvncserver-0.9.9-9.el7_0.1.x86_64 (@base) 
       libvncserver.so.0()(64bit) 
      Updated By: libvncserver-0.9.11-1.el7.centos.1.x86_64 (/libvncserver-0.9.11-1.el7.centos.1.x86_64) 
       ~libvncserver.so.1()(64bit) 
You could try using --skip-broken to work around the problem 
You could try running: rpm -Va --nofiles --nodigest 

x11vnc正在運行以詳細以上使用libvncserver.so.0和libvncclient.so.0從0.9.9

[localhost SPECS]$ sudo ldd /usr/bin/x11vnc | grep -i vnc 
     libvncserver.so.0 => /lib64/libvncserver.so.0 (0x00007fee9387d000) 
     libvncclient.so.0 => /lib64/libvncclient.so.0 (0x00007fee9365f000) 

,轉速嘗試更新x11vnc(到都沒有)

Potential Provider: libvncserver.x86_64 0:0.9.9-9.el7_0.1 
Mode is ud for provider of libvncserver.so.0()(64bit): libvncserver.x86_64 0:0.9.9-9.el7_0.1 
Mode for pkg providing libvncserver.so.0()(64bit): ud 
Trying to update x11vnc-0.9.13-11.el7.x86_64 to resolve dep 
No update paths found for x11vnc-0.9.13-11.el7.x86_64. Failure! 
Searching pkgSack for dep: libvncserver.so.0()(64bit) 

我可以「強制安裝」,但在此之前,我很感興趣是否有更好的方法來做到這一點?是否可以指定依賴檢查器不突出顯示依賴項?另一種方法是創建一個自定義x11vnc RPM,只是爲了更新庫路徑。

+0

不要更換系統庫。重新命名你的新RPM並把它們放在別的地方,比如'/ usr/local/lib'。另見https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Bundling_and_Duplication_of_system_libraries –

回答

1

問題是,您的軟件包不提供libvncserver.so.0,但會取代libvncserver,它提供了libvncserver.so.0。最簡單的解決方案是重命名您的軟件包,以便它可以與現有的libvncserver軟件包一起安裝。

-devel子包可能會與libvncserver-devel發生衝突,因爲某些文件會重疊,但對於主包,您應該能夠啓用並行安裝。

您已經提到了其他清潔解決方案:將所有包裝從libvncserver.so.0移植到libvncserver.so.1。但是這可能會涉及很多不必要的工作,並且會使您的系統與其他系統相似。

(你也可以保持libvncserver包名稱和創建compat-libvncserver包對舊庫,但是這再次收效甚微相當多的工作的。)

+0

似乎創建一個不同名稱的包是最好的方法。特別是如果CentOS在未來更新libvncserver,yum update會安裝它們,並取代我的hacked rpm。 – user2066671