Per què és millor compilar a que instal des dels repositoris

En aquesta petita guia vaig a explicar-los (i ensenyar) perquè és millor que compiles un programa (digui Firefox, Vlc, etc) des de la seva codi font, al fet que el baixis (des del Centre de Programari, yumex, Pacman, etc.) i el instal.

Primer anem amb la teoria:

Què és «compilar»?

Compilar és transformar el codi font (codi escrit en un determinat llenguatge de programació, digui C, C ++, etc.) en un programa executable per al seu funcionament mitjançant l'ús de l'processador per a la conversió de l'llenguatge usat per generar el codi a l'binari i assemblador . També se li sol cridar empaquetament.

Per què és millor «compilar»?

Primer has de saber el següent per entendre el per que. Dit d'una manera «basta» (simple, no molt professional, etc.), cada raça (Pentium, Core, Atom, etc) i la seva espècie (Intel, AMD, ARM, etc) de processador tenen instruccions (programari escrit en assemblador que processa el codi) pròpies del seu model (Core i7, Core i5, Atom x2, Phantom x8, Arm, etc) ia més tenen instruccions generals que tots els de la seva espècie tenen.

Quan baixes des dels repositoris a través del Centre de Programari/apt-get/Yumex/Yum/Pacman/etc, un programa que s'instal·la de forma automàtica es diu que està precompilat per al seu funcionament en tots els processadors possibles (Intel i Amd). Al tractar-se d'un programa precompilat es perden aquestes instruccions pròpies d'aquest model de processador específic (pensa que si un programa com Firefox o Chrome, que tenen més de 7 o 8 milions de línies de codi, haguessin de posar totes les instruccions específiques per a cada processador que hi ha al mercat, la quantitat de codi seria tan gran que ja no seria eficient aquest programa) Amd,Arm).

En baixar, descomprimir i compilar pel teu compte el codi font d'un programa, aquest es compila amb les instruccions específiques del teu processador, ( cosa que no vol dir que no serveixi en una màquina amb un altre de diferent, només que estarà optimitzat específicament i purament per al teu processador) , deslligant i alliberant així tot el poder que el teu processador és capaç de donar gràcies a les seves.

En detalls més tècnics, aquestes instruccions específiques estan íntimament lligades al que es coneix com el chipset de la teva placa mare, que és el gran maldecap per als que tenim Intel per quan volem fer un upgrade de l'processador i la placa mare.

Et sorprendries del poder que pot arribar a donar el teu Amd Atom x2 o el teu Intel Core Inside , Core 2 Duo , i3 , etc de la teva vella PC. Ara entens perquè es parla molt al món Linux de compilar el famós Kernel (cor de tot sistema operatiu)? Imagina't si compilar especialment per al teu pc tot un sistema (entorn gràfic (Gnome, Kde, etc), Kernel, programes d'ús comú (Firefox, Vlc, Chrome, Wine, etc)) tot el nivell de velocitat i optimització que tindries.

Aquest principi de compilació per obtenir un codi optimitzat especialment per la teva màquina és el que utilitzen distros com Gentoo i derivats (de què no vaig a parlar ara, jo faig servir Fedora minimal amb compilació del GNOME 3, el nucli i altres programes) on el sistema , les seves actualitzacions i els seus programes sempre sempre són compilats.

Desavantatges de la compilació:

Ja et vaig explicar tots els avantatges, però com tot en l'univers té una contra.

En el cas de la compilació són;

  • Temps necessari per a això (Firefox amb un i7 4790K (sense overclock ja que sóc molt dolent amb els voltatges) pren 3 minuts, Gnome Shell (la barra res més) amb Gnome-Control-Center em prenc uns 2 minuts, els dos sent compilats alhora en Fedora. Però en una màquina amb un processador menys fort aquest temps pot augmentar desmesuradament).
  • El processador utilitza el 100% de la seva potència amb tots els seus nuclis a l'màxim, de manera que el consum i la calor es disparen (tenir-ho en compte si té overclocking o si és especialment una notebook), així que és convenient que et preparis una esmaixada o un cafè per a l'ocasió.
  • Potser et falti alguna llibreria (eina) que utilitzi algun programa perquè no d'error en la compilació. En general totes les distros tenen paquets o conjunts dels mateixos per evitar això (vénen plens de diverses llibreries i altres coses que permeten el nucli comunicar-se com es deu amb el processador durant el procés).

