2015-04-22 5 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 (и расположение каждого инструмента, который скрипт configure будет вызывать, а также сделать), или вызвать его явно, вместо того чтобы позволить tar вызвать его или (лучший выбор) , не изменяйте PATH. Если вы настаиваете на изменении PATH, попробуйте PATH=/usr/src:/usr/sbin:/usr/bin:/sbin:/bin или PATH=/usr/src:$PATH, но на самом деле лучше оставить его в покое и действительно странно поставить в него каталог с именем src.

+0

если я не использую PATH, проблема сохраняется – jarjar

+0

Теперь все в порядке спасибо – jarjar

0

Incase, если вы хотите /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

Смежные вопросы