Emplacement standard pour la conservation des fichiers source du logiciel

16

Existe-t-il un emplacement standard sous Linux pour contenir les fichiers source, par exemple OpenSSL . Je construis Nginx à partir des sources avec une version non par défaut d'OpenSSL. J'ai besoin de télécharger et de décompresser OpenSSL et je l'ai fait dans le répertoire personnel. Maintenant, je me demande s'il y a peut /opt- être un emplacement standard sous Linux ?

user3448600
la source
1
Comme l'a écrit terdon / usr / src est l'emplacement standard, et vous pouvez trouver ici des répertoires pour la source du noyau (/ usr / src / linux lié à / usr / src / linux-version) et par exemple X11. Le code source des packages installés localement (/ usr / local) s'intègre mieux dans / usr / local / src. Si vous voulez construire vous-même des paquets "manuellement", la création d'un répertoire src dans votre homedir est probablement une bonne idée ... N'oubliez pas que vous ne devez pas télécharger, décompresser ou construire en tant que root - installez seulement en tant que! Si vous construisez des paquets deb / rpm, des répertoires de construction temporaires (par exemple sous / var / tmp) sont généralement utilisés à la place. TBC
Baard Kopperud
Si vous construisez et installez un package - ou créez un package (rpm / dem) - vous-même, vous n'avez généralement plus besoin du code source après son installation. La raison pour laquelle vous pouvez avoir le code source de certains paquets - comme le noyau ou X11 - sous / usr / src (ou / usr / local / src s'il a été créé localement), est principalement parce que vous en aurez besoin si vous '' recréer (ou écrire) vous-même un progiciel (par exemple, des fichiers d'en-tête obscurs à partir du noyau, correspondant à votre configuration système actuelle). (Bien sûr, vous en aurez besoin si vous voulez construire votre propre noyau aussi ...) Mais cela s'applique à quelques paquets.
Baard Kopperud

Réponses:

20

Chaque fois que vous vous demandez quelque chose comme ça, consultez le Filesystem Hierarchy Standard (FHS). Vous y trouverez l'entrée suivante:

usr / src: code source (facultatif)

Objectif

Le code source peut être placé dans ce sous-répertoire, uniquement à des fins de référence

Vous pouvez donc placer vos fichiers source dans des sous-répertoires de /usr/src. Cela dit, il s'agit d'un répertoire facultatif, vous pouvez donc vraiment les conserver où vous le souhaitez. Le code source n'est plus pertinent une fois que vous l'avez compilé dans un exécutable, le système n'exigera donc jamais que la source de quelque chose soit accessible à un emplacement spécifique.

En conclusion: /usr/srcc'est un emplacement assez standard mais n'hésitez pas à choisir le vôtre si vous préférez.

terdon
la source
6
Sachez simplement que vous ne voulez vraiment pas jouer avec /usr/srcun système non Linux. Les BSD y conservent leurs sources de système de base par défaut et vous ne voulez pas les mélanger avec des logiciels tiers. Il suffit de construire $HOMEquelque part ...
Kusalananda
1
Le même pour certains sous-répertoires de /usr/srcsur dérivés de Debian, si vous avez certains paquets installés ( gcc-6-source, binutils-source, DKMS paquets, les en- têtes , etc. noyau). Sur Debian, il y a une fonctionnalité intéressante où vous pouvez vous ajouter au srcgroupe qui en est propriétaire /usr/src, puis y écrire comme vous-même (sans avoir besoin de sudoquoi que ce soit).
Stephen Kitt
Et sur Fedora, vous ne devriez pas toucher /usr/src/debuget /usr/src/kernels(AFAICS).
Stephen Kitt
"Le code source peut être placé". Est-ce que "placer" est une faute de frappe, ou ai-je raté quelque chose?
Faheem Mitha
3
J'irai plus loin et dirai que vous ne devriez pas vraiment toucher /usrà aucun système. Vous devriez y mettre des choses /usr/local. Les BSD vous dérangent-ils d'utiliser /usr/local/src?
Muzer
13

/usr/local/srcest un endroit sûr pour conserver le code source et le construire aussi. La FHS dit :

Directory   Description  
src         Local source code

et aussi

La hiérarchie / usr / local doit être utilisée par l'administrateur système lors de l'installation locale du logiciel. Il doit être protégé contre l'écrasement lors de la mise à jour du logiciel système.

Ce n'est pas clair ce que signifie "code source local", mais il est clair que le système n'essaiera pas de placer quoi que ce soit /usr/local/src, contrairement à /usr/src, donc il semble y avoir peu d'inconvénients à y mettre du code.

En fait, j'ai le mien sur un système de fichiers séparé:

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

Remarque: au moins sur Debian, votre utilisateur doit être ajouté au staffgroupe pour pouvoir y écrire /usr/local.

Faheem Mitha
la source
+1 pour avoir souligné /usr/local/srctandis que les autres réponses ne discutent que/usr/src
MattSturgeon
Quant à ce que signifie le "code source local", il signifie en général contrôlé par le sysadmin local plutôt que par une distribution . Le même que tout le reste sous /usr/local(en théorie). Donc, cela signifie essentiellement ce que vous avez décrit.
MattSturgeon
9

Si par "standard" vous voulez dire conventionnel, alors l'endroit pour décompresser et construire le code source est votre répertoire personnel. Ces fichiers devraient être transitoires, supprimés lorsque vous avez terminé, ou conservés si vous le souhaitez, organisés comme bon vous semble. Votre répertoire personnel est votre espace pour jouer avec tout ce genre de choses.

Si vous souhaitez les conserver par la suite, pour référence , le " Filesystem Hierarchy Standard " recommande /usr/src. Cependant, il s'agit d'un guide et non d'une loi; et, si vous deviez prendre cette habitude puis vous aventurer sur un système non Linux, vous êtes susceptible de causer des problèmes en la suivant. Par exemple, sur un système BSD, les sources du système de base y sont conservées et vous ne voulez vraiment pas les déranger. Même sous Linux, vous risquez de vous mêler à n'importe quelle source stockée par les gestionnaires de packages, ce qui n'est pas souhaitable.

Je recommanderais d'éviter /usr/srcglobalement. Il n'y a aucun avantage évident à conserver quoi que ce soit, et un risque potentiel si vous confondez sa signification.

Courses de légèreté avec Monica
la source
5

Vous pouvez utiliser /usr/srccomme cet endroit un son raisonnable et les distributions basées sur rpm l'utilisent pour y stocker le contenu des packages srpm. Mais tout autre lieu comme /opt, /usr/local, ~/srcest bon

Roméo Ninov
la source
"Les distributions basées sur rpm l'utilisent pour y stocker le contenu des packages srpm." C'est exactement pourquoi vous ne devriez pas y stocker vos propres sources non distro et plutôt utiliser / usr / local. - "Ce doit être un bon endroit pour ranger des trucs, avec tous ces chariots élévateurs qui semblent être du même avis ...."
rackandboneman