En esta pequeña guĂa voy a explicarles (y enseñarles) porque es mejor que compiles un programa (dĂgase Firefox, Vlc, etc) desde su cĂłdigo fuente, a que lo bajes (desde El Centro de Software, Yumex, Pacman, etc) y lo instales.
Primero vamos con la teorĂa:
¿Qué es «compilar»?
Compilar es transformar el cĂłdigo fuente (cĂłdigo escrito en un determinado lenguaje de programaciĂłn, dĂgase C,C++,etc) en un programa ejecutable para su funcionamiento mediante el uso del procesador para la conversiĂłn del lenguaje usado para generar el cĂłdigo a el binario y ensamblador. TambiĂ©n se le suele llamar empaquetamiento.
¿Porqué es mejor «compilar»?
Primero tienes que saber lo siguiente para entender el por que. Dicho de una manera «burda» (simple, no muy profesional, etc), cada raza (Pentium, Core, Atom,etc) y su especie (Intel, AMD, ARM,etc) de procesador tienen instrucciones (software escrito en ensamblador que procesa el código) propias de su modelo (Core i7, Core i5, Atom x2, Phantom x8,Arm,etc) y además tienen instrucciones generales que todos los de su especie tienen.
Cuando vos bajas desde los repositorios a travĂ©s del Centro de Software/apt-get/Yumex/Yum/Pacman/etc, un programa que se instala de forma automática se dice que esta precompilado para su funcionamiento en todos los procesadores posibles (Intel y Amd). Al tratarse de un programa precompilado se pierden esas instrucciones propias de Ă©se modelo de procesador especĂfico (piensa que si un programa como Firefox o Chrome, que tienen más de 7 u 8 millones de lĂneas de cĂłdigo, tuvieran que poner todas las instrucciones especĂficas para cada procesador que hay en el mercado, la cantidad de cĂłdigo serĂa tan grande que ya no serĂa eficiente Ă©se programa) dejándose nada más que las generales de su marca creadora (Intel, Amd,Arm).
Al bajar, descomprimir y compilar por tu cuenta el cĂłdigo fuente de un programa, Ă©ste se compila con las instrucciones especĂficas de TU procesador, (lo que no quiere decir que no sirva en una máquina con otro distinto, sĂłlo que va a estar optimizado especĂficamente y puramente para tu procesador), desatando y liberando asĂ todo el poder que tu procesador es capaz de dar gracias a sus instrucciones especĂficas.
En detalles más tĂ©cnicos, estas instrucciones especĂficas están Ăntimamente ligadas a lo que se conoce como el chipset de tu placa madre, que es el gran quebradero de cabeza para los que tenemos Intel para cuando queremos hacer un upgrade del procesador y la placa madre.
Te sorprenderĂas del poder que puede llegar a dar tu Amd Atom x2 o tu Intel Core Inside, Core 2 Duo, i3, etc de tu vieja PC. ÂżAhora entiendes por que se habla mucho en el mundo Linux de compilar el famoso Kernel (corazĂłn de todo sistema operativo)? ImagĂnate si compilar especialmente para tu pc todo un sistema (entorno gráfico (Gnome,Kde, etc), Kernel, programas de uso comĂşn (Firefox, Vlc, Chrome, Wine, etc) todo el nivel de velocidad y optimizaciĂłn que tendrĂas.
Éste principio de compilación para obtener un código optimizado especialmente para tu máquina es el que utilizan distros como Gentoo y derivados (del que no voy a hablar ahora, yo utilizo Fedora minimal con compilación de Gnome 3, el kernel y demás programas) donde el sistema, sus actualizaciones y sus programas siempre siempre son compilados.
Desventajas de la compilaciĂłn:
Ya te expliqué todas las ventajas, pero como todo en el universo tiene una contra.
En el caso de la compilaciĂłn son;
- Tiempo necesario para esto (Firefox con un i7 4790K (sin overclock ya que soy muy malo con los voltajes) toma 3 minutos, Gnome Shell (la barra nada más) con Gnome-Control-Center me tomo unos 2 minutos, los dos siendo compilados a la vez en Fedora. Pero en una máquina con un procesador menos fuerte este tiempo puede aumentar desmesuradamente).
- El procesador usa el 100% de su potencia con todos sus núcleos al máximo, por lo que el consumo y el calor se disparan (tenerlo en cuenta si tiene overclocking o si es especialmente una notebook), asà que es conveniente que te prepares un mate o un café para la ocasión.
- Quizás te falte alguna librerĂa (herramienta) que utilice algĂşn programa para que no de error en la compilaciĂłn. Por lo general todas las distros tienen paquetes o conjuntos de los mismos para evitar esto (vienen repletos de diversas librerĂas y demás cosas que permiten al kernel comunicarse como se debe con el procesador durante el proceso).
ÂżCĂłmo puedo compilar?
Acá hablo de compilar un programa de uso normal, no un kernel.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardour
Puse debian-policy, pero si su distro no es Debian y les da error de que no existe ese paquete, simplemente ignĂłrenlo. Tengo que aclarar que hace mucho que no uso estos sistemas por lo que si algĂşn paquete ya no se encuentra en los repositorios no se hagan problema.
Para Fedora:
sudo yum -y install kernel-headerskernel-develsudo yum groupinstall "Development Tools"sudo yum groupinstall "Development Libraries"
Acá tengo que pedir disculpas para los que usan Arch (no conozco bien la distro) y OpenSuse, ya que no conozco estas distros ni tampoco los paquetes respectivos para realizar una correcta compilación (y no he corroborrado lo que hay en la red, por lo que para esas dos no sé si funcionan).
Ahora que ya tienes todos los requerimientos necesarios solo necesitas bajarte el código fuente del programa que quieres compilar, según la extensión lo descomprimes usando la terminal (tranqui, te dejaré los comandos) y cuando vallas a la carpeta (siempre con la terminal) haces lo siguiente:
Si tiene posibilidad de configurarse para elegir los componentes y demás:
./configure
Luego tecleas:
make
Y por Ăşltimo para instalar el programa en tu linux:
make install
Comandos para descomprimir mediante la terminal (el archivo se descomprime en una carpeta donde se encuentre el archivo):
Archivos .tar (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Empaquetar | tar cvf archivo.tar /archivo/* Desempaquetar | tar xvf archivo.tar Ver el contenido | tar tvf archivo.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar con gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Empaquetar y comprimir | tar czvf archivo.tar.gz /archivo/ Desempaquetar y descomprimir | tar xzvf archivo.tar.gz Ver el contenido (sin extraer)| tar tzvf archivo.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | gzip -q archivo (El archivo lo comprime y lo renombra como "archivo.gz") Descomprimir | gzip -d archivo.gz (El archivo lo descomprime y lo deja como "archivo" Nota: gzip solo comprime archivos, no directorios
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | bzip2 archivo | bunzip2 archivo (El archivo lo comprime y lo renombra como "archivo.bz2") Descomprimir | bzip2 -d archivo.bz2 | bunzip2 archivo.bz2 (El archivo lo descomprime y lo deja como "archivo") Nota: bzip2 solo comprime archivos, no directorios
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar con bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | tar -c archivos | bzip2 > archivo.tar.bz2 Descomprimir | bzip2 -dc archivo.tar.bz2 | tar -xv | tar jvxf archivo.tar.bz2 (versiones recientes de tar) Ver contenido | bzip2 -dc archivo.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | zip archivo.zip /mayo/archivos Descomprimir | unzip archivo.zip Ver contenido | unzip -v archivo.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | rar -a archivo.rar /mayo/archivos Descomprimir | rar -x archivo.rar Ver contenido | rar -v archivo.rar | rar -l archivo.rar
Y esto es todo. Saludos desde Buenos Aires, Argentina. Felices fiestas y año nuevo ! :).