2015-04-22 29 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