Linux系统下解决:tar (child):XXX: Cannot open: No such file or directory问题

本来用的Linux的Centos系统,想用Linux 的Ubuntu系统,于是就把阿里云更换系统盘一切重新开始了。

问题描述:

在安装jdk的时候遇到了问题

我是这样操作的

sudo tar -xvzf jdk-8u201-linux-x64.tar.gz

结果:
Linux系统下解决:tar (child):XXX: Cannot open: No such file or directory问题_第1张图片

报错翻译:

tar(child):jdk-8u201-linux-x64.tar.gz:无法打开:没有这样的文件或目录
tar(child):错误无法恢复:现在退出 tar:孩子返回状态2
tar:错误无法恢复:现在退出

原因是告诉我们找不到jdk文件,但是我明明已经把jdk放在了/opt路径下。

解决办法:

尝试了很多的解决办法都无法解决,直到我意识到会不会是安装包存放的位置也有讲究。

通过查询,果然了解到这个问题:

默认的linux共享库搜索路径为/lib和/usr/lib目录,若共享库不在这两个路径,进程运行时不能自动链接(比如安装程序后共享库在/usr/local/bin),此时一般有下面4种方法解决:

1.链接时使用静态库,编译脚本或者命令中指明jdk文件的完整路径;
2.修改LD_LIBRARY_PATH环境变量;
3.库文件直接复制到可搜错的路径cp -f xxx/*.so xxx;
4.添加搜错路径,使用ldconfig。

我的解决办法:
采用第一种添加完整路径的办法

sudo tar -xvzf /opt/jdk-8u201-linux-x64.tar.gz

但是个人认为使用第四种方法比较好(虽然我是用第一个方法解决的),应该这样可以一劳永逸,步骤如下:

1.根据提示获得找不到路径的共享库的安装路径,使用locate命令,先用updatedb更新locate的索引库“/var/lib/mlocate/mlocate.db”,然后locate xxx.so查找,比如自动编译安装的库文件放在/usr/local/lib;
2.修改/etc/ld.so.conf,在文本结尾添加路径即可,比如加一行/usr/local/lib。
3.使用ldconfig更新记录系统中so文件的缓存文件“/etc/ld.so.cache”。

你可能感兴趣的:(Linux)