Como construirse un Wine Portable

A veces nos es muy útil ejecutar en un ordenador con Linux alguna que otra aplicación de Windows a causa de no tener ninguna alternativa a dicha aplicación, eso como muchos saben se puede hacer con Wine, una aplicación para correr programas con extensión .exe, pero suele suceder que este programa no esta instalado en dicho ordenador y por varias circunstancias no podemos instalarlo (una de ellas seria que no tenemos acceso a root, para instalarlo), bueno pues con el script de abajo me propongo crear un wine portable para solucionar el problema.

Desde una shell cualquiera en el ordenador donde estén en ese momento ponen:

nano pac

Pegan el texto de abajo:

pac
#!/bin/sh
#######################################################################################################
# AUTOR:      (c) Yasiel Ordońez Abreu. <inf1003@ucf.edu.cu>
# WRITTEN BY:   May 22,2013
# VERSIÓN:      1.0
# LICENCIA:      GPL (http://www.gnu.org/licenses/gpl.html)
# NOMBRE:      Portable Application Constructor (pac)
# INSTALACIÓN:   Copiar en el directorio /usr/bin (cp pac /usr/bin)
# DESCRIPCIÓN:   Contruye aplicaciones portables desde los repositorios, para ejecutarlas en otros ordenadores.
clear ; mkdir pac_dir ; cd pac_dir > /dev/null
mkdir $@_portable ; cd $@_portable > /dev/null
packages=$(apt-cache depends $@ | grep -v -e onflict -e Reemplaza -e Replace -e PreDep -e \< -e swx11 | sed -e s/Depend.:// -e s/Recommends:// -e s/Recomienda:// -e s/Suggests://  -e s/Sugiere:// -e s/[\ \|]//g)
apt-get download $packages
echo "Descomprimiendo paquetes....."
for i in * ; do
    if [ -n "$(echo $i | grep .deb$)" ] ; then
        ar xo $i
       if [ -f data.tar.gz ] ; then
          tar -xzf data.tar.gz
       elif [ -f data.tar.bz2 ] ; then
          tar -xjf data.tar.bz2
       elif [ -f data.tar.lzma ] ; then
          tar --lzma -xf data.tar.lzma
       else
           echo "No pude extraer los binarios desde $i" >&2
      fi
      rm data*
      rm debian*
      rm control*
   fi
done
echo "#!/bin/bash\n" >> run_$@
echo "/lib/ld-linux.so.2 --library-path \"lib:lib64:usr/lib\" usr/bin/$@ \$1\n" >> run_$@
chmod +x run_$@
mkdir --parents /tmp/pac/packages_of_$@ > /dev/null
mv --force *.deb /tmp/pac/packages_of_$@ > /dev/null

Presionan Ctrl + S para salir y afirman que si desean guardar el documento. Después le dan permisos de ejecución con:

chmod a+x pac

Una ves hecho procedemos a crear el wine portable con este comando:

./pac wine

Se nos creará una carpeta llamada pac_dir con el wine portable dentro, accedemos a ella:

cd ./pac_dir/wine_portable

Y para ejecutar una aplicación pondríamos:

./run_wine ruta_del_programa.exe

Creándose el primero el perfil del wine dentro del perfil del usuario en que estemos logueado y luego ejecutándose dicha aplicación.

Esta aplicación también sirve para llevarnos a nuestro hogar todos los paquetes y dependencias que deseemos, por ejemplo (libreoffice). Realizando su instalación más tarde.

Bastaría con poner:

./pac libreoffice

Borrar el directorio pac_dir que supuestamente no nos interesa y copiar a un dispositivo usb todos los paquetes del libreoffice alojados en el directorio /tmp/pac/packages_of_libreoffice, estos paquetes luego se pondrían en /var/cache/apt/archives/

cp /tmp/pac/packages_of_libreoffice /media/yasiel

Una ves en casa, los copiaríamos a la máquina de la siguiente manera:

cp /media/yasiel/packages_of_libreoffice/* /var/cache/apt/archives

Nota: Vale aclarar que el directorio /tmp se limpia cuando apagamos o reiniciamos el ordenador, por lo que los paquetes que se han creado allí, ya no estarían. pero de seguro muchos de ustedes lo sabrán. Ademas para que el programa pinche, debe de estar configurado correctamente el source.list en el ordenador donde se valla a ejecutar.

Yasiel Ordoñez Abreu 2013/05/27 13:04