事情是这样的:
$ python3 -m ssl
Traceback (most recent call last):
File "/opt/splunk/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/opt/splunk/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/opt/splunk/lib/python3.9/ssl.py", line 99, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: libssl.so.1.0.0: cannot open shared object file: No such file or directory
或者
$ openssl --help
openssl: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
一定是 splunk 安装出了问题,损坏了 openssl...我在 ubuntu bug launchpad 中问了这个问题:https: //bugs.launchpad.net/ubuntu/+source/openssl/+bug/2089827
我怎样才能修复而不必弄乱 Splunk?
我在这里找到:https://community.splunk.com/t5/Splunk-Search/Why-am-I-getting-error-quot-libssl-so-1-0-0-cannot-open-shared/mp/267920 我可以这样做并修复:
export LD_LIBRARY_PATH=/opt/splunk/lib/:$LD_LIBRARY_PATH
问题和疑虑
我想更好地了解情况并发现任何潜在问题。具体来说:
这种方法不值得推荐吗?它本身有什么问题吗?
此外,我正在尝试理解问题的根本原因:
- 是什么导致了这个问题?
- 为什么系统依赖于 Splunk 内的 OpenSSL 库?
- 为什么系统不能使用单独的库,而是使用与 Splunk 捆绑的库?
FTR,这不是 Ubuntu 错误,所以从技术上讲它应该被关闭。这是 Splunk 安装程序中的一个错误。
是的,这不是安装应用程序的好方法。我不知道具体细节,但我从你提到的报告中看到它被安装到
/opt
,所以它肯定是你在包管理器后面安装的东西。每当你这样做时,这意味着你知道自己在做什么(但你显然不知道),而且你在实验的世界中是孤独的。这是因为当你通过包管理器安装某些东西时,根据安装脚本的编写方式,它可能会覆盖系统中已经存在的东西,并搞砸一些东西。即使没有,它可能会改变搜索某些库的顺序,并且再次出现问题。即使没有,某些系统更新可能会覆盖你安装的文件(因为就包管理器而言,路径中没有注册文件),从而破坏你的应用程序。
不过不用担心,对于你来说这其实不是问题,因为应用程序似乎是自包含的
/opt
。记住这一点就行。举个例子,现代
pip
(Python 的包管理器)甚至会拒绝全局安装东西,除非你传递--break-system-packages
。对于旁读者:OP 忘记提到
openssl
不是 Ubuntu 的重要点,并且位于/opt
当您使用第三方安装程序时,通常执行以下操作之一:
有趣的是,由于您设法通过修改 来修复该问题
LD_LIBRARY_PATH
,这意味着您的情况是 1,只是安装程序创建者搞砸了安装,它根本看不到自己的库。应该这样做的方法是将 的 RPATH 设置openssl
为库位置。似乎您可以手动更改它,如果您不想摆弄 的话LD_LIBRARY_PATH
。嗯?您是在说 吗
python3 -m ssl
?如果此模块是通过包管理器安装的,那么您遇到问题的唯一原因就是您手动更改$PATH
为指向 Splunk 的openssl
,这会导致错误。换句话说,“依赖项”是您添加的。嗯,除非你全局修改了
LD_LIBRARY_PATH
系统,否则不会使用 Splunk 的库。我假设这个问题与上一个问题有关,在这种情况下,我希望它的答案能解释这种情况。PS:向 Splunk 报告一个错误,他们应该修复他们的安装程序。