Standardspeicherort für Software-Quelldateien

16

Gibt es einen Standard - Standort in Linux für Quelldateien zum Beispiel hält OpenSSL . Ich baue Nginx aus dem Quellcode mit einer nicht standardmäßigen Version von OpenSSL. Ich muss OpenSSL herunterladen und entpacken und habe es im Home-Verzeichnis gemacht. Nun, ich frage mich, gibt es vielleicht einen Standardspeicherort in Linux /opt?

user3448600
quelle
1
Wie von Terdon geschrieben, ist / usr / src der Standardspeicherort. Hier finden Sie möglicherweise Verzeichnisse für die Kernelquelle (/ usr / src / linux, die mit / usr / src / linux-version verknüpft ist) und beispielsweise X11. Der Quellcode für lokal installierte Pakete (/ usr / local) passt besser in / usr / local / src. Wenn Sie Pakete "manuell" erstellen möchten, ist es wahrscheinlich eine gute Idee, ein src-Verzeichnis in Ihrem Homedir zu erstellen ... Denken Sie daran, dass Sie keine Pakete herunterladen, entpacken oder als root erstellen sollten - nur installieren als! Wenn Sie deb / rpm-Pakete erstellen, werden normalerweise temporäre Erstellungsverzeichnisse (z. B. unter / var / tmp) verwendet. TBC
Baard Kopperud
Wenn Sie ein Paket selbst erstellen und installieren oder ein Paket (rpm / dem) erstellen, benötigen Sie den Quellcode normalerweise nicht mehr, nachdem er installiert wurde. Der Grund, warum Sie möglicherweise den Quellcode für einige Pakete - wie den Kernel oder X11 - unter / usr / src (oder / usr / local / src, wenn es lokal erstellt wurde) haben, liegt hauptsächlich darin, dass Sie sie möglicherweise benötigen, wenn Sie Erstellen (oder schreiben) Sie ein Softwarepaket selbst (z. B. obskure Header-Dateien aus dem Kernel, die zu Ihrer tatsächlichen Systemkonfiguration passen). (Natürlich benötigen Sie es, wenn Sie auch Ihren eigenen Kernel erstellen möchten ...) Dies gilt jedoch nur für wenige Pakete.
Baard Kopperud

Antworten:

20

Wenn Sie sich so etwas fragen, lesen Sie den Filesystem Hierarchy Standard (FHS). Dort finden Sie den folgenden Eintrag:

usr / src: Quellcode (optional)

Zweck

Der Quellcode darf nur zu Referenzzwecken in dieses Unterverzeichnis gestellt werden

So können Sie Ihre Quelldateien in Unterverzeichnisse von ablegen /usr/src. Das heißt, dies ist ein optionales Verzeichnis, so dass Sie sie wirklich behalten können, wo immer Sie möchten. Der Quellcode ist nicht relevant, nachdem Sie ihn in eine ausführbare Datei kompiliert haben, sodass das System niemals verlangt, dass die Quelle von etwas an einem bestimmten Ort verfügbar ist.

Fazit: /usr/srcIst ein ziemlich normaler Ort, aber Sie können Ihren eigenen wählen, wenn Sie es vorziehen.

terdon
quelle
6
Seien Sie sich nur bewusst, dass Sie wirklich nicht mit /usr/srceinem Nicht- Linux-System herumspielen möchten. Die BSDs behalten ihre Basissystemquellen standardmäßig dort und Sie möchten sie nicht mit Software von Drittanbietern vermischen. Bauen Sie einfach $HOMEirgendwo ein ...
Kusalananda
1
Das gleiche gilt für einige Unterverzeichnisse von /usr/srcauf Debian - Derivaten, wenn Sie bestimmte Pakete installiert haben ( gcc-6-source, binutils-source, DKMS - Pakete, die Kernel - Header etc.). Unter Debian gibt es eine nette Funktion, mit der Sie sich der srcGruppe hinzufügen können, deren Eigentümer Sie sind /usr/src, und dort einfach als Sie selbst schreiben können (ohne dass Sie dazu sudooder was auch immer brauchen ).
Stephen Kitt
Und auf Fedora sollten Sie nicht /usr/src/debugund /usr/src/kernels(AFAICS) berühren .
Stephen Kitt
Msgstr "Quellcode darf platziert werden". Ist "platzieren" ein Tippfehler oder fehle ich etwas?
Faheem Mitha
3
Ich gehe weiter und sage, Sie sollten kein /usrSystem wirklich berühren . Sie sollten Dinge in setzen /usr/local. Haben BSDs etwas dagegen, dass Sie verwenden /usr/local/src?
Muzer
13

