目前我正在尝试安装rpm secured_soft_2.0.0.rpm而我是 无法安装它,因为我们已经安装了secured_soft_1.3.0。
要求我们需要安装两个版本。
复杂性:
这些包中包含依赖rpm(很多)以及所有这些 相互依赖的rpm也有版本 例如:secured_soft_1.3.0仅适用于1.3版本的软件包, 和secured_soft_2.0.0.rpm仅适用于版本2.0的dependecies。 因此,所有这些依赖关系也需要重新安装,甚至是这些 应该并行安装依赖项,而不删除旧的。
最后,这两个版本都包含共享库,这些共享库 lib的名称中没有版本号。
#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的依赖关系
ex: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卡在这里,需要就此提出建议 感谢任何帮助。
答案 0 :(得分:1)
由于程序使用相同的文件名,并且您需要将它们放在同一台计算机上,因此可能能够将旧版本移动到另一个目录树并使其在那里工作
您可以使用许多没有编译路径名的应用程序来执行此操作。
例如,
rpm -ql
。/usr
(但忽略目录而不是拥有的包)。/usr/local/myapp
并解压缩那里的旧版本。对于这样的应用程序,我会在更新PATH
(可能设置LD_LIBRARY_PATH
)的脚本中运行,以强制程序从新位置运行。您可以使用strace
和lsof
等工具验证是否有效,例如,查找程序打开的文件。
旧版本在新位置正常运行后,您可以卸载其rpms并安装新版本的应用程序。
警告:但是,如果从较新版本的操作系统复制较新的软件包,则该任务可能超出您的能力,无论您是否选择重新编译该方法的替代方法更新的软件包以适应现有系统。
构建新/自定义程序包是重新编译较新版本的一种途径。如果你有每个部分的source-RPMs,那就是一个起点:
unrpm
等脚本(例如参见 HowTo: Extract an RPM Package Files Without Installing It )和$HOME/rpmbuild/SOURCES
和$HOME/rpmbuild/SPECS
答案 1 :(得分:0)
不,开箱即用,你不能。
我强烈建议您查看Docker,您可以将每个人放入自己的容器中,让他们处理所有依赖问题。