Com puc compilar?

Per Debian (Ubuntu, Mint, Elementary, etc són tots derivats d'aquest pel que segueixin això

Aquí parlo de compilar un programa d'ús normal, no un nucli.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardour

Vaig posar debian-policy, però si la seva distro no és Debian i els dóna error que no existeix aquest paquet, simplement ignórenlo. He d'aclarir que fa molt que no ús aquests sistemes pel que si algun paquet ja no es troba en els repositoris no es facin problema.

Per Fedora:

sudo yum -i install kernel-headers
desenvolupament del nucli
suo yum groupinstall "Development Tools"
suo yum groupinstall "Development Libraries"

Aquí he de demanar disculpes per als que fan servir Arch (no conec bé la distro) i OpenSuse, ja que no conec aquestes distros ni tampoc els paquets respectius per realitzar una correcta compilació (i no he corroborrado el que hi ha a la xarxa, per la que per aquestes dues no sé si funcionen).

Ara que ja tens tots els requeriments necessaris només necessites baixar-te el codi font de el programa que vols compilar, segons l'extensió ho descomprimeixes usant la terminal (tranqui, et deixaré les ordres) i quan tanques a la carpeta (sempre amb la terminal) fas el següent:

Si té possibilitat de configurar-se per triar els components i altres:

./configure

Després tecleges:

make

I finalment per instal·lar el programa al teu linux:

make install

Tot això sempre amb root (el seu a Fedora, suo seu en Ubuntu i els seus derivats (Mint, Elementary Us, etc)

Ordres per descomprimir mitjançant la terminal (l'arxiu es descomprimeix en una carpeta on es trobi l'arxiu):

Arxius .tar (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Empaquetar | tar cvf arxiu.tar / arxiu / * Desempaquetar | tar xvf arxiu.tar Veure el contingut | tar TVF arxiu.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar amb gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Empaquetar i comprimir | tar czvf arxiu.tar.gz / arxiu / Desempaquetar i descomprimir | tar xzvf arxiu.tar.gz Veure el contingut (sense extreure) | tar tzvf arxiu.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | gzip -q arxiu (L'arxiu el comprimeix i el renombra com "archivo.gz") Descomprimir | gzip -d archivo.gz (L'arxiu el descomprimeix i el deixa com a "arxiu" Nota: gzip només comprimeix arxius, no directoris
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | bzip2 arxiu | bunzip2 arxiu (L'arxiu el comprimeix i el renombra com "archivo.bz2") Descomprimir | bzip2 -d archivo.bz2 | bunzip2 archivo.bz2 (L'arxiu el descomprimeix i el deixa com a "arxiu") Nota: bzip2 només comprimeix arxius, no directoris
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar amb bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | tar -c arxius | bzip2> arxiu.tar.bz2 Descomprimir | bzip2 -dc arxiu.tar.bz2 | tar -XV | tar jvxf arxiu.tar.bz2 (versions recents de tar) Veure contingut | bzip2 -dc arxiu.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | zip archivo.zip / maig / arxius Descomprimir | unzip archivo.zip Veure contingut | unzip -v archivo.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Comprimir | rar -a archivo.rar / maig / arxius Descomprimir | rar -x archivo.rar Veure contingut | rar -v archivo.rar | rar -l archivo.rar

I això és tot. Salutacions des de Buenos Aires, Argentina. Bones festes i any nou! :).


Afegir com a font preferida a Google