/usr/local/srcist ein sicherer Ort, um Quellcode aufzubewahren und zu erstellen. Die FHS sagt :

Directory   Description  
src         Local source code

und auch

Die / usr / local-Hierarchie wird vom Systemadministrator beim lokalen Installieren der Software verwendet. Es muss sicher sein, dass es beim Aktualisieren der Systemsoftware nicht überschrieben wird.

Es ist nicht klar, was "lokaler Quellcode" bedeutet, aber es ist klar, dass das System nicht versuchen wird, irgendetwas darin /usr/local/srcabzulegen /usr/src, im Gegensatz zu , also scheint es wenig nachteilig zu sein, Code dort abzulegen.

Tatsächlich habe ich meins auf einem separaten Dateisystem:

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

Hinweis: Zumindest unter Debian muss Ihr Benutzer zur staffGruppe hinzugefügt werden, um schreiben zu können /usr/local.

Faheem Mitha
quelle
+1 für den Hinweis, /usr/local/srcwährend die anderen Antworten nur diskutieren/usr/src
MattSturgeon
Was "lokaler Quellcode" bedeutet, bedeutet im Allgemeinen, dass er vom lokalen Systemadministrator und nicht von einer Distribution gesteuert wird . Das gleiche wie alles andere unter /usr/local(theoretisch). Es bedeutet also im Wesentlichen genau das, was Sie beschrieben haben.
MattSturgeon
9

Wenn Sie mit "Standard" konventionell meinen, dann ist der Ort, an dem Sie den Quellcode entpacken und erstellen, Ihr Home-Verzeichnis. Es wird erwartet, dass solche Dateien vorübergehend sind, gelöscht werden, wenn Sie fertig sind, oder wenn Sie möchten, aufbewahrt werden, ganz wie Sie möchten. Ihr Heimatverzeichnis ist Ihr Bereich, in dem Sie mit all diesen Dingen spielen können.

Wenn Sie sie später als Referenz behalten möchten, empfiehlt der " Filesystem Hierarchy Standard " /usr/src. Dies ist jedoch ein Leitfaden, kein Gesetz. Und wenn Sie sich an diese Gewohnheit gewöhnen und sich auf ein Nicht-Linux-System begeben, können Sie Probleme verursachen, wenn Sie es befolgen. Auf einem BSD-System werden beispielsweise die Quellen des Basissystems dort aufbewahrt, und Sie möchten wirklich nicht mit diesen herumspielen. Selbst unter Linux besteht die Gefahr, dass Sie sich mit einer von Paketmanagern gespeicherten Quelle vermischen, was nicht wünschenswert ist.

Ich würde /usr/srcinsgesamt vermeiden empfehlen . Es hat keinen offensichtlichen Vorteil, irgendetwas dort zu belassen, und es besteht ein potenzielles Risiko, wenn Sie die beabsichtigte Bedeutung verwechseln.

Leichtigkeit Rennen mit Monica
quelle
5

Sie können /usr/srcdiesen Platz für vernünftige Klänge verwenden und RPM-basierte Distributionen verwenden ihn, um den Inhalt von srpm-Paketen zu speichern. Aber an jedem anderen Ort wie /opt, /usr/local, ~/srcist gut

Romeo Ninov
quelle
msgstr "RPM - basierte Distributionen verwenden es, um den Inhalt von RPM - Paketen zu speichern." Genau deshalb sollten Sie dort keine eigenen Nicht-Distributionsquellen speichern und stattdessen / usr / local verwenden. - "Das muss ein guter Ort sein, um Sachen zu
verstauen