Linux系統下解決:tar (child):XXX: Cannot open: No such file or directory問題
阿新 • • 發佈:2020-12-18
技術標籤:linux
本來用的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”。