首先下载了NCL
的Linux版本的安装包,进行解压以及环境配置。但是在测试是否安装成功时,出现以下报错:
ncl -version
ncl: /lib/x86_64-linux-gnu/libcrypto.so.10: version `libcrypto.so.10' not found (required by ncl)
ncl: /lib/x86_64-linux-gnu/libssl.so.10: version `libssl.so.10' not found (required by ncl)
对于这两个问题,其实是比较好理解的,就是NCL运行的时候需要这两个东西,但是你安装完运行NCL时,并没有找到这两个东西。
一般的解决办法就是先查找一下你的系统有没有这两个文件,如果有的话最好了,直接建立一个软连接(ln -s)
将这两个东西链接上,告诉NCL你要找的东西我是有的,位置给你指定啦。
麻烦的点在于第二个,我这个电脑上没有这两个东西,,,纯属是第一次自己配置Linux 环境,很多依赖的库、环境啊都还没有提前装好。
在一番搜索后,发现了这两个东西主要是和一个叫做openssl
的软件相关,是安装openssl
这个软件时,自带的。
所以,也就是说:NCL 软件
所需的 OpenSSL 库
的版本没有安装在你的系统上。NCL
似乎正在寻找 OpenSSL 库的1.0版本
,而您的系统可能安装了不同的版本,或者根本没有安装该库
。
我仔细验证了一下,ubuntu 22.04这个版本上是自带安装了OpenSSL
的,但是不是1.0的版本,所以貌似看起来解决这个问题的关键就是要安装OpenSSL的1.0版本
。
例如,在 Ubuntu 上,可以运行命令 sudo apt-get install libssl1.0-dev
来安装库。如果已经安装了 OpenSSL 版本1.1或更高版本
,则可以创建指向所需库的符号链接,以便 NCL 可以找到它们。例如,在 Ubuntu 上,你可以运行以下命令:
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.10
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.10
打开终端并执行以下命令安装 libssl1.0-dev
:
sudo apt-get update
sudo apt-get install libssl1.0-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.10
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.10
这将创建 libcrypto.so.10 和 libssl.so.10 两个软链接
,链接到当前系统中已经安装的 OpenSSL 1.1 版本库文件。
但是我这里还是出现报错了:
ln: failed to create symbolic link '/usr/lib/x86_64-linux-gnu/libcrypto.so.10': File exists
说明在执行创建软链接命令时,/usr/lib/x86_64-linux-gnu/
目录下已经存在一个名为 libcrypto.so.10
的文件或软链接了。
这里可以先确认一下 /usr/lib/x86_64-linux-gnu/
目录下是否已经有名为 libcrypto.so.10
的文件或软链接。如果是软链接,您可以考虑删除软链接,然后重新执行创建软链接的命令;如果是文件,您可以考虑备份或删除该文件,或者尝试在其他目录中创建软链接。
另外,您也可以尝试使用 -f
选项来强制创建软链接,即执行以下命令:
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.10
sudo ln -sf /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.10
这将强制创建软链接并覆盖同名的文件或软链接。但是在使用 -f 选项时要小心,确保您不会覆盖重要的文件或软链接。
然后,又出现报错:
ncl: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
检查 OpenSSL 是否已经安装。
dpkg -l | grep openssl
我这里确实是显示安装成功了,感觉又回到了开始的问题。。。
我在想是不是我的系统里又有ubuntu自带的,又有自己安装的,产生了冲突导致的。
所以,这里直接卸载了OpenSSL
:
sudo apt-get remove openssl
再重新安装一遍1.0
版本:
sudo apt-get update
sudo apt-get install libssl1.0-dev
更新动态链接库缓存:
sudo ldconfig
确认 OpenSSL 已经安装成功:
openssl version
确实是成功了,然后这回通过代码命令重新安装NCL
,这里注意到一点是NCL需要提前安装好一些依赖的软件包:
sudo apt-get install libnetcdf-dev libhdf5-dev libudunits2-dev libgeotiff-dev libproj-dev libfreetype6-dev libjpeg-dev libpng-dev libx11-dev libcairo2-dev
安装 NCL:
sudo apt-get install ncl-ncarg
确认安装成功:
ncl -V
终于看到了版本信息,这里就是成功安装NCL了。
mad,不容易