GNU/Linux >> Znalost Linux >  >> Linux

Co je zdrojem mentality zkompilujte si sami v linuxu

Velmi jednoduše, po většinu historie *nixu neexistovala jiná možnost. Programy byly distribuovány jako zdrojové tarbally a jediný způsob, jak je použít, bylo zkompilovat ze zdroje. Nejde tedy ani tak o mentalitu, jako spíš o nutné zlo.

To znamená, že existují velmi dobré důvody, proč si věci zkompilovat sami, protože pak budou kompilovány speciálně pro váš hardware, můžete si vybrat, jaké možnosti povolit nebo ne, a proto můžete skončit s jemně vyladěným spustitelným souborem přesně tak, jak se vám to líbí. . To je však zjevně pouze něco, co má smysl pro zkušené uživatele a ne pro lidi, kteří chtějí pouze funkční stroj na čtení jejich e-mailů.

Nyní, ve světě Linuxu, se všechny hlavní distribuce od toho před mnoha lety vzdálily. V dnešní době velmi, velmi zřídka potřebujete něco zkompilovat sami, pokud nepoužíváte distribuci, která je speciálně navržena pro lidi, kteří to rádi dělají, jako je Gentoo. U velké většiny distribucí však váš průměrný uživatel nikdy nebude muset nic kompilovat, protože téměř vše, co kdy bude potřebovat, je přítomno a zkompilováno v repozitářích jejich distribuce.

Takže tato mentalita CIY, jak ji nazýváte, v podstatě zmizela. Ve světě UNIXu to možná stále žije, nemám s tím žádné zkušenosti, ale pokud v Linuxu používáte populární distribuci se slušným úložištěm, téměř nikdy nebudete muset nic kompilovat sami.


Tato mentalita má několik příčin, od koncových uživatelů, správců distribuce a dodavatelů/vývojářů/projektových skupin kódu, a každá z nich je dokonale platná.

Aspekt Open Source

Jsou někteří, kteří rádi vědí, že používají svobodný software, a ověřují to výběrem kompilace ze zdroje. Zde přichází na řadu věci jako Linux From Scratch project/howto/guide/book.

Aspekt optimalizace a možností

Chcete kompilovat věci se specifickými optimalizacemi pro vaši konkrétní architekturu CPU? Možná existuje možnost kompilace (nebo záplata pro její vytvoření), která povolí nebo zakáže konkrétní funkci, kterou potřebujete. Příkladem může být záplatování postfixu, aby bylo možné spravovat kvóty, nebo použití distribuce jako Gentoo, kde se můžete rozhodnout nepoužívat systemd, nebo se rozhodnete speciálně pro podporu ogg/theora/vorbis/whatever a NE mp3 kvůli problémům s licencí. nebo cokoliv jiného.

Aspekt architektury CPU

Používá vaše pracoviště špičkové stroje jiné než x86/amd64? Balíček, který potřebujete/chcete, nemusí být k dispozici předem zkompilovaný pro vaši architekturu CPU, tím méně pro jakoukoli distribuci, kterou provozujete. Je pravda, že většina míst provozujících tento druh hardwaru má také podporu od IBM atd. a neinstalují/kompilují věci chtě nechtě. Ale co když si jeden vyberete z přebytku, vykopete starý iMac s procesorem PPC atd.?

Aspekt distribuce

Distribuční „rodiny“ – tj. Debian s Ubuntu, Mint a spol. a RedHat s CentOS, Whitebox, Fedora a další – všechny používají různé formáty balíčků. A každá verze se dodává s různými verzemi knihoven atd. I pro jednoduchý skript shellu s jedním souborem nastavení správného souboru .deb Debianu vyžaduje čas a úsilí. Pokud jste napsali nějaký software, který by poškrábal nějaké svědění, a chtěli byste jej zpřístupnit zdarma a umístit jej na gitlab, svůj vlastní webový server, cokoliv, raději byste zveřejnili generický zdrojový soubor .tar.gz s pokyny k sestavení nebo byste raději zabalit verze pro 2 verze Debianu (stabilní a testovací, možná oldstable), více verzí Redhat a Fedory jako RPM, TGZ pro Slackware, profil ebuild pro Gentoo atd. atd. atd.


Jak říká @terdon, v dnešní době je potřeba kompilovat věci docela mizivá, zvláště pro domácí uživatele.

V minulosti jsem byl ve světě Unixu velmi závislý na kompilaci zdrojů, například když jsem spravoval systémy Solaris, AIX, Ultrix, Digital Ultrix a HP/UX, které někdy již nebyly spravovány dodavatelem, nebo které implementace běžné služby byly daleko za tím, co běžně používaly jiné Unixy, včetně Linuxu.

V současnosti stále existuje opravdová potřeba kompilovat věci, buď za účelem získání nějakého obskurnějšího nebo zastaralého softwaru, který není v úložištích, nebo použití novější verze balíčku, pro který nemáte kompatibilní binární soubory, nebo když chcete přidat další funkcionalitu nebo jen zřídka, pokud pro to můžete napsat opravu nebo modul.

Také jsem musel ručně kompilovat software, když jsem dělal reengineering systémů pro portování na Debian a/nebo nové verze Debianu, které měly framework, který již OS nepodporoval.

Například v minulosti jsem musel ručně kompilovat démony DHCP, abych měl podporu pro (do té doby nedávné) změny protokolu Windows nebo abych podporoval specifické záplaty pro poskytování ve světě telekomunikací.

Stále mám ve svém místním úložišti debs pro verze FreeRadius, které jsem zkompiloval z dev git repo, protože existovala řada stabilních verzí, které měly v Debianu (závažné) chyby, a obvykle nebyly odpovídající .debs pro Debian/Ubuntu adekvátní našim potřebám.

A je samozřejmé, že často za chvíli musíme také spouštět/nebo kompilovat věci, které jsme sami napsali.

Instalace závislostí v dnešní době není tak obtížná jako v minulosti a některý software má dokonce přizpůsobené soubory pravidel pro některé běžné distribuce Linuxu, které pojmenovávají závislosti, které se mají zkompilovat, a vykonávají těžkou práci při vytváření souboru balíčku se seznamem vestavěných závislostí. Instalace takového balíčku z místního úložiště se příliš neliší od instalace stejného balíčku z oficiálních repozitářů.


Linux
  1. Jaký je účel souboru .bashrc v Linuxu

  2. Jaký je aktuální zdrojový kód jádra Linuxu?

  3. Jaká je definice relace v linuxu?

  1. Co dělá Linux udržitelným OS

  2. Linux pohání internet, potvrzuje eurokomisař

  3. Jaký je význam curl -k -i -X ​​v Linuxu?

  1. Čím je linuxová komunita výjimečná?

  2. Linux vs. Unix:Jaký je rozdíl?

  3. Přihlaste se do příkazového řádku Linuxu