目前我正在尝试安装一个rpm secured_soft_2.0.0.rpm,我无法安装,因为我们已经安装了secure_soft_1.3.0。
要求是我们需要安装两个版本。
复杂性:
这些软件包inturn有相关的rpm(很多),所有这些相互依赖的rpm也有版本ex:secured_soft_1.3.0只适用于版本为1.3的软件包,而secured_soft_2.0.0.rpm只适用于版本2.0的依赖。 所以所有这些依赖关系也需要重新安装,甚至这些依赖关系应该并行安装,而不删除旧的。
最后,这两个版本都包含共享库,这些共享库的名称中没有版本号。
#rpm -ivh secured_soft_2.0.0.rpm error: Failed dependencies: init-class >= 1.4.17.1-1 is needed by secured_soft_2.0.0.rpm init-connection-interface >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm init-logger >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm init-security >= 2.0.11.0 is needed by secured_soft_2.0.0.rpm
正如我所指定的,我们已经安装了secured_soft_1.3.0.rpm,并且上面的依赖关系也是可用的,但版本不同。 所以我们需要安装上面的依赖关系,并且还需要旧版本的依赖关系才能使旧的rpm工作
例如:secured_soft_2.0.0.rpm具有libArt.so libSec.so等等被复制到/ usr / lib
同样的,secured_soft_1.3.0.rpm也有libArt.so libSec.so等等,它们已经在/ usr / lib下可用
我试图重命名,但仍然不能安装。
是否有可能改变这些东西的位置,并完成任务有什么办法可以做到这一点。
目前,IAM卡在这里,将需要在这方面的意见鉴赏这方面的任何帮助。
由于程序使用相同的文件名,并且您需要将它们放在同一台计算机上,因此您可以将较旧的版本移动到另一个目录树,并使其在此处工作。
您可以使用许多没有编译路径名的应用程序来做到这一点。
例如,
rpm -ql
。 /usr
(但是省略了不是由包所拥有的目录)。 /usr/local/myapp
并在那里解压缩旧版本。 对于这样的应用程序,我会运行一个脚本,更新PATH
(也许设置LD_LIBRARY_PATH
)强制程序从新的位置运行。 你可以使用strace
和lsof
这样的工具来验证它是否工作,即通过查找程序打开的文件。
一旦您的旧版本在新位置正常工作,您可以卸载它的RPM并安装新版本的应用程序。
警告:如果较新版本的软件包是从较新版本的操作系统中复制的,不管您是否选择重新编译较新软件包以适应现有系统的替代方法,该任务可能超出您的能力。
构建新的/定制的软件包是重新编译新版本的一种途径。 如果您有每个部分的源代码RPM,那么这是一个起点:
unrpm
提取文件,例如使用诸如unrpm
的脚本(例如,参见HowTo:提取RPM包文件而不安装它 ),以及 $HOME/rpmbuild/SOURCES
和$HOME/rpmbuild/SPECS
不,开箱即用,你不能。
我强烈建议寻找Docker ,在那里你可以把每个人都放到自己的容器中,让他们照顾他们所有的依赖问题。