linux - programas - no se puede ejecutar el fichero binario
¿Cómo funcionan los instaladores binarios de Linux(.bin,.sh)? (5)
Es posible que desee comprobar makeself.sh
De las notas de los autores
makeself.sh es un pequeño script de shell que genera un archivo tar.gz autoextraíble de un directorio. El archivo resultante aparece como un script de shell (muchos de ellos tienen un sufijo .run) y se puede iniciar como está. El archivo se descomprimirá en un directorio temporal y se ejecutará un comando arbitrario opcional (por ejemplo, un script de instalación).
Los archivos propios también incluyen sumas de comprobación para la autovalidación de integridad (sumas de comprobación CRC y / o MD5).
El script makeself.sh se usa solo para crear archivos desde un directorio de archivos. El archivo resultante es en realidad un archivo TAR comprimido (usando gzip, bzip2 o compress), con un pequeño script de shell al principio. Este pequeño apéndice realiza todos los pasos para extraer los archivos, ejecutar el comando incrustado y eliminar los archivos temporales cuando todo termina. Todo lo que el usuario tiene que hacer para instalar el software contenido en dicho archivo es "ejecutar" el archivo [que es ejecutar el script]
Estoy tratando de mantener el código de este script tan portátil como sea posible, es decir, no depende de ninguna característica específica de bash y solo llama a los comandos que están instalados en cualquier sistema compatible con UNIX que funcione. Este script, así como los archivos que genera, deben ejecutarse en cualquier formato Unix, con cualquier shell Bourne compatible, siempre que los programas de compresión estén disponibles.
Finalmente, el paquete makeself
se presenta como un script autoextraíble llamado makeself.run
.
Algunos programas (por ejemplo, el IDE de NetBeans ) envían los instaladores de Linux en archivos .sh. Curioso acerca de cómo exactamente ''empaquetan'' un IDE completo en un ''script de shell'', abrí el archivo en un editor. Vi un código de script de shell de texto sin formato y luego un galimatías aleatorio, que considero que es texto "binario" o no claro.
Me pregunto cómo mezclan scripts simples de shell y luego probablemente llaman a las cosas "no legibles", que serían los binarios.
¿Alguna idea sobre esto?
Sharutils de GNU:
http://www.gnu.org/software/sharutils/
es un conjunto de herramientas para crear archivos de shell y proporciona algunas características adicionales que pueden ser útiles (como sumas de comprobación para garantizar que la carga útil no se dañe en tránsito).
La protección contra modificaciones maliciosas no es realmente factible cuando el producto final debe ser interpretado por el intérprete de comandos: cualquiera que haya entendido la técnica de generación también podría modificar la suma de comprobación.
También hay otro creador de instalador de software comercial (como InstallAnywhere) que básicamente tiene su propia versión de shar / makeself.
Netbeans tiene su propio motor de instalación, y parte de él, que hace que el desempaquetado y el lanzamiento se realicen en el componente de iniciador nativo de NBI: http://wiki.netbeans.org/NBINativeLaunchers
Crea un archivo de shell (script) para Linux / Unix / MacOS y ejecutable nativo para Windows. Puede usar esa herramienta para sus propios proyectos, también.
Básicamente, se trata de un script de shell adjunto a un archivo comprimido de algún tipo, como un archivo tar. sed
comando tail
o sed
en ti mismo (la variable de $0
en el shell de Bourne) para quitar el script de shell en el frente y pasar el resto a tu unarchiver.
Por ejemplo, cree el siguiente script como self-extracting
:
#!/bin/sh -e
sed -e ''1,/^exit$/d'' "$0" | tar xzf - && ./project/Setup
exit
El comando sed
anterior borra todas las líneas de la primera línea del archivo a la primera que comienza con "exit" y luego pasa el resto. Si lo que comienza inmediatamente después de la línea de "salida" es un archivo tar, el comando tar
lo extraerá. Si eso es exitoso, se ./project/Setup
archivo ./project/Setup
(presumiblemente extraído del tarball).
Entonces:
mkdir project
echo "#!/bin/sh" > project/Setup
echo "echo This is the setup script!" >> project/Setup
chmod +x project/Setup
tar czf - project >> self-extracting
Ahora, si se deshace de su antiguo directorio de project
, puede ejecutar self-extracting
y extraerá ese archivo tar y ejecutará el script de instalación.