Gentoo: Per què vaig optar per compilar els meus propis programes?

Bé, donada la gran acollida de la meva anterior post, vinc a explicar una mica més sobre la meva distribució preferida, Gentoo Linux. Prometo que aquest post tindrà informació entretinguda que els ajudarà a entendre una mica sobre els mites que sorgeixen davant de la temible compilació de programari. També prometo que aquesta informació serà útil per a la propera guia d'instal·lació de Gentoo Linux en ~ 20 passos (encara no els he explicat bé, però crec que són fins i tot menys). Sense més que augmentar, comencem:

Què és compilar?

És el procés que realitza un programa (comunament anomenat compilador) per convertir codi escrit en llenguatge humà (arxius C, C ++, etc.) en codi comprensible per a una màquina (codi binari). Mirem el següent exemple:

Disseny propi, Christopher Díaz Riveros

Aquest és el nostre petit programa en C (si després volen altres tutorials sobre C també estaré encantat de mostrar el poc que he après en aquest temps). Ara vegem com es veu el resultat després de compilar.

Diesño propi, Chrirstopher Díaz Riveros

Bell, ¿no és cert? 🙂 Això és el que la nostra màquina entén per poder escriure aquest petit «Hola» a la nostra terminal cada vegada que s'executa el programa.

El procés de compilació:

Com que no serveix de res tenir un programa que imprimeixi un simple «Hola» a la pantalla, ja que els arxius .ci .h abunden en projectes (com en tots els llenguatges de programació). Per poder fer el procés de compilació una mica més senzill aparèixer noves eines, la més representativa de totes és la comanda fer.

Make pren un arxiu Makefile com a punt de partida i compila el necessari per poder crear l'executable final, en alguns casos aquest pas requereix executar un arxiu anomenat configure per poder assignar unes quantes variables necessàries per al compilador per compilar (valgui la redundància) un arxiu útil.

És per això que en molts tutorials trobarem els següents passos:

Disseny propi. Christopher Díaz Riveros

La màgia de ./configure:

Per mostrals un dels secrets més ocults i entretinguts de el codi font, anirem a el codi font d'un programa que tots coneixem a la perfecció, suo. Primer els passos de sempre, però m'aturaré a . / Configure  per mostrar-los alguna cosa especial.

Disseny propi. Christopher Díaz Riveros

Això ens retornarà una llarga llista d'opcions, entre les quals els mostraré la que més em crida l'atenció.

Disseny propi. Christopher Díaz Riveros

--with-insults... com el seu nom indica, compila suo amb insults 😀 és una divertida funcionalitat que permet llançar un insult a l'usuari cada vegada que s'equivoca en la seva clau. Per a què serveix? doncs no fa gaire 😛 però deixa clar un punt. Hi ha milers d'opcions que no vénen per defento en la majoria de distribucions.

Així com estàs, hi ha moltes altres que potser estaran actives en distribucions de codi binari i que mai utilitzaràs, o hi haurà algunes que necessitis, però no vindran amb el teu binari distribuït oficial, el que implica que cada actualització serà manual.

Comença la diversió en Gentoo:

Ja hem vist quantes opcions podem estar perdent o arrossegant amb programari precompilat. Però ara ens centrarem una mica en el problema del que pre-compilat.

Rendiment:

¿Algú s'ha preguntat per què les màquines noves només es veuen una mica més ràpides comparades amb altres no tan modernes? Si el processador és millor, hi ha més RAM, tot és millor, per què no va més ràpid? La resposta és senzilla ... compilació.

Posem un exemple molt pràctic.

Els meus programes són compilats amb l'opció --march=broadwell... això és degut a que el meu processador és Broadwell (i7 d'intel). ¿El desavantatge d'això? cap processador anterior a Broadwell és capaç de reconèixer aquest binari. En aquest punt ja hauries veure-ho molt clar, si jo compilar amb un -march  específic, tot l'anterior no funcionarà ... llavors com fan els paquets binaris per suportar tants tipus de maquinari? Fàcil, compilen amb la menor opció possible 🙂 això garanteix que tota mena de maquinari podrà llegir-lo (al menys per compatibilitat).

El veritable problema ... si el teu fas servir programes que estan compilats per i3 ... Tot el poder de la teva i7 (o les seves respectives analogies AMD) és desaprofitat !! No és això trist? 🙁

flexibilitat:

Atès que els desenvolupadors de Gentoo són molt intel·ligents, tot aquest procés de tar, ./configure, make, etc ... ha estat reemplaçat amb el poder de porteig. Totes aquestes configuracions curioses han passat a denominar-se USE flags, de manera que si tu vols una configuració específica, no necessites entrar a el codi font, només configurar la variable. Aquí un exemple de com fer-ho amb sudo a portage. Primer veurem quines opcions tenim a la nostra configuració actual amb equery.

