Мне нужно, чтобы папки оставались рядом, и я не могу найти способ помешать сценарию их удалить. Предполагается установить программное обеспечение, но оно предназначено для RedHat, и я хочу скомпилировать и запустить файлы вручную в Ubuntu. Есть ли какой-нибудь способ пройти через скрипт bash или извлечь архив из самоустановочного файла .sh? Спасибо!
Рассматриваемый пакет: http://irsa.ipac.caltech.edu/data/SPITZER/docs/dataanalysistools/tools/spice/downloadspice/ (Linux. ш)
В этом случае необходимо только сделать
tail -n +31 spice2_5_1-generic-linux.sh > spice2_5_1-generic-linux.tar
после того, как можно иметь дело с ним как нормальный файл tar. ( tar -xvf spice2_5_1-generic-linux.tar
).
Так как этот tar не имеет основного каталога, который я предлагаю, чтобы Вы сделали
mkdir TempSpice
cd TempSpice
tar -xvf ../spice2_5_1-generic-linux.tar
Некоторые примечания:
Часто самораспаковывающиеся файлы являются сценарием удара, сопровождаемым данными, только только в одном файле. В этом случае сценарий находится в первых 30 строках.
#!/bin/sh
PATH=/bin:/usr/bin
base=sut.$$
outname_tar=$base.tar
tempdir=spottmp.$$
mkdir $tempdir
echo "Unpacking..."
platform=`uname`
if [ $platform = "SunOS" ]; then
tail +31 $0 > $outname_tar
else
tail -n+31 $0 > $outname_tar
fi
echo "Extracting..."
(cd $tempdir; tar xvf ../$outname_tar)
savestatus=$?
if [ $savestatus != "0" ]; then
echo status from tar = $savestatus
echo ABORTING INSTALLATION
/bin/rm -rf $tempdir
/bin/rm -f $outname_tar
exit $savestatus
fi
echo "cleaning up..."
/bin/rm $outname_tar
echo "installing..."
(cd $tempdir; ./INSTALL)
/bin/rm -rf $tempdir
exit 0
Сценарий внутри является основным. Было возможно считать файл с меньше и видеть то, что это делает... и действовать похожим способом. С редактором, который уважает двоичную часть (второй) возможно изменить часть сценария также.