Chatear en RedIrc

domingo, 17 de abril de 2016

¿ Compilar o instalar aplicaciones de repositorios ?

Compilar aplicaciones

La diferencia entre instalar mediante repositorios y de compilarlo es que las aplicaciones instaladas son paquetes genéricos, mas pesados y sin optimizar mientras que los compilados tienen mas ventajas:
  • Compatibilidad, ya que se pueden crear aplicaciones desde cualquier maquina sin importar su arquitectura o procesador.
  • Personalizado, permite configurar diferentes aspectos del binario resultante mediante parámetros o flags que son pasados a la hora de compilar adaptando la aplicación a nuestros gustos particulares, por ejemplo, podemos deshabilitar el soporte SSL de una aplicación pasando el parámetro --disable-ssl o similar.
  • Optimizados, reduciendo su peso final pudiendo ser mucho mas rápida la aplicación final pasando ciertos parámetros al compilador como: CFLAGS='O2 -pipe -march=native'



¿Como se instala un tar.gz ?


Un archivo tar.gz empaqueta el código fuente de nuestra aplicación, no se puede instalar directamente. Vamos a suponer que vamos a compilar hexchat.tar.gz, un cliente de iRC famoso, lo primero es descomprimir y instalar las herramientas de compilación:
tar xvzf hexchat.tar.gz && cd hexchat
sudo apt install build-essential autoconf automake
Vamos a ser un poco frikis y ha instalar 2 aplicaciones que nos darán un poco de colorido cuando compilemos ;):
sudo apt install colorgcc colormake
echo "alias make='colormake'">>~/.bashrc
echo "alias gcc='colorgcc'">>~/.bashrc
source ~/.bashrc
El paquete build-essential como supondrás es un meta-paquete que contiene las herramientas principales como gcc para poder compilar. 

Instalamos las dependencias que necesita la aplicación, normalmente con el código fuente suele venir un archivo llamado README o INSTALL que debemos de leer, o en su defecto mirar en la carpeta docs algo relacionado. Dentro de estos archivos estará la información que buscamos para poder compilar, ejemplo:.
Requisitos de compilación

Otra manera más fácil y rápida de instalar todas las dependencias es usar apt aunque no siempre esta en los repositorios:
sudo apt-get build-dep hexchat -y
Debemos seguir los pasos que nos dice el archivo README/INSTALL, en este caso y en la mayoría de casos se suele ejecutar estos 3 comandos por orden:
  1. ./configure o en su defecto ./autogen.sh
  2. make
  3. make install
El configure como ya dijimos anteriormente nos va a permitir personalizar ciertas opciones que nos interesen de la aplicación que vamos a compilar, si ejecutamos lo siguiente veremos todas los posibles parámetros que se pueden usar:
./configure --help
También podemos pesarla variables de entorno para que el compilador lo capture, por ejemplo:
LDFLAGS=-L/usr/local/lib/ ./configure
Los parámetros se pueden apilar separados por espacios, por ejemplo, si no vamos a usar plugins de perl ni proxys en hexchat podemos ejecutar lo siguiente:
./configure --disable-perl --disable-libproxy
Una vez definido las diferentes opciones de nuestra aplicación podemos empezar a compilar ejecutando make que hace uso del archivo Makefile generado con el comando configure y finalmente make install instalara la aplicación:
make -j13
sudo make -j13 install
El parámetro -j (jobs) indica el numero de hilos que se van a lanzar a la vez reduciendo considerablemente el tiempo de compilación, el numero suele ser los cores + threads + 1.



Error while loading shared libraries:


Alguna vez puede ocurrirnos con una aplicación compilada o instalada que no encuentra cierta librería, por ejemplo:

error while loading shared libraries

Como vemos no encuentra la librería libcrypto.so.1.0.0, podemos actualizar la cache de las librerías compartidas:
sudo ldconfig
Podemos comprobar las librerías que faltan ejecutando:
ldd `which aircrack-ng`
ldd not found
Si persiste necesitamos instalar la(s) librería(s). Para saber el paquete que necesitamos instalar para satisfacer la aplicación podemos usar apt-file:
sudo apt install apt-file
Actualizamos la primera vez la base de datos y buscamos la librería:
sudo apt-file update
apt-file search libcrypto.so.1.0.0
Nos saldrá una linea similar a esta:
libssl1.0.0: /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

Con lo que la librería libcrypto.so.1.0.0 se encuentra en el paquete libssl1.0.0.
sudo apt install libssl1.0.0

No hay comentarios:

Publicar un comentario