Gentoo: Waarom heb ik ervoor gekozen om mijn eigen programma's samen te stellen?

Welnu, gezien de geweldige ontvangst van mijn vorige post, kom ik je wat meer vertellen over mijn favoriete distributie, Gentoo Linux. Ik beloof je dat dit bericht leuke informatie zal bevatten die je zal helpen een beetje te begrijpen over de mythen die ontstaan ​​voor de angstaanjagende compilatie van software. Ik beloof ook dat deze informatie nuttig zal zijn voor de volgende Gentoo Linux installatie gids in ~ 20 stappen (ik heb ze nog niet goed geteld, maar ik denk dat ze nog minder zijn). Laten we zonder verder oponthoud beginnen:

Wat is compileren?

Het is het proces dat een programma (gewoonlijk een compiler genoemd) uitvoert om code geschreven in menselijke taal (C-, C ++ - bestanden, enz.) Om te zetten in code die door een machine kan worden begrepen (binaire code). Laten we eens kijken naar het volgende voorbeeld:

Eigen ontwerp, Christopher Díaz Riveros

Dit is ons kleine C-programma (als je later andere C-tutorials wilt, zal ik je ook graag laten zien wat ik in deze tijd heb geleerd). Laten we nu eens kijken hoe de uitvoer eruit ziet na het compileren.

Eigen ontwerp, Chrirstopher Díaz Riveros

Prachtig, is het niet? 🙂 Dit is wat onze machine begrijpt om elke keer dat het programma wordt uitgevoerd, dat kleine "Hallo" in onze terminal te kunnen schrijven.

Het bouwproces:

Omdat het nutteloos is om een ​​programma te hebben dat een simpele "Hallo" op het scherm afdrukt, aangezien .c- en .h-bestanden in overvloed aanwezig zijn in projecten (zoals in alle programmeertalen). Om het compilatieproces een beetje gemakkelijker te maken, zijn er nieuwe tools verschenen, de meest representatieve is de opdracht maken.

Make neem een ​​bestand Makefile als startpunt en compileert wat nodig is om het uiteindelijke uitvoerbare bestand te maken, in sommige gevallen vereist deze stap het uitvoeren van een bestand met de naam configure om een ​​paar variabelen te kunnen toewijzen die de compiler nodig heeft om een ​​nuttig bestand te compileren (vergeef de redundantie).

Daarom zullen we in veel tutorials de volgende stappen vinden:

Eigen. Christopher Diaz Riveros

De magie van ./configure:

Om je een van de meest verborgen en vermakelijke geheimen van de broncode te laten zien, gaan we naar de broncode van een programma dat we allemaal perfect kennen, sudo. Eerst de gebruikelijke stappen, maar ik stop bij . / Configure  om ze iets speciaals te laten zien.

Eigen. Christopher Diaz Riveros

Dit levert een lange lijst met opties op, waaronder ik u degene zal laten zien die het meest mijn aandacht trekt.

Eigen. Christopher Diaz Riveros

--with-insults... zoals de naam al aangeeft, compileert sudo met insultos 😀 is een leuke functie waarmee je de gebruiker elke keer dat hij een fout maakt in zijn wachtwoord, kunt beledigen. Waar is het voor? Nou, niet lang geleden 😛 maar maakt één punt duidelijk. Er zijn duizenden opties die in de meeste distributies niet standaard aanwezig zijn.

Zoals u bent, zijn er vele andere die actief kunnen zijn in binaire codedistributies en die u nooit zult gebruiken, of er zullen er een zijn die u nodig heeft, maar ze zullen niet worden geleverd met uw officiële gedistribueerde binaire bestand, wat betekent dat elke update handmatig zal zijn.

Krijg het plezier op Gentoo:

We hebben al gezien hoeveel opties we kunnen missen of slepen met voorgecompileerde programma's. Maar laten we ons nu een beetje concentreren op het vooraf gecompileerde probleem.

prestaties:

Heb je je ooit afgevraagd waarom nieuwe machines er alleen maar een beetje sneller uitzien dan niet zo moderne? Als de processor beter is, is er meer RAM, is alles beter, waarom gaat u niet sneller? Het antwoord is simpel ... compilatie.

Laten we een heel praktisch voorbeeld nemen.

