欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Linux 系统下解决:tar (child):XXX: 无法打开:No such file or directory问题

最编程 2024-04-30 08:21:37
...

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

问题描述:

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

我是这样操作的

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

结果:

网络异常,图片无法展示
|


报错翻译:


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”。