Posizione standard per contenere i file sorgente del software


16

Esiste un percorso standard in Linux per contenere i file di origine, ad esempio OpenSSL . Sto costruendo Nginx dal sorgente con la versione non predefinita di OpenSSL. Devo scaricare e decomprimere OpenSSL e l'ho fatto nella home directory. Ora, mi chiedo forse ci sia una posizione standard in Linux /opt?


1
Come ha scritto terdon / usr / src è il percorso standard, e qui puoi trovare le directory per il sorgente del kernel (/ usr / src / linux collegato a / usr / src / linux-version) e per esempio X11. Il codice sorgente per i pacchetti installati localmente (/ usr / local) si adatta meglio a / usr / local / src. Se vuoi creare pacchetti "manualmente" da solo, creare una directory src nel tuo homedir è probabilmente una buona idea ... Ricorda che non dovresti scaricare, decomprimere o compilare come root - installa solo come! Se si creano pacchetti deb / rpm, in genere vengono utilizzate directory di compilazione temporanee (ad es. In / var / tmp). TBC
Baard Kopperud,

Se costruisci e installi un pacchetto - o crei un pacchetto (rpm / dem) - tu stesso, di solito non hai più bisogno del codice sorgente dopo che è stato installato. Il motivo per cui potresti avere il codice sorgente per alcuni pacchetti - come il kernel o X11 - sotto / usr / src (o / usr / local / src se è stato creato localmente), è principalmente perché potresti averne bisogno se ' ricostruendo (o scrivendo) alcuni pacchetti software (ad es. alcuni file di intestazione oscuri dal kernel, corrispondenti alla propria configurazione di sistema). (Certo, ne avrai bisogno se vuoi compilare anche il tuo kernel ...) Ma questo vale per alcuni pacchetti.
Baard Kopperud,

Risposte:


20

Ogni volta che ti chiedi qualcosa del genere, dai un'occhiata al Filesystem Hierarchy Standard (FHS). Qui troverai la seguente voce:

usr / src: codice sorgente (opzionale)

Scopo

Il codice sorgente può essere inserito in questa sottodirectory, solo a scopo di riferimento

Quindi puoi mettere i tuoi file sorgente in sottodirectory di /usr/src. Detto questo, questa è una directory opzionale in modo da poterli tenere davvero dove vuoi. Il codice sorgente non è rilevante dopo averlo compilato in un eseguibile, quindi il sistema non richiederà mai che la fonte di qualcosa sia accessibile in una posizione specifica.

In conclusione: /usr/srcè un luogo abbastanza standard ma sentiti libero di scegliere il tuo se preferisci.


6
Basta essere consapevoli del fatto che non si vuole davvero fare casini con /usr/srcun sistema non Linux. I BSD mantengono lì le loro fonti di sistema di base per impostazione predefinita e non si desidera mescolarle con software di terze parti. Costruisci il tuo $HOMEposto da qualche parte ...
Kusalananda

1
Lo stesso vale per alcune sotto-cartelle di /usr/srcsui derivati Debian, se si dispone di alcuni pacchetti installati ( gcc-6-source, binutils-source, DKMS pacchetti, il kernel headers, ecc). Su Debian, c'è una bella funzionalità in cui puoi aggiungerti al srcgruppo che possiede /usr/srce poi scrivere lì come te stesso (senza bisogno sudoo altro).
Stephen Kitt,

E su Fedora, non dovresti toccare /usr/src/debuge /usr/src/kernels(AFAICS).
Stephen Kitt,

"Il codice sorgente può essere inserito". "Place Place" è un refuso o mi sto perdendo qualcosa?
Faheem Mitha,

3
Andrò oltre e dirò che non dovresti davvero toccare /usrnessun sistema. Dovresti inserire le cose /usr/local. I BSD si preoccupano del tuo utilizzo /usr/local/src?
Muzer,

13

/usr/local/srcè un luogo sicuro in cui conservare il codice sorgente e crearlo. L'FHS dice :

Directory   Description  
src         Local source code

e anche

La gerarchia / usr / local è utilizzata dall'amministratore di sistema durante l'installazione del software in locale. Deve essere sicuro di non essere sovrascritto quando il software di sistema viene aggiornato.

Non è chiaro cosa significhi "codice sorgente locale", ma è chiaro che il sistema non tenterà di inserire nulla /usr/local/src, diversamente /usr/src, quindi sembra che ci sia un piccolo svantaggio nel mettere il codice lì.

In effetti, ho il mio su un filesystem separato:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

Nota: almeno su Debian, l'utente deve essere aggiunto al staffgruppo per poter scrivere /usr/local.


+1 per sottolineare /usr/local/srcmentre le altre risposte discutono solo/usr/src
MattSturgeon,

Per quanto riguarda ciò che significa "codice sorgente locale", in generale significa controllato dal sysadmin locale piuttosto che da una distribuzione . Lo stesso di tutto il resto sotto /usr/local(in teoria). Quindi essenzialmente significa esattamente quello che hai descritto.
MattSturgeon,

9

Se per "standard" intendi convenzionale, allora il posto per decomprimere e costruire il codice sorgente è la tua home directory. Si prevede che tali file siano temporanei, eliminati al termine o, se lo si desidera, organizzati come desiderato. La tua home directory è la tua area per giocare con tutto questo genere di cose.

Se si desidera conservarli in seguito, per riferimento , si consiglia lo " Standard di gerarchia dei filesystem " /usr/src. Tuttavia, questa è una guida non una legge; e, se dovessi prendere questa abitudine e avventurarti in un sistema non Linux, potresti rischiare di seguirlo. Ad esempio, su un sistema BSD, le fonti del sistema di base sono mantenute lì e non vuoi davvero fare confusione con quelle. Anche su Linux potresti correre il rischio di socializzare con qualsiasi sorgente memorizzata dai gestori dei pacchetti, il che non è auspicabile.

Consiglierei di evitare nel /usr/srccomplesso. Non vi è alcun vantaggio evidente nel mantenere nulla lì e il rischio potenziale se si confonde il significato previsto.


5

Puoi usare /usr/srcquesto posto in modo ragionevole e le distribuzioni basate su rpm lo usano per archiviare il contenuto dei pacchetti srpm. Ma qualsiasi altro posto come /opt, /usr/local, ~/srcè buona


"Le distribuzioni basate su rpm lo usano per memorizzare lì il contenuto dei pacchetti srpm." Questo è esattamente il motivo per cui non dovresti archiviare lì le tue fonti non distro e piuttosto usare / usr / local. - "Deve essere un buon posto per conservare le cose, con tutti questi carrelli elevatori che sembrano avere la stessa opinione ...."
rackandboneman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.