Mar*_*och 2 libraries dependencies repository shared-library
在我看来,使用 Linux 的很多问题都是由于不匹配的依赖关系。具体来说,您不能安装两个版本的库。
因此,如果程序 A 需要“lib1.2”而程序 B 需要“lib1.3”,则它们不能一起运行。
题:
在大多数 Linux 发行版中,系统中有多个版本的库不是问题:具有不同soname 的共享库可以共存于同一/usr/lib
目录中。此外,可以通过指定正确的包名称来指示包管理器安装几个这样的库:
apt-get install libjpeg7
apt-get install libjpeg8
Run Code Online (Sandbox Code Playgroud)
实际上,您可能会遇到此系统的两个缺陷:
大多数发行版为每个发行版仅提供一个库版本以节省空间。例如,我的 Debian Wheezy 只有libjpeg8
. 您仍然可以libjpeg7
从源代码安装特定的库版本(例如),并且它将与其他版本共存而不会出现问题。你甚至可以尝试从另一个发行版安装一个包,但要小心,因为它可能会产生大量的依赖。
有时,具有相同 soname(旨在兼容)的两个库版本适用于某些程序而不适用于其他程序。顺便说一下,这是首先拥有多个发行版的主要原因。这种情况下的解决方案是将不兼容的库保留在外面,/usr/lib
并通过 LD_LIBRARY_PATH 或 chroot 使特定程序可以访问它们。