Disseny propi. Christopher Díaz Riveros

Com podem veure, les opcions vermelles estan activades, les blaves no, bé ... tots poden llegir la llegenda 🙂

diguem que jo vull afegir una opció ...

Disseny propi. Christopher Díaz Riveros

Tan senzill com afegir una línia en un arxiu anomenat suo (El nom és referencial) dins de /etc/portage/package.use/. Amb això la següent vegada que instal·lem suo ens dirà que es va a recompilar amb l'opció activada.

Disseny propi. Christopher Díaz Riveros

Si donem, , Tot el que cal fer és esperar una mica i llest 🙂 tan senzill com això.

Consideracions finals:

Bé, ja hem vist el senzill que és manejar funcionalitats extra en Gentoo, la qual cosa ens permet afegir, treure o modificar opcions dins dels nostres programes favorits. També hem vist com és que el performance dels nostres programes depèn molt de les variables amb les que ho compilem. Si tens una màquina molt nova, Gentoo és la millor opció. Si tens una màquina molt vella, Gentoo també és la teva opció (encara que demori una mica en compilar, els programes finals seran molt més lleugers).

D'aquí a poc estaré escrivint el meu guia d'instal·lació de Gentoo, tant per als amants de systemd com per als aventurers per OpenRC (jo faig servir systemd amb GNOME). Per cert, una altra de les grans avantatges de Gentoo és la possibilitat de triar tot dins del teu sistema, i quan dic tot és TOTS.

Si et vas perdre el meu primer post, aquí l'enllaç:

Gentoo Linux: La història d'un viatge

