我是Linux新手,但我尝试以.deb和.rpm格式分发应用程序。我在以下三个libicu库中遇到了问题:
libicui18n.so.52.1 => not found
libicuuc.so.52.1 => not found
libicudata.so.52.1 => not found
问题是应用程序所需的版本并不总是与系统上安装的版本匹配,例如Fedora 26附带libicu 57.1而我的应用程序正在寻找52.1。将libicu添加到包依赖列表doest帮助,因为已经安装了libicu,所以安装libicu只是给出:
Package libicu-57.1-6.fc26.x86_64 is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!
我无法找到libicu52.1的软件包,但是尝试安装较旧的软件包似乎无论如何都无法运行。我尝试了libicu-54.1-4.fc22.x86_64
,但它说没有可用的软件包,大概是因为它只能在Fedora 22上使用。
我在考虑将这些库包含在应用程序包中并将它们安装到/ usr / lib64,但作为Linux新手,我不确定这是否可以接受。
解决这个问题的最佳方法是什么?
编辑:我在相关部分中看到this帖子说:
新版本的库不应该破坏现有的应用程序,除非 您正在使用已弃用的功能。
我在与libicu 57.1一起提供的Fedora 26上进行测试。我的应用程序只需要libicu 52.1,所以如果以上是真的,我认为它应该正常工作。我需要做些什么才能让它发挥作用吗?
答案 0 :(得分:0)
让您的软件包安装libicu
到/usr/lib64
的“额外”版本对大多数用户来说都会非常令人惊讶。不要那样做。
这里的标准做法是为每个目标平台构建不同的.deb和.rpm文件。就像你需要为32位和64位单独构建一样,你需要为CentOS 6和7分别构建。你可以通过运行一组虚拟机来执行发布构建 - 每个一个您想要支持的目标平台。
如果你真的需要制作一个可以在许多平台上运行的.deb或.rpm,一种方法就是消除一些依赖关系。在这种情况下,所有这些库都是同一个项目(ICU)的一部分,所以如果你真的不需要依赖那个项目,那就不要。