我想将当前正在运行的应用程序升级到最新版本。但由于某些软件包问题,我无法安装它们。
我遇到了一个常见错误:/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found
。
当我尝试更新 glibc 包时,我得到了以下输出:
[root@agastya ~]# yum install glibc
Loaded plugins: refresh-packagekit, rhnplugin
epel/metalink | 3.8 kB 00:00
epel | 4.3 kB 00:00
epel/primary_db | 5.0 MB 01:33
epel-testing/metalink | 3.8 kB 00:00
epel-testing | 4.3 kB 00:00
epel-testing/primary_db | 295 kB 00:03
rhel-x86_64-server-6 | 1.8 kB 00:00
rhel-x86_64-server-6/primary | 11 MB 02:02
rhel-x86_64-server-6 8816/8816
Setting up Install Process Package glibc-2.12-1.80.el6_3.6.x86_64 already installed and latest version Nothing to do
[root@agastya ~]#
我是否需要添加更多存储库?
如果需要,该怎么做?
答案1
glibc-2.12-1.80.el6_3.6
是 RHEL6 中 glibc 的最新更新包。我确信像 glibc 这样的包不会重新基于 v3。如果您在生产 RHEL 服务器上执行此操作,简单的规则是不要,不要这样做。
为了测试目的,请随意添加 fedora repo 或 rpmforge 或任何能提供最新版本的软件。但是,我确信您将面临大量依赖性问题,最糟糕的情况是系统可能会崩溃。
答案2
没有可用的核心 RHEL 组件 (GLIBC、内核等) 的较新版本。RHEL/CentOS 的工作原理。
看:在 CentOS 6.x 中,如何升级到内核 3.4? 或者适用于 RHEL/CentOS 5.x 的较新 GLIBC
如果不切换到另一个 Linux 发行版或对 RHEL 安装进行大量修改,您可能找不到所需的库等。Fedora在这种情况下可能是更好的选择。
答案3
我已经更新了过时的 libstdc++.so6,因为我担心无法安装实际软件,每次链接器都抱怨找不到 GLIBCXX_3.4.15。gcc 4.8.1 附带 gcc 4.8.1 源代码和实际的 libstdc++.so.6。我构建了 gcc 4.8.1 并安装了它。然后我创建了一个符号链接:
/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.13
确保所有依赖应用程序都能找到“它们的”libstdc++.so.6。我使用“alternatives”命令确保了这一点,但我确信这不是强制性的。只有 java 抱怨 libstdc++.so.6,但由于 java(jre-1.7.0)不是我的主要关注点,我将 java 切换回 jre-1.6.0。(我不知道我是否愿意在 java 上投入更多时间。)
我知道,我知道,每个 CentOs 基本祈祷者都想为此而惩罚我,但我厌倦了只为他人的理想主义原因而使用旧软件。也许这有一个缺点,但有人应该解释一下使用较新的 libstdc.so.6 时缺点在哪里。而我正在毫无瑕疵地使用此解决方案。我会说,没有缺点。yum 数据包管理器似乎以正常方式运行,如果有问题,我也会尝试修复它,但没有问题(到目前为止)。当然,一个人应该有一个功能齐全的备份系统/策略和后备保险,他/她现在应该知道该做什么以及他们在做什么。
这个解决方案对我有用,不知道对其他人来说是否也有效。
问候