Hola amigos, en esta ocasión les presento este script desarrollado por mí para ayudar a portabilizar aplicaciones linux. Es una forma bastante fácil que permitirá «portabilizar» nuestras aplicaciones y poder así compartirlas un poco en la comunidad o los amigos sin termor a que falten dependencias.
¿Cómo funciona?
Creas una carpeta con un ejecutable linux cualquiera no script sino ejecutable compilado, entras en la carpetapor la terminal o por el gestor de archivos das abrir terminal aquí y corres en esa misma carpeta copylibrerias que es el script. Luego este detectará las dependencias y las copiará en la misma carpeta, para que no falte ninguna haga varias pasadas del script, por lo menos ejecútelo 4 veces sobre la misma carpeta pues el detecta las bibliotecas de las bibliotecas copiadas.
Hecho esto toca el turno a de hacer un script bash que corra el ejecutable y busque las bibliotecas en este directorio para ello sobreescriba la variable PATH del sistema y LD_LIBRARY_PATH además de XDG_DATA_DIRS para los shares a la misma carpeta.
Luego se hace un auto estraíble o bien se distribubuye la aplicación en un tar.gz
!/bin/bash
function depend() {
for t inldd "$1" |cut -d ">" -f2|tr "\t" " "
;do
cp -v $t "pwd
" 2>/dev/null
done
}
for x inls
;do
echo "Leyendo $x"
depend $x
done
rm ./libc.so.6
rm ./libdl.so.2
rm ./libpthread.so.0
Aquí hay un ejemplo de script que carga una app
!/bin/bash
export PATH=pwd
.
/:$PATH
:./:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH= `pwd`
`pwd`/MiApp
Hola Haylem,
Te comento que ya hay una tecnolog’ia pare lograr esto. Se llama AppImage y permite incluso hacer un «HOME» portable. Puedes encontrar m’as informaci’on aqu’i: https://docs.appimage.org/packaging-guide/from-source/linuxdeploy-user-guide.html
Saludos
si la conozco es muy buena y la estoy usando de hecho quiero hacer una utilidad para crear appimages de forma grafica pero de esta manera no se necesita nada mas instalado en el sistema, anto flatpak, snap como appimage si, en el caso de appimage necesita fuseiso y en algunas distros no viene por defecto instalado puesto que paraque un appimage funcione tiene que montarse sin privilegios de root como un usuario normal y eso lo hace el modulo de fuse si esta instalado, de entrada creo que un sistema base debian no preinstala fuseiso, y en linux para montar normalente es con mount como root para eso se creo fuse para que los usuarios pudieran montar dispositivos sin privilegios especiales
ahora estoy terinando una utilidad para crear paquetes debian que mas adelante puede que use este script y luego crea un deb
enonces si instalo un escritorio ligero como wmaker no me instalara fuseiso, ya hice la prueba luego de instalar el sistema base de debian para crear una instalacion ligera y asi probar los appimages asegurandome que no hay nada mas instalado, esto es necesario porque si ya tenia instalado gtk la aplicacion funcionaria pero si faltara alguna libreria no me enteraria facilmente, para crear este tipo de cosas es necesario una instalacion virgen sin nada de lib gtk ni qt ni nadade eso, solo las X un gestor de ventanas y la terinal y correr os appimages desde alli para saber si no faltan dependencias en otro sistema
Hola Haylem,
FuseIso ya no es necesario solo que «Fuse» el cual si viene por defecto en la mayoria de las distribuciones o puede ser facilmente instalado. Aparte de esto no necesitas m’as nada para poder usar un AppImage. Adem’as hace tiempo (+2 a~nos ) que AppImage usa squashfs como sistema de archivo para almacenar la aplicaci’on en si.
Respecto a crear AppImages de forma grafica, revisa el proyecto https://github.com/linuxdeploy quizas te puedas colaborar escribiendo recetas para crear AppImage para otras tecnolog’ias.
hasta hace un tiempo usaba appimageassistant el cual a dia de hoy si me muestra los iconos en los appimages no asi qtdeploy ni los otros, probablemente sea por algun daemon como appimaged que requiera para poder detectar los iconos correctamente… lo cierto es que appimageassistant si mem uestra los iconos quiza porque las imagenes iso ya estan bien soportadas con todas sus caracteristicas en la mayoria de filemanagers
Hola,
Creo que deb’i presentarme desde un primer momento. Soy desarrollador del proyecto AppImage (por eso la insistencia 😀 ). Si deseas que todas tus AppImage tengan iconos te recomiendo uses uno de estos thumbnailers.
https://github.com/azubieta?utf8=%E2%9C%93&tab=repositories&q=thumbnailer&type=&language=
Si usas appimaged los thumbnails son generados de manera autom’atica, nada m’as que KDE y creo que Gnome tambien ignoran el estandar de freedesktop que ellos mismos escribieron.
Respecto a la creaci’on de AppImage. No se recomienda utilizar appimageassistant en proyectos nuevos. Su desarrollo est’a congelado y no recive actualizaciones o correcciones. En su logar se recomienda utilizar linuxdeploy (https://github.com/linuxdeploy). Este ya provee una serie de plug-ins para generar AppImage a partir de differentes tecnologias como qt y python.
Igual si tienes m’as preguntas eres bienvenido al canal de freenode #appimage.
Saludos
ok gracias, estare al tanto…
Buen aporte
Esto es una actualizacion al script
#!/bin/bash
function depend() {
for t in
ldd "$1" |cut -d ">" -f2|tr "\t" " "
;docp -v $t «
pwd
» 2>/dev/nulldone
}
for x in
ls
;doecho «Leyendo $x»
depend $x
done
rm ./libc.so.6
rm ./libdl.so.2
rm ./libpthread.so.0
rm ./libtinfo*
rm ./libm.so.6
rm ./libm.so
rm ./libresolv*
Tal como está a mi no me funciona el script:
./copy.sh: línea 5: error sintáctico cerca del elemento inesperado
|’./copy.sh: línea 5:
for t in ldd "$1" |cut -d ">" -f2|tr "\t" " ";do'
Lo modifiqué de esta forma:
#!/bin/bash
function depend () {
for t in $(ldd "$1" | cut -d ">" -f 2 | tr " " "\t"); do
#for t in $(ldd "$1" | awk '{print $3}'); do
cp -v $t $(pwd) 2>/dev/null
done
}
for x in $(ls); do
echo “Leyendo $x”
depend $x
done
rm ./libc.so.6
rm ./libdl.so.2
rm ./libpthread.so.0
rm ./libtinfo*
rm ./libm.so.6
rm ./libm.so
rm ./libresolv*
Saludos.