Mijn programma's zijn samengesteld met de optie --march=broadwell... dit komt omdat mijn processor broadwell is (intel i7). De keerzijde hiervan? geen processor vóór Broadwell is in staat om dit binaire bestand te herkennen. Op dit punt zou je het heel duidelijk moeten zien, als ik compileer met een -Maart  specifiek, al het bovenstaande zal niet werken ... dus hoe ondersteunen binaire pakketten zoveel soorten hardware? Eenvoudig, ze compileren met de minst mogelijke optie 🙂 dit garandeert dat alle soorten hardware het kunnen lezen (tenminste voor compatibiliteit).

Het echte probleem ... als je programma's gebruikt die zijn gecompileerd voor i3 ... Alle kracht van je i7 (of zijn respectievelijke AMD-analogieën) is verspild !! Is dat niet triest? 🙁

flexibiliteit:

Aangezien Gentoo-ontwikkelaars erg slim zijn, is dit hele proces van tar, ./configure, make, etc ... vervangen door de kracht van Portage. Al deze merkwaardige configuraties hebben de naam USE-vlaggen gekregen, dus als je een specifieke configuratie wilt, hoef je de broncode niet in te voeren, configureer gewoon de variabele. Hier is een voorbeeld van hoe je het kunt doen met sudo in portage. Eerst zullen we zien met welke opties we in onze huidige configuratie hebben vragen.

Eigen. Christopher Diaz Riveros

Zoals we kunnen zien, zijn de rode opties geactiveerd, de blauwe niet, nou ... iedereen kan de legende 🙂 lezen

laten we zeggen dat ik een optie wil toevoegen ...

Eigen. Christopher Diaz Riveros

Zo eenvoudig als het toevoegen van een regel in een bestand met de naam sudo (de naam is referentieel) binnen /etc/portage/package.use/. Hiermee zal de volgende keer dat we sudo installeren, het ons vertellen dat het opnieuw gecompileerd zal worden met de optie geactiveerd.

Eigen. Christopher Diaz Riveros

Als we geven, JA, het enige wat je hoeft te doen is even wachten en voila 🙂 zo simpel als dit.

Laatste gedachten:

