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

简介: 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

结果:

201904101747357.png


报错翻译:


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

目录
相关文章
|
1天前
|
Web App开发 监控 Unix
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
|
1天前
|
存储 Unix Linux
【Linux系统编程】基础指令(三)
【Linux系统编程】基础指令(三)
|
1天前
|
Linux
【Linux系统编程】基础指令(二)(下)
【Linux系统编程】基础指令(二)
|
1天前
|
Linux C语言
【Linux系统编程】基础指令(二)(上)
【Linux系统编程】基础指令(二)
|
1天前
|
Linux
【Linux系统编程】基础指令(一)(下)
【Linux系统编程】基础指令(一)
|
1天前
|
人工智能 Unix Linux
【Linux系统编程】基础指令(一)(上)
【Linux系统编程】基础指令(一)
|
1天前
|
弹性计算 Shell Linux
|
1天前
|
弹性计算 Shell Linux
|
1天前
|
弹性计算 安全 Shell
修改Linux 系统的最大打开文件数量
【4月更文挑战第29天】
10 0
|
1天前
|
弹性计算 Shell Linux
查找Linux 系统中的僵尸进程
【4月更文挑战第29天】
5 0