GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la fonte della mentalità di compilarlo da soli in Linux

Molto semplicemente, per gran parte della storia di *nix, non c'era altra scelta. I programmi venivano distribuiti come sorgenti tarball e l'unico modo che avevi per usarli era compilare dai sorgenti. Quindi non è tanto una mentalità quanto un male necessario.

Detto questo, ci sono ottimi motivi per compilare tu stesso le cose poiché verranno poi compilate appositamente per il tuo hardware, puoi scegliere quali opzioni abilitare o meno e puoi quindi finire con un eseguibile ottimizzato, proprio come piace a te . Questo, tuttavia, è ovviamente qualcosa che ha senso solo per gli utenti esperti e non per le persone che desiderano solo una macchina funzionante su cui leggere le proprie e-mail.

Ora, nel mondo Linux, le principali distribuzioni si sono tutte allontanate da questo molti anni fa. Al giorno d'oggi è molto, molto raro che tu abbia bisogno di compilare qualcosa da solo, a meno che tu non stia utilizzando una distribuzione specificatamente progettata per persone a cui piace farlo come Gentoo. Per la stragrande maggioranza delle distribuzioni, tuttavia, il tuo utente medio non avrà mai bisogno di compilare nulla poiché praticamente tutto ciò di cui avrà mai bisogno è presente e compilato nei repository della loro distribuzione.

Quindi questa mentalità CIY come la chiami tu è sostanzialmente scomparsa. Potrebbe essere ancora vivo e vegeto nel mondo UNIX, non ho esperienza lì, ma in Linux, se stai usando una distribuzione popolare con un repository decente, non avrai quasi mai bisogno di compilare nulla da solo.


Ci sono alcune cause per quella mentalità, da utenti finali, manutentori della distribuzione e fornitori di codice/sviluppatori/gruppi di progetto, e ognuna di esse è perfettamente valida.

L'aspetto Open Source

Ci sono alcuni a cui piace sapere che stanno usando software libero, e lo confermano scegliendo di compilare dal sorgente. È qui che entrano in gioco cose come il progetto/howto/guida/libro di Linux From Scratch.

L'aspetto dell'ottimizzazione e delle opzioni

Vuoi compilare cose con ottimizzazioni specifiche per la tua particolare architettura della CPU? Forse esiste un'opzione in fase di compilazione (o una patch per crearne una) per abilitare o disabilitare una particolare funzionalità di cui hai bisogno. Esempi di ciò potrebbero essere l'applicazione di patch a postfix per avere la possibilità di gestire le quote o l'utilizzo di una distribuzione come Gentoo in cui è possibile scegliere di non utilizzare systemd o scegliere specificamente di supportare ogg/theora/vorbis/qualunque cosa e NON mp3 a causa di problemi di licenza o altro.

L'aspetto dell'architettura della CPU

Il tuo posto di lavoro utilizza macchine di fascia alta non x86/amd64? Il pacchetto di cui hai bisogno/che desideri potrebbe non essere disponibile precompilato per la tua architettura della CPU, tanto meno qualunque sia la distribuzione che stai utilizzando. Certo, la maggior parte dei luoghi che eseguono questo tipo di hardware sono anche supportati da IBM, ecc. E non installano/compilano cose volenti o nolenti. Ma cosa succede se ne prendi uno da una vendita in eccedenza, tiri fuori un vecchio iMac con processore PPC, ecc.?

L'aspetto della distribuzione

Le "famiglie" di distribuzione - cioè, Debian con Ubuntu, Mint, et al e RedHat con CentOS, Whitebox, Fedora, et al - usano tutti diversi formati di pacchetto. E ogni versione viene fornita con diverse versioni di libreria, ecc. Anche per un semplice script di shell a file singolo, l'impostazione di un file .deb Debian appropriato richiede tempo e impegno. Se hai scritto un software per grattarti un po' il prurito e volevi renderlo gratuito e pubblicarlo su gitlab, il tuo server web, qualunque cosa, preferiresti semplicemente pubblicare un file sorgente .tar.gz generico con le istruzioni sulla costruzione o preferiresti pacchettizzare le versioni per 2 versioni di Debian (stable e testing, forse oldstable), più versioni di Redhat e Fedora come RPM, un TGZ per Slackware, un profilo ebuild per Gentoo, ecc. ecc. ecc.


Come dice @terdon, al giorno d'oggi la necessità di compilare cose è praticamente ridotta, specialmente per gli utenti domestici.

In passato, nel mondo Unix, ero fortemente dipendente dalla compilazione dei sorgenti, ad esempio, poiché gestivo sistemi Solaris, AIX, Ultrix, Digital Ultrix e HP/UX che a volte non erano più mantenuti dal fornitore o le cui implementazioni dei servizi comuni erano molto indietro rispetto a quelli comunemente usati da altri Unix, incluso Linux.

Ci sono ancora reali necessità di compilare le cose nel presente, o per ottenere qualche pezzo di software più oscuro o obsoleto che non è nei repository, o usare una versione più recente di un pacchetto per il quale non si hanno binari compatibili, o quando vuoi aggiungere funzionalità extra o raramente, se sei in grado di scrivere una patch o un modulo per questo.

Ho anche dovuto compilare manualmente il software durante la reingegnerizzazione dei sistemi per il porting su Debian e/o su nuove versioni di Debian che avevano un framework non più supportato dal sistema operativo.

Ad esempio, in passato dovevo compilare a mano demoni DHCP per avere il supporto alle (ormai recenti) modifiche di Windows al protocollo, oppure per supportare patch specifiche per il provisioning nel mondo Telecom.

Conservo ancora nel mio repository locale i deb per le versioni di FreeRadius compilate da me dal repository dev git, poiché c'erano una serie di versioni stabili che avevano bug (gravi) in Debian, e di solito i corrispondenti .deb per Debian/Ubuntu non sono stati adeguato alle nostre esigenze.

E va da sé che spesso ogni tanto dobbiamo anche eseguire/compilare cose scritte da noi stessi.

Installare le dipendenze al giorno d'oggi non è così difficile come in passato e alcuni software hanno persino file di regole personalizzati per alcune distribuzioni Linux comuni che nominano le dipendenze da compilare e fanno il lavoro pesante di creare il file del pacchetto con l'elenco delle dipendenze integrato. L'installazione di un tale pacchetto da un repository locale non è molto diversa dall'installazione dello stesso pacchetto dai repository ufficiali.


Linux
  1. Cosa rende Linux il sistema operativo sostenibile

  2. Qual è lo scopo del file .bashrc in Linux

  3. Qual è l'attuale sorgente del kernel Linux?

  4. Qual è la definizione di una sessione in Linux?

  5. Qual è l'ordine predefinito dell'ordinamento di Linux?

Cos'è il comando Linux Watch + Esempi

Che cos'è la shell in Linux?

Qual è la differenza tra Linux e Unix?

I 10 migliori libri Linux da leggere nel 2019

Cos'è BusyBox in Linux? Come usarlo?

Qual è il comando kill in Linux?