Eu tenho um .sh que é "Self Extracting" mas remove pastas após a conclusão

4

Eu preciso das pastas para ficar por aqui e não consigo encontrar uma maneira de impedir que o script as remova. É suposto instalar o software, mas é projetado para RedHat e eu quero compilar e executar os arquivos manualmente no Ubuntu. Existe alguma maneira de percorrer um script bash ou extrair um arquivo de um arquivo .sh de instalação automática? Obrigado!

O pacote em questão é: link (o Linux .sh)

    
por Simeon Hanks 23.09.2013 / 21:26

1 resposta

2

Neste caso, você só precisa fazer

tail -n +31  spice2_5_1-generic-linux.sh > spice2_5_1-generic-linux.tar

depois que você pode lidar com isso como um arquivo tar normal. ( tar -xvf spice2_5_1-generic-linux.tar ).

Como esse tar não tem um diretório principal, sugiro que você faça

mkdir TempSpice   
cd TempSpice
tar -xvf ../spice2_5_1-generic-linux.tar

Algumas notas :

Geralmente, os arquivos de extração automática são um script seguido de dados, apenas em um único arquivo. Nesse caso, o script está nas primeiras 30 linhas.

#!/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

O script dentro é básico. Era possível ler o arquivo com menos e ver o que ele faz ... e agir de maneira semelhante. Com um editor que respeita a parte binária (a segunda), também é possível modificar a parte do script.

    
por Hastur 20.05.2014 / 14:52

Tags