![我需要在基于 Debian 的发行版上安装两个不同版本的库](https://linux22.com/image/67261/%E6%88%91%E9%9C%80%E8%A6%81%E5%9C%A8%E5%9F%BA%E4%BA%8E%20Debian%20%E7%9A%84%E5%8F%91%E8%A1%8C%E7%89%88%E4%B8%8A%E5%AE%89%E8%A3%85%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC%E7%9A%84%E5%BA%93.png)
Jessie 附带 APR(apache 运行时可移植)作为软件包 libapr1 版本 1.5.1-3。
然而,这是 Jessie 拥有的唯一版本(也是最新版本)。我正在尝试构建 UIMA C++ SDK,它需要 1.3.[0-9] 或 1.4.[0-9] 之间的 apr 版本。
我知道 Debian Wheezy 有 apr 1.4.6 (我下载了实际的软件包)。
我的问题是:
- 我是否使用 dpkg 安装软件包,而不是在源代码中添加 Wheezy?或者我应该在我的来源中添加喘息?
- 无论是通过 dpkg 还是通过 apt-get,如果我安装同一库的两个不同版本,我是否有破坏“东西”的风险?据我了解,Jessie 使用 apr-1.5.1 来做很多事情,所以我不想弄乱我的系统。
答案1
当您使用 dpkg 或 apt-get 安装两个不同版本时,不会破坏系统,除非您使用 -f 选项强制安装。
相反,它会在您的包数据库中创建一个附加条目。
手动安装源时,请确保将程序链接到库。例如,将 apr-1.4.6 符号链接到 /usr/local/lib/apr。将使用旧库的程序设置为使用您刚刚符号链接的库。
通过将链接放在 PATH 目录中,确保程序可以找到该链接。
答案2
我是否使用 dpkg 安装软件包,而不是在源代码中添加 Wheezy?
不。
或者我应该在我的来源中添加喘息?
不。
无论是通过 dpkg 还是通过 apt-get,如果我安装同一库的两个不同版本,我是否有破坏“东西”的风险?
是的。
相反,我建议要求项目的维护者使用最新的库,因为旧版本上存在几个安全错误(最新修复的 CVE-2015-1829),并进行了修复以确保新系统上的功能(即“修复Linux 内核版本检查以识别更多版本,包括版本 3.10 及更高版本”,如果您在库上使用带有内核 4.0+ 的 Jessie,这看起来相当令人讨厌。我会首先尝试使用较新的库构建软件,并在发现问题时对其进行修补,当然,您应该将它们提交到上游。
另一种选择是仅使用虚拟机(或允许您启动另一个内核的东西)并在那里安装 Wheezy。它可能不包括这些安全问题的修复(您可能需要自己修补它们)。