Welnu, we hebben al gezien hoe gemakkelijk het is om extra functionaliteit in Gentoo aan te pakken, waardoor we opties kunnen toevoegen, verwijderen of wijzigen binnen onze favoriete programma's. We hebben ook gezien hoe de prestaties van onze programma's sterk afhangen van de variabelen waarmee we ze compileren. Als je een heel nieuwe machine hebt, is Gentoo je beste optie. Als je een heel oude machine hebt, is Gentoo ook jouw optie (hoewel het even duurt om te compileren, zullen de uiteindelijke programma's veel lichter zijn).

Ik zal binnenkort mijn Gentoo-installatiegids schrijven, zowel voor SystemD-liefhebbers als OpenRC-avonturiers (ik gebruik systemd met GNOME). Een ander groot voordeel van Gentoo is trouwens de mogelijkheid van kiezen alles in je systeem, en als ik zeg dat alles is ALLES.

Als je mijn eerste bericht hebt gemist, is hier de link:

Gentoo Linux: The Story of a Journey

Met vriendelijke groet,


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Markt zei

    Super goed! Ik wacht op de Gentoo met Gnome installatiehandleiding. Misschien word ik aangemoedigd om naar Gentoo te migreren, zelfs als ik nog steeds een ietwat oude pc heb (intel core i5 3e gen.). Proost!

    1.    Chrisadr zei

      Al snel won Mart 😉 me om meer dingen te delen, dus ik schreef nog een bericht dat wacht op publicatie, maar heel snel 🙂 beloof ik

  2.   njord zei

    Ik denk dat ik hier veel berichten ga zien over mijn favoriete Linux-distributie o!!
    Ik ben in Gentoo sinds 2005, waar ik het gebruikte om een ​​mailserver op te zetten op de universiteit waar ik studeerde (en waar ik nu werk) en hoewel ik sporadische distrohopping-aanvallen heb meegemaakt, kom ik altijd terug met mijn lieve Gertroodis (eerst met Gnome2, dan Xfce en nu openbox) , en zoals je in je vorige bericht opmerkt, met toenemende vaardigheden en kennis om het te verfijnen 😉
    Ik wacht op je volgende bijdragen, groeten en bedankt voor het maken van mijn dag = D!

    1.    Chrisadr zei

      Nou, de volgende komt uit 🙂 het is alsof je een leuk gesprek hebt over mijn favoriete onderwerp, de volgende komt binnenkort, en de volgende en de volgende 😛 Groeten en hartelijk dank voor je reactie 🙂

  3.   Victor zei

    Ik spring al jaren tussen distro's en dacht erover na om de mijne samen te stellen…. die gids wordt de stap die ik miste…. terwijl ik mezelf ga vermaken met het handboek. Bedankt voor alles……

    1.    Chrisadr zei

      Welnu, het handboek is een paradijs van informatie, er is gewoon alles 🙂 Ik kan alleen mijn kleine zandkorrel bijdragen 🙂 maar heel binnenkort komt de volgende post uit, en binnenkort komt die uit (ik zie al dat het behoorlijk wordt verwacht) ~ 20 stappen installatiehandleiding. Proost,

      1.    Victor zei

        Wat een heer heb je me niet de tijd gegeven om vanaf het begin voorbij te gaan, die praat over de verschillende microprocessors en de gids is hier !!!! Dit einde van mij heeft het voor het eerst verknoeid! !!! Miljoenen dank !!!!

  4.   sojamisch zei

    Knoppix, Mandrake, Ubuntu en Debian ... En altijd denkend aan Gentoo ...

    Wachten op die 20 stappen!

    1.    Chrisadr zei

      Hahaha nou, het is net een droom, nietwaar? 🙂 Ik zeg dat het tijd is om het te laten gebeuren 😉 groeten

  5.   Koel als ijs zei

    Hallo ChrisADR, allereerst wil ik je vertellen dat ik niet goed heb geslapen sinds je eerste artikel over Gentoo, en het is gerelateerd aan dit nieuwe artikel, mijn dromen zijn gebaseerd op het samenstellen van een Gentoo op mijn oude Aspire One Netbook. In mijn droom vertelt het systeem me dat mijn netbook erg oud is, dus het herkent de hardware niet.
    Aan de andere kant, toen ik eenmaal een Gentoo zag en het trok mijn aandacht, noemden ze de kracht die het bood aan de computer (computer). Sinds die dag zei ik tegen mezelf dat ik het op een dag zou installeren, er zijn meer dan 10 jaar verstreken en ik heb het niet gedaan, misschien omdat ze me vertelden dat het erg moeilijk was om het te installeren, op dat moment was ik bijna anti-linux, dus ze verhoogden mijn klacht erover. De nieuwsgierigheid hield echter aan. Een keer probeerde ik zonder enig succes een BSD op mijn netbook te installeren, en kreeg te horen dat Gentoo een linux was die erg op BSD leek.
    Wat raad je mij aan om Gentoo te installeren op mijn oude Aspire One met oude Atom-compiler?

    en heel erg bedankt voor je artikelen, ik blijf wachten op meer

    1.    Chris ADR zei

      Nou, ik raad aan ... DOE HET! en tenslotte, als het uiteindelijk mislukt (wat ik erg betwijfel omdat de kernel gemaakt is om allerlei soorten hardware te ondersteunen), heb je een buitengewoon verrijkende ervaring in de Linux-wereld 🙂 je hebt je kernel gecompileerd, je hebt je bestandssysteem helemaal opnieuw gemount, je zult configuraties hebben gemaakt die maar weinigen in hun leven doen 🙂 het geeft je een nieuw perspectief op de wereld hahaha Als je mijn Unix & StackExchange-profiel niet kunt zien 🙂 mijn antwoorden bestrijken het brede scala aan linux dat er is omdat het kennen van Gentoo me in staat heeft gesteld om veel dingen over alle Linux te leren Ik laat hier de link van mijn profiel achter

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

      Wees niet bang, en uiteindelijk, als alles goed gaat (het zal zeker een beetje kosten), is het een prestatie voor je boek 😉 Groeten

  6.   Esteban zei

    Ik overweeg ook om naar Gentoo te migreren, maar ik heb enige twijfels. Allereerst, hoe up-to-date zijn de pakketten voor Arch? Aan de andere kant heeft mijn laptop een ingebouwde batterij en we weten allemaal wat continue oververhitting met batterijen doet. En aangezien ik veel tijd zou besteden aan het compileren ...

    1.    Chris ADR zei

      Welnu, de waarheid kan je niet zeker vertellen welke meer Rolling Release is 😛 wat ik je met zekerheid kan vertellen is dat Gentoo twee takken heeft: de "stabiele" en de "niet stabiele", hoewel de "niet stabiele" de meerderheid zou moeten hebben aantal pakketten aan de rand van de technologie, ik heb veel bekende ontwikkelaars die het in hun dagelijkse praktijk zonder complicaties gebruiken. Veel van deze zijn gemaakt om te werken met de git-repositories van het project, dus er is niets meer actueel 🙂 Ik gebruik persoonlijk de "stable" branch, maar dit komt vooral door mijn werk binnen de gemeenschap als veiligheidscoördinator en als lid van het testteam (Arch Tester). Als je voor die klus geen "stabiele" versie hoefde te hebben, zou je zeker aan de rand van de technologie staan ​​met "niet stabiel".
      Ik weet niet of het uw vraag beantwoordt, maar ik hoop in ieder geval dat het uw aandacht genoeg trekt om het te proberen 😛 Groeten

  7.   Gratis Quichot zei

    De waarheid is dat je ervoor zorgt dat ik dat wil 😉
    Ik ben erg geïnteresseerd in wat je hebt aangegeven over C-tutorials, evenals Python en ik zou het op prijs stellen als je verborgen juwelen voor onhandige grootouders hebt.
    Voor het opleggen van wat stokjes en met al mijn respect, aangezien ik denk dat de inhoud belangrijker is dan het continent, maar hoe kieskeurig ik ben met de taal, zal ik op een klein ding reageren.
    U zegt aan het begin:
    "Compilatie is het proces dat een compiler uitvoert om code te gebruiken die in menselijke taal is geschreven en deze om te zetten in machinaal leesbare code."
    Naar mijn mening is het niet correct om op te nemen wat er in de definitie is gedefinieerd, omdat je om de compilatie te definiëren de term compiler opneemt, dus zoiets zou correcter zijn geweest:
    Compilatie is het proces waarbij een programma uit een tekstbestand dat is geschreven in een taal (C, C ++) een uitvoerbaar bestand verkrijgt door de computer.

    1.    Chris ADR zei

      Uw bijdrage lijkt mij correct, ik pas het toe om het in zijn essentie te houden en die informatie toe te voegen 😉 dank u.

  8.   Dubbele D zei

    Ik gebruik ubuntu 16.04, denk je dat ik moet overschakelen naar gentoo? Wat zijn de voordelen van gentoo versus ubuntu?

    1.    Chris ADR zei

      Nou, ik weet het echt niet 😛 het hangt ervan af wat je gaat doen met je apparatuur, of de hardware die je hebt, of of je de tijd (en het verlangen) hebt om Gentoo te leren gebruiken. Ik zou je zeggen dat als je tijd hebt, en je hebt er zin in, je VOORUIT kunt gaan! en je zult zien dat je onderweg veel zult leren learn
      groeten

  9.   Fernan zei

    Hi
    Als de waarheid is dat gentoo veel te lezen heeft, doe je bijvoorbeeld een emerge -pv-pakket en krijg je gebruik in rood, blauw en groen, plus mogelijke sloten die een ander gebruik vereisen, ontmaskeer pakketten, slotveranderingen zijn heel anders dan wat weergegeven door de andere pakketbeheerders.
    Ik veronderstel dat gentoo elke dag moet worden bijgewerkt, als je het 1 maand laat staan, is het tijd om uit te zoeken hoe je het kunt oplossen.
    Groeten.

    1.    Chris ADR zei

      Ja, hehe, in het begin wordt het een beetje 🙂 maar na verloop van tijd raak je vertrouwd en kom je zelfs op het punt te denken waarom je in geen enkele andere pakketbeheerder zoveel flexibiliteit hebt 🙂 in termen van tijd ken ik mensen die dezelfde server al jaren laten draaien zonder bij te werken en blijft als de eerste dag helemaal stevig, en voor degenen die dat al jaren (niet maanden) zijn, is er een speciaal gedeelte van de wiki waarin de mogelijke oplossingen voor het probleem worden beschreven:

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

      En in termen van updates, heeft het zien van beveiligingsproblemen me misschien een nieuw perspectief gegeven, maar elke dag updaten is iets dat, ongeacht de distributie die moet worden gedaan, meestal niet meer dan twee opdrachten in alle distributies vereist , en in gentoo, naast het genereren van een goede gewoonte, vermijd lange wachttijden wanneer alle pakketten zijn verzameld.
      groeten

  10.   Fernan zei

    Hi
    In binaire distro's gebruik ik manjaro en voordat ik ubuntu gebruikte, is het gemakkelijk te updaten, ik controleer elke dag of er updates zijn, het is het eerste waar ik naar kijk, maar in manjaro heeft het updaten me geen relevante problemen opgeleverd, ik vertel pacman dat meestal voor alles en hooguit de handtekeningen moeten bijwerken of zelfs een bestand moeten verwijderen. Maar van wat ik in gentoo lees, is de terminologie soms moeilijk te begrijpen wat portage zegt.
    Groeten.

    1.    Chris ADR zei

      Zeg ja tegen alles is nooit goed Fernan 🙂 als je GNU / Linux hebt bereikt, zou je het moeten kennen en begrijpen. Nou, niets te zien, het is gewoon gewoonte, na verloop van tijd realiseer je je dat rood is wat je hebt, blauw wat je niet hebt, groen wat je gaat toevoegen en dat is het :). Ik hoef nooit iets te veranderen om bij te werken als ik het correct heb geconfigureerd om te starten, af en toe voeg ik USE-vlaggen toe of verwijder ik ze, maar het is gebruikelijk om Y of ja te geven nadat ik de lijst heb gelezen om te weten wat er wordt gedaan 🙂
      PS: pacman -Syy is hetzelfde als emerge -sync
      Pacman -Suy is hetzelfde als emerge -uD @world (de -av moet alleen uitgebreid zijn en het vraagt ​​je voordat je verder gaat, wat niet nodig is als je je team kent en weet wat je doet, maar ik stel het om problemen te voorkomen later 😉) Ik zie het niet zo moeilijk om het te onthouden 🙂

      groeten

  11.   Mauricio Lopez zei

    Uitstekend uw artikelen, zowel de vorige als deze. Ik twijfel en het is hoeveel snelheid je wint tussen Arch of Manjaro en Gentoo. Ongeacht de aanpassing en het leren op zich, ze maken het de moeite waard om te installeren.
    Een andere vraag die ik heb is hoe ik met de chauffeurs moet omgaan, dit is iets dat me problemen heeft bezorgd in Arch.

    1.    Chris ADR zei

      Hola Mauricio,
      Nou, ik ben nooit gestopt om te benchmarken tussen de twee, en in werkelijkheid is het een zeer dubbelzinnige vraag, afhankelijk van de software die je gebruikt en de apparatuur die je hebt, kan dit variëren van weinig of niets tot veel. Voor vandaag werken beide systemen in ieder geval best goed voor mij in wat ik nodig heb om ze te gebruiken. (Ik heb een Gentoo en een Arch die ik van tijd tot tijd gebruik) Normaal gebruik ik het bij virtualisatie en het bewerken van programma's (maar meestal per terminal, dus het gebruikt niet veel geheugen in een IDE. Chrome ondersteunt me op een heel rustige manier meer dan 40 tabbladen (Ik heb dat keer op keer geprobeerd, hoewel ik er over het algemeen maar maximaal 5 voor lange periodes open heb.
      Als je het op een dag durft te proberen, vertel me dan hoe het ging 🙂

      Wat betreft de stuurprogramma's, aangezien je de kernel naar believen bestuurt, zijn normaal gesproken de meeste "gewone" stuurprogramma's installeerbaar, of op zijn minst beheersbaar. In het geval van zeer gespecialiseerde hardware (vooral de weinige die compatibel is met Linux in het algemeen), veronderstel ik dat het hetzelfde werk is als in veel andere distributies, ik heb niet veel gespecialiseerde hardware, dus ik kan er niet veel over zeggen 🙂

      Groetjes en veel geluk

  12.   Jeanpier subero zei

    wat zijn uw sociale netwerken ChirsADR?