Salutacions,


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Mercat va dir

    Genial! Estaré esperant la guia d'instal·lació de Gentoo amb Gnome. Potser m'animi a migrar a Gentoo tot i que encara tingui un PC una mica antiga (intel core i5 3a gen.). Salutacions!

    1.    chrisadr va dir

      Ja aviat Mart 😉 em va guanyar la inquietud per compartir més coses, així que vaig escriure un altre post que espera per ser publicat, però d'aquí a molt poc 🙂 ho prometo

  2.   Njord va dir

    Crec que començaré a veure per aquí molts posts sobre el meu DISTRIBUCIÓ linux favorita o!!
    Porto en Gentoo des de 2005 on ho usi per muntar un Mail Server a la universitat on estudiava (i on ara treball) i encara que he patit atacs esporàdics de distrohopping sempre acabo tornant amb la meva estimada Gertroodis (primer amb GNOME2, després Xfce i ara OPENBOX) , i com comentes en el teu post anterior, cada vegada amb majors habilitats i coneixements per posar-la a punt 😉
    Estaré tot esperant els teus propers aportacions, salutacions i gràcies per alegrar-me el dia = D!

    1.    chrisadr va dir

      Doncs ja surt el següent 🙂 és com tenir una entretinguda conversa sobre el meu tema preferit, dins de molt poc vindrà el següent, i el següent, i el següent 😛 Salutacions i moltes gràcies pel teu comentari 🙂

  3.   Víctor va dir

    Porto anys saltant entre distros i portava temps pensant en compilar el meu .... aquesta guia va ser el pas que em faltava .... mentre em vaig a entretenir amb el handbook. Gràcies per tot ......

    1.    chrisadr va dir

      Bé, el handbook és tot un paradís d'informació, hi ha simplement de tot 🙂 jo només puc aportar el meu petit gra de sorra 🙂 però molt aviat, ja surt el següent post, i d'aquí a poc sortirà la (ja estic veient que bastant esperada) guia d'instal·lació de ~ 20 passos. Salutacions,

      1.    Víctor va dir

        Que cavaller no m'has donat temps de passar de el principi que parla dels diferents microprocessadors i ja està la guia !!!!! Aquest cap de em lio ja per la PRIMERA! !!! Milions de gràcies !!!!

  4.   soymicmic va dir

    Knoppix, Mandrake, Ubuntu i Debian ... I sempre pensant en Gentoo ...

    Esperant aquests 20 passos!

    1.    chrisadr va dir

      Jajaja bo, és com un somni no? 🙂 jo dic que és hora de fer-ho realitat 😉 salutacions

  5.   Fresco com el gel va dir

    Hola ChrisADR, primer vull dir-te que no he dormit bé des del teu primer article sobre Gentoo, i està relacionat amb aquest nou article, els meus somnis es basen en caminar compilant un Gentoo a la meva antiga Aspire One Netbook. En el meu somni em diu el sistema que està molt vella meu netbook pel que no reconeix el maquinari.
    D'altra banda, un cop vaig veure un Gentoo i em va cridar molt l'atenció, van esmentar la potència que li oferia a l'ordinador (ordinador). Des d'aquest dia em vaig dir que un dia el instal·laria, han passat més de 10 anys i no ho he fet, potser perquè em van dir que era molt complicat instal·lar-lo, en aquest llavors jo era gairebé anti-linux així que van acréixer el meu greuge cap a ell. No obstant això la curiositat va continuar. Una ocasió vaig tractar d'instal·lar un BSD en el meu netbook sense cap èxit, i em van dir que Gentoo era un linux molt semblant a BSD.
    Què em recomanes per instal·lar Gentoo en la meva antiga Aspire One amb compilador Atom vellet?

    i moltes gràcies pels teus articles segueixo esperant més

    1.    ChrisADR va dir

      Doncs jo et recomano ... FES-HO! i finalment, si a la fi falla (cosa que dubto molt perquè el nucli està fet per suportar tot tipus de maquinari) hauràs viscut una experiència summament enriquidora en el món Linux 🙂 hauràs compilat el teu nucli, hauràs muntat des de zero el teu sistema de fitxers, hauràs fet configuracions que pocs fan en la seva vida 🙂 et donarà una nova perspectiva de l'món jajaja Sinó pots veure el meu perfil d'Unix & StackExchange 🙂 les meves respostes abasten la gran gamma de linux que hi ha perquè saber Gentoo m'ha permès aprendre muchísismas coses sobre tots els Linux 😉 et deixo el link del meu perfil per aquí

      https://unix.stackexchange.com/users/246185/christopher-d%C3%ADaz-riveros?tab=profile

      No tinguis por, i a la fi, si tot surt bé (segur que costarà una mica) serà un èxit per al teu llibre 😉 Salutacions

  6.   Esteban va dir

    Jo també estic pensant en migrar a Gentoo, però tinc alguns dubtes. En primer lloc, Com de actualitzades hi ha els paquets pel que fa a Arch? D'altra banda, el meu portàtil té la bateria integrada, i tots sabem el que la calor excessiva de forma continuada fa a les bateries. I com passaria molt temps compilant ...

    1.    ChrisADR va dir

      Doncs la veritat no podria dir-te a cienta certa quin és més Rolling Release 😛 el que et puc dir amb certesa és que Gentoo té dues branques: la «estable» i la «no estable», tot i que la «no estable» ha de tenir la majoria quantitat de paquets a la vora de la tecnologia, tinc molts coneguts developers que la fan servir en el seu dia a dia sense complicacions. Molts d'aquests estan fets per funcionar amb els repositoris git dels projectes, de manera que no hi ha res més actual 🙂 Jo personalment ús la branca «estable», però això és especialment per la meva feina dins de la comunitat com a coordinador de seguretat i com a membre de l'equip de proves (Arch Tester). Si no hagués de tenir una versió «estable» per a aquest treball, segurament estaria a la vora de la tecnologia amb el «no estable».
      No se si respon a la teva pregunta, però al menys espero que et cridi l'atenció prou com per provar-😛 Salutacions

  7.   Quixot Lliure va dir

    La veritat és que m'estàs ficant ganes 😉
    M'interessa molt el que has indicat de tutorials de C, així com de Python i et agrairia si tens alguna joia amagada per aquí per avis maldestres.
    Per posar-te alguna pega i amb tot els meus respectes ja que crec és més important el contingut que el continent, però com sóc una mica picajoso amb l'idioma et comento una coseta.
    Dius a el principi:
    «Compilació és el procés que realitza un compilador per utilitzar codi escrit en llenguatge humà i convertir-lo en codi comprensible per a una màquina.»
    En la meva opinió no és correcte incloure el definit en la definició, ja que per definir la compilació inclous el terme compilador, per la qual cosa hagués estat una mica més correcte una cosa així:
    Compilació és el procés pel qual un programa obté des d'un fitxer text escrit en un llenguatge (C, C ++) un fitxer executable per l'ordinador.

    1.    ChrisADR va dir

      Em sembla correcte el teu aporti, ho estic acomodant per intentar mantenir-lo en la seva essència i afegir aquesta dada 😉 gràcies.

  8.   Doble_d va dir

    Estic utilitzant ubuntu 16.04, creus que hauria de canviar-me a gentoo ?, quins serien els avantatges de gentoo davant ubuntu?

    1.    ChrisADR va dir

      Doncs la veritat no ho sé 😛 depèn del que vagis a fer amb el teu equip, o el maquinari de què disposa, o si tens temps (i ganes) d'aprendre a fer servir Gentoo. Jo et diria que si tens temps, i ganes, po ENDAVANT! i veuràs que aprendràs molt en el camí 😉
      Salutacions

  9.   fernen va dir

    Hola:
    Si la veritat que gentoo té molt a llegir, per exemple fas un emergeix -PV paquet i et surten facis servir en vermell, en blau i en verd, mes possibles bloquejos que requereixen canvis de utilitzis desemmascarar paquets, canvis de slot anem molt diferent al que que mostren els altres gestors de paquets.
    Suposo que gentoo caldrà actualitzar-lo cada dia, si ho deixes 1 mes tocarà discórrer com arreglar-ho.
    Salutacions.

    1.    ChrisADR va dir

      Si jeje a el principi mareja una mica 🙂 però amb el temps et vas familiaritzant i fins i tot arribes a al punt de pensar per què en cap altre gestor de paquets tens tanta flexibilitat 🙂 pel que fa a el temps, conec gent que té el mateix servidor corrent des de fa anys sense actualitzar i es manté totalment ferma com el primer dia, i per a aquells que porten anys (no mesos) hi ha un sector especial de l'wiki descrivint les possibles solucions a el problema:

      https://wiki.gentoo.org/wiki/Upgrading_Gentoo/es#Actualizar_sistemas_antiguos

      I pel que fa a les actualitzacions, potser veure temes de seguretat de manera directa m'ha fet prendre una nova perspectiva, però actualitzar tots els dies és una cosa que sense importar la distribució s'hauria de fer, normalment no pren més de dos comandaments en totes les distribucions , i en gentoo més de generar un bon hàbit, evita les llargues esperes quan s'acumulen tots els paquets.
      Salutacions

  10.   fernen va dir

    Hola:
    En les distros binàries, jo faig servir manjaro i abans vaig fer servir ubuntu, és senzill actualitzar, jo cada dia miro si hi ha actualitzacions, és el primer que miro, però en manjaro no m'ha donat problemes rellevants el actualitzar, normalment dir-li a pacman que si a tot i com a molt haver d'actualitzar les signatures o igual esborrar un arxiu. Però pel que llegeixo en gentoo la terminologia de vegades és complicada d'entendre que és el que diu portage.
    Salutacions.

    1.    ChrisADR va dir

      Dir si a tot mai és bo fernan 🙂 si has arribat a GNU / Linux has de saber-ho i comprendre-ho. Doncs res a veure, és simplement costum, amb el temps et vas adonant que vermell és el que tens, blau el que no, verd el que es va a afegir i llest :). Jo mai he de canviar res per actualitzar si he configurat bé per començar, alguna que altra vegada afegeixo o trec USE flags, però el comú és donar I de yes després d'haver llegit la llista per saber el que s'està fent 🙂
      PS: Pacman -Syy és el mateix que emergeix -sync
      Pacman -Suy és el mateix que emergeix -uD @world (el -Av és només perquè sigui verbós i et pregunti abans de procedir, la qual cosa és inneecesario si coneixes el teu equip i saps el que fas, però jo ho poso per evitar problemes després 😉) jo no ho veig tan complicat de recordar 🙂

      Salutacions

  11.   Maurici López va dir

    Excel·lent teus articles, tant l'anterior com aquest. Em queda un dubte i és què tanta velocitat ganes entre Arch o Manjaro i Gentoo. Independentment que la personalització i aprenentatge de per si, fan que valgui la pena instal·lar-lo.
    Un altre dubte que tinc és com tractar amb els controladors (drivers), això és una cosa que m'ha donat problemes en Arch.

    1.    ChrisADR va dir

      Hola Maurici,
      Doncs mai m'he detingut realitzar un benchmarking entre tots dos, i en realitat és una pregunta molt ambigua, depenent del programari que utilitzis, i l'equip que tinguis, això pot variar entre poc o gens, a força. A el menys ara per ara els dos sistemes em funcionen força bé en el que necessito usar-los. (Tinc un Gentoo principal i un Arch que ús de tant en tant) Normalment el faig servir en virtualització i edició de programes (però normalment per terminal així que no utilitza molta memòria en un IDE. Chrome em suporta de manera totalment tranquil·la més de 40 pestanyes (això ho he provat una que una altra vegada, encara que en general només tinc màxim 5 obertes per períodes perllongats.
      Si un dia t'animes a provar em comentes com et va anar 🙂

      Pel que fa als drivers, ja que com el teu controles el nucli a voluntat, normalment la majoria de drivers «comuns» són instal·lables, o al menys manejables. En cas de maquinari molt especialitzat (sobretot el poc compatible com Linux en general), doncs suposo que és la mateixa feina que en moltes altres distros, jo no tinc gaire maquinari especialitzat així que no puc comentar molt a l'respecte 🙂

      Salutacions i sort

  12.   Jeanpier Subero va dir

    quines són les seves xarxes socials ChirsADR ??