Pregunta

Estoy tratando de generar un script de auto extracería utilizando el método discutido aquí: http://www.linuxjournal.com/node/1005818

Usando Ant (en Windows) creo el archivo de carga útil usando tarea TAR (compresión GZIP) y concatizo el script y el alquitrán utilizando la siguiente tarea concat.

<concat destfile="${output}/selfextract.bsx" 
            append="true"
            eol="lf">
    <fileset file="${installer}/decompress"/>
    <fileset file="${output}/payload.tar.gz"/>
</concat>

El archivo se está creando y parece contener los datos del archivo, pero cuando se ejecuta en nuestra máquina Red Hat Gzip se queja "Datos comprimidos no válidos -Formato violado".

¿Alguien ha tenido éxito en esto antes?

¿Fue útil?

Solución

A menos que uses el fixlastline argumento (apagado por defecto) entonces eol no se usa.

Probablemente Adivina: tienes una línea adicional al final de tu script de "descompresión" después del __ARCHIVE_BELOW__ línea. No puede tener líneas extra (incluso vacías) allí o llevará esos bytes al alquitrán. Esto podría ser causado, como dijo Dennis, por problemas de EOL, pero tendría que tener un awk Eso no es GNU tener este problema, creo.

La manera fácil de confirmar es cambiar su tail Para redirigir a un archivo en lugar de alquitrán, luego hexdump los primeros bytes del alquitrán original y el alquitrán de salida para ver qué bytes extra (o faltantes) están entrando allí.

Una última cosa para verificar es si necesitas establecer el binary opción en tu concat.

Otros consejos

Resuelto.

Más alto en el script de hormiga, estaba usando el FixCRLF apuntar con eol="unix" en descompress.sh. Por defecto, esta tarea agrega una nueva línea adicional al final del archivo a menos que agregue fixlast="false".

También agregué el binary="yes" atributo a concat.

Mi error por no incluir el resto del guión, y gracias por la ayuda.

Código final:

<concat destfile="${output}/selfextract.bsx" 
        binary="yes">
    <fileset file="${installer}/decompress"/>
    <fileset file="${output}/payload.tar.gz"/>
</concat>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top