2015-04-22 99 views
0

我有此腳本外殼,將其解壓並安裝的libpcap庫腳本不提取焦油

#!/bin/sh 
PATH=/usr/src 
wget=/usr/bin/wget 
tar=/bin/tar 

echo "###############" 
echo "INSTALL LIBPCAP" 
echo "###############" 
$tar -xvf libpcap-1.3.0.tar.gz 
cd libpcap-1.3.0 
./configure --prefix=/usr 
make && make install 

當我執行它,我有這樣的錯誤

tar (child): gzip: Cannot exec: No such file or directory 
tar (child): Error is not recoverable: exiting now 
/bin/tar: Child returned status 2 
/bin/tar: Error is not recoverable: exiting now 
./install.sh: 14: cd: can't cd to libpcap-1.3.0 
+0

可能重複的[無法解壓一個完整的目錄使用tar -cvpzf](http://stackoverflow.com/questions/9749466/cant-untar-a-complete-directory-using-tar-cvpzf) – thumbmunkeys

+0

似乎像你的系統上缺少gzip或sh找不到它。檢查gzip是否存在,如果是,請檢查它是否在SH的搜索路徑中(在腳本中可能有「echo $ PATH」,並查看gzip所在的文件夾是否位於路徑中) – Nidhoegger

+0

這是$ PATH的內容/root/.embulk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games – jarjar

回答

2

你更改路徑,/usr/src,所以當tar嘗試執行gzip時,它無法找到它,因爲它只能在/ usr/src中查找。您需要將gzip的位置添加到PATH(以及配置腳本將調用的每個工具的位置以及make),或者明確地調用它而不是讓tar調用它,或者(最佳選擇) ,請勿修改PATH。如果你堅持改變路徑,試試PATH=/usr/src:/usr/sbin:/usr/bin:/sbin:/binPATH=/usr/src:$PATH,但真的最好放置一個名爲src的目錄。

+0

如果我不使用PATH,問題仍然存在 – jarjar

+0

現在可以了,謝謝 – jarjar

0

櫃面,如果你想/usr/src加入PATH變量則更好的方法將作爲

PATH="$PATH:/usr/src" 

使你的腳本從任何目錄路徑運行使用其持有的源文件路徑的絕對路徑的獨立變量如file_path變量,它用在下面的腳本中。

#!/bin/sh 
PATH="$PATH:/usr/src" 
wget=/usr/bin/wget 
tar=/bin/tar 
file_path="/path/to/source-files" 

echo "###############" 
echo "INSTALL LIBPCAP" 
echo "###############" 
$tar -xvf $file_path/libpcap-1.3.0.tar.gz 
cd $file_path/libpcap-1.3.0 
./configure --prefix=/usr 
make && make install 
0

當gzip壓縮的打包處理,你應該明確地傳遞選項-z,所以你的代碼應該是這樣的:

$焦油-x ž VF的libpcap-1.3.0.tar.gz