Juan Antonio F.M.

Just Another Freak of Machines

Instalando Eagle en Debian 32Bits

Hoy en dia, cada vez mas gente instala su SO con una arquitectura de 64Bits. Pero algunos no se dan cuenta y publican su software propietario en 32. Y solo en 32 :(

Con este articulo, podras instalar los programas propietarios que necesites (y que no puedas sustituir con software libre).

Enfoque

Hay varios metodos para conseguir instalar cosas de 32 en un SO de 64. una opcion es usar chroot, aunque para usar una o dos aplicaciones puede resultar pesada. Otro es la de crear un entorno encapsulado a mano, instalando las librerias en una carpeta local, que es la que vamos a seguir.

Los pasos han sido probados en un Debian 6 SID de 64, pero deberian funcionar en cualquier distro basada en, como ubuntu o mint. Ademas con un poco de imaginacion se pueden llevar a otras distros tambien.

Y aunque en este ejemplo instalemos eagle, tambien podemos instalar otros programas con el mismo metodo, investigando un poco cuales son las librerias que necesita y siguiendo pasos similares.

Preparativos

Para instalar eagle necesitamos algunas cosillas:

- libpng 1.4.x (provides libpng14.so)
- OpenSSL 1.0.0 (provides libssl.so.1.0.0 and libcrypto.so.1.0.0)
- libjpeg v8 (provides libjpeg.so.8)

Bajatelas (en los enlaces de arriba lo encontraras rapido), y descomprimelas es donde pongas los src. Para este caso lo haremos en /home/lusuario/.eagle pero para casos generales yo te recomiendo hacerlo en /usr/src y si no sabes mucho de instalar desde los fuentes, echale un vistazo a mi articulo Paquetes Fuente en Cuenco De Loto - the Ninja Way to Install Source Tarballs habla de un pequeño truco que algun dia te evitara muchas horas, como las que yo perdi en su dia -;)

Y para poder compilar, tambien hacen falta algunas herramientas:

sudo apt-get install build-essential perl gcc-multilib
sudo apt-get install ia32-libs lib32z1 lib32z1-dev

Descargando, compilando e instalando librerias a lo local

que no a lo loco

Seguiremos los pasos tipicos, pero con algunos retoques (lee mas abajo)

  1. con las librerias descargadas y desempaquetadas
  2. Configuramos las librerias con las opciones oportunas (como que prefijo usar, y compilar en modo 32 bits)
  3. Compilamos (repito, en modo 32)
  4. testeamos la libreria
  5. La instalamos
  6. Y comprobamos que las cosas estan bien y en su sitio (que es de 32 y que esta en la carpeta “encapsulada”

Al seguir el paso 2, tendras que configurar unas opciones:

$ export CFLAGS="-m32"
$ export LDFLAGS="-m32"

Y luego lanzar el configure con

./configure --prefix=/home/lusuario/.eagle 

i Para libpng:

cd libpng-`version  ./cfonfigure --prefix=/home/lusuario/.eagle/usr CFLAGS=-m32
# aqui necesitamos un arreglillo para debian y similares
sudo ln -s /usr/include/x86_64-linux-gnu/zconf.h  /usr/include
# Y seguimos como siempre
make check
make install
cd ..
# y comprobamos lo que hemos instalado
file -L /home/lusuario/usr/lib/libpng14.so

Para openSSl en concreto, haremos:

cd 
cd openssl-1.0.0e
./Configure shared --prefix=/home/lusuario/.eagle/usr linux-generic32 -m32
make
make test
make install
cd ..
file -L /home/lusuario/.eagle/usr/lib/libssl.so.1.0.0
file -L /home/lusuario/.eagle/usr/lib/libcrypto.so.1.0.0

Y para libjpeg v8

cd jpeg-8c
./configure --prefix=/home/lusuario/.eagle/usr CFLAGS=-m32
make
make test
make install
cd ..
file -L /home/lusuario/.eagle/usr/lib/libjpeg.so.8

Y alegria muchacho!!! podemos seguir.

Una ultima comprobacion…

file -L /home/lusuario/.eagle/usr/lib/* | grep 32  | cut -c1-90

Nos dira la lista de todo lo que tenemos, al estilo de

/home/lusuario/.eagle/usr/lib/libcrypto.so:        ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libcrypto.so.1.0.0:  ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libjpeg.so:          ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libjpeg.so.9:        ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libjpeg.so.9.0.0:    ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libpng14.so:         ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libpng14.so.14:      ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libpng14.so.14.11.0: ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libpng.so:           ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libssl.so:           ELF 32-bit LSB shared object, Intel 80386
/home/lusuario/.eagle/usr/lib/libssl.so.1.0.0:     ELF 32-bit LSB shared object, Intel 80386

Instalando Eagle en si

En su carpeta mas bien

Ahora tenemos que ajustar algunas cosas para lanzar eagle tirando de las librerias que acabamos de compilar.

Hay que modificar la variable LD_LIBRARY_PATH en la sesion del shell para que el instalador use las librerias oportunas

export LD_LIBRARY_PATH=/home/lusuario/.eagle/usr/lib
./eagle-lin-6.5.0.run

Y le indicas que lo quieres instalar en /home/lusuario/.eagle/eagle-6.5.0

Una vez instalado ahi, necesitamos crear un script para poder lanzarlo con comodidad. Mete algo asi en un archivo:

#!/bin/bash
# Ejecuta nuestra instalacion de eagle
export LD_LIBRARY_PATH=/home/lusuario/.eagle/usr/lib
/home/lusuario/.eagle/eagle-6.5.0/bin/eagle

Y luego dale permisos de ejecucion y esas cosas

chmod +x eagle.sh

Colocalo donde quieras y a correr!!!!!