Wo soll ich Software ablegen, die ich selbst kompiliere?


Antworten:


90

Faustregel, zumindest auf Debian-Systemen:

  • /usr/localdas für Zeug ist „systemweit“ , dh /usr/localin einer Distro-Standardtendenziell zu $PATHund folgt einer Standardhierarchie UNIX - Verzeichnis mit /usr/local/bin, /usr/local/libusw.

  • /optfür Sachen vertrauen Sie nicht systemweit, mit pro-App - Präfixen, dh zu machen /opt/firefox-3.6.8, /opt/mono-2.6.7und so weiter. Die hier enthaltenen Informationen erfordern eine sorgfältigere Verwaltung, können aber auch das System weniger beschädigen. Sie lassen sich leichter entfernen, da Sie nur den Ordner löschen und er ist verschwunden.


Interessanterweise empfehlen viele Programme / Anwendungen automatisch die Installation, /optwenn Sie dies tun sudo.
HongboZhu

50

Wenn Sie wirklich nicht möchten, dass es überhaupt stört, platzieren Sie es nirgendwo in Ihrem $PATH.

Wenn Sie es möchten, stellen Sie $PATHzumindest sicher, dass Sie es nicht auf installieren /usr/local. Ich habe festgestellt, dass dort eine Menge Software angezeigt wird, auch wenn sie von der Distribution installiert wurde /usr.

Meine Lieblingsmethode zum Installieren von individuell kompilierter Software befindet sich in meinem $HOMEVerzeichnis. Auf diese Weise müssen Sie sudonichts verwenden, und es ist sehr schön vom Rest Ihres Systems getrennt. Zum Beispiel:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

Und wenn Sie möchten, können Sie dann /home/username/stage/binIhre hinzufügen $PATH.


1
Auf jeden Fall ist die Verwendung Ihres Home-Verzeichnisses die beste Option. IMO.
Bitek

1
+1 Einverstanden. Ich mag ~ / sbin für Bash / Ruby / Python-Skripte und ~ / opt / ... für kompilierte Installationen mit Aliasen in ~ / bin.
Kris

4
+1 für die Verwendung Ihres Home-Verzeichnisses zur Vereinfachung; -1 für den Vorschlag, $ PATH zu vermeiden - es gibt tatsächlich Verzeichnisse, die gemäß den Standards (z /usr/local. B. ) "für lokale Installationen reserviert" sind .
Riccardo Murri

1
Mein Vorschlag, / usr / local zu vermeiden, beruhte auf dem (etwas vagen) Wunsch des ursprünglichen Posters, nicht in gepackte Software einzugreifen. Da es eine Menge gepackter Software gibt, die "hilft", indem sie in / usr / local oder in $ PATH nachschaut, habe ich angenommen, dass dies als störend qualifiziert ist. Aber es hängt wirklich von den individuellen Bedürfnissen und Zielen einer Person ab. / usr / local kann in vielen Situationen eine gute Wahl sein.
Sandy

Niemand bemerkte das völlige Missverständnis des Buchstabens "s" in Kommentar # 2. das sollte gelöscht werden
meffect

20

FHS sagt, dass es in / usr / local abgelegt werden soll, wo Distributionen es nicht berühren sollten. /usr/local/binfür die Binärdateien /usr/local/srcfür die Quelle und /usr/local/libfür Bibliotheken. Weitere Informationen finden Sie in der FHS-Spezifikation


Was ist mit der Konfiguration? Angenommen, ich habe MySQL ohne den Paketmanager installiert. Soll ich es trotzdem /etc/mysqlfür die Konfiguration verwenden?
Hubro

Mir ist gerade aufgefallen, dass es /usr/local/etcstandardmäßig einen Ordner gibt. Ich denke, ich sollte diesen verwenden ... :-)
Hubro

10

Die meiste Zeit mag ich es, meine eigenen kompilierten Sachen unterzubringen /opt. Es ist eine Art Pseudo-Standard-Ort. Sie können auch darüber nachdenken /usr/local, aber ich ziehe es vor, meine Sachen zu 100% isoliert zu halten.


1
Die Distribution neigt dazu, einige Dinge in / opt (normalerweise proprietäre Pakete) zu schreiben. / opt sagt nicht, dass die Distribution es nicht anfassen kann. Es heißt jedoch, dass etwa / usr / local
Xenoterracide 10.08.10

1
Ich habe noch nie eine Distribution gesehen, die Sachen reingelegt hat /opt, aber ich habe schon oft gesehen, wo /usr/locales Müll gibt, der von der Distribution kommt
Scott Anderson

Distributionen, die ich benutze, um Java in / opt zu setzen. Ich habe dort auch Acrobat Reader gesehen. Wenn sie Sachen in / usr / local ablegen, ignorieren sie FHS, was besagt, dass es sicher sein muss, dass es bei Systemaktualisierungen überschrieben wird.
Xenoterracide

Für jeden seine, denke ich. FHS ist nett, aber ich denke, es wird manchmal ignoriert.
Scott Anderson

Das einzige, was ich jemals in Distributionspaketen gesehen habe, /usr/localwaren Verzeichnishierarchien, die denen im Standardbaum entsprachen, und möglicherweise Indexdateien für Dinge wie TeX.
Phil Miller

9

Setzen Sie sie an /usr/local/src.

Ich extrahiere die Quelle in dieses Verzeichnis. Es wird ein Pfad wie erstellt

/usr/local/src/postgresql-8.3.7

Dann erstelle ich einen symbolischen Link dazu:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Mach dein ganzes Gebäude in /usr/local/src/postgresql.

Diese Vorgehensweise ist hilfreich, wenn Sie zwischen Versionen und Dokumenten wechseln müssen, welche Version Sie verwenden.


1
+1 für die Angabe Ihrer Begründung und wie das OP sie anwenden kann, einschließlich der Versionierung.
samt

6

Das erinnert mich daran, dass ich checkinstall öfter benutzen muss ! Auf diese Weise mache ich einfach das Übliche

 ./configure
 make

gefolgt von

 sudo checkinstall

um eine .deb- Datei zu erstellen ...


2
Beantwortet die Frage nicht.
JBentley

5

Wenn es möglich ist, würde ich vorschlagen, Ihre Software zu kompilieren und dann ein FC-Paket zu erstellen (ich glaube, es verwendet yum, um Softwarepakete zu installieren). Anschließend können Sie das Paket Ihrer eigenen kompilierten Software installieren und entfernen, ohne das gesamte System zu beschädigen.


5

Wenn Sie mehrere Anwendungen, die Sie selbst erstellt haben, problemlos installieren und entfernen möchten, können Sie Stow als einfachen Paketmanager verwenden.


5

Per der FHS , /usr/local/ist für Anwendungen aus den Quellen kompiliert verwendet, während /opt/für 3rd - Party - Anwendungen verwendet wird , nicht von Ihrem Betriebssystem - Anbieter unterstützt.


4

Zwei Dinge, die ich empfehlen würde:

Systemweit: Verwenden Sie stow und installieren Sie es unter / usr / local / stow / package-version. Dann können Sie ganz einfach zwischen den Versionen wechseln.

Bei mir zu Hause oder wenn ich keine / usr / local-Schreibrechte habe, installiere ich persönlich Programme unter ~ / .local, was durch den XDG-Standard angedeutet wird .

Sie können auch lokal verstauen, obwohl ich es nie getan habe :)


3

Ich habe ein etwas anderes Setup als die meisten Leute, weil ich viel entwickle. Ich habe ein / home / jackson / bin / -Verzeichnis, in das ich etwas installiere, und ich habe mein .bashrc bearbeitet, indem ich dies hinzufüge:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

Ich würde das nicht für alles tun, aber es ist schön während der Entwicklung.


3

Es ist eigentlich nicht so schwer, Debs oder RPMs aus einem Quell-Tarball zu erstellen. Auf diese Weise können Sie die Funktionen des Paketmanagers Ihrer Distribution nutzen, um Ihr System sauber zu halten. Das mache ich die meiste Zeit: erstelle einfach eine kleine Drehzahl.


2

Wenn Sie eine Anwendung kompilieren, können Sie den Pfad der ausführbaren Dateien in Ihre PATH-Umgebungsvariable einfügen. Dies hat keine Auswirkungen auf andere Benutzer.


Ich frage mich, warum die Stimmen nach unten? +1 zu einer Art "Balance off"
phunehehe

Ich frage mich auch warum :-). Ich habe die gleiche Lösung für die Verwendung von cscope verwendet, für die ich keine Installationsberechtigungen habe.
Hemant

@phunehehe Wahrscheinlich, weil es nicht einmal versucht, die Frage zu beantworten. Bei der Frage wird gefragt, wo die Software platziert werden soll. Diese Antwort gibt einen Tipp, was Sie tun können, nachdem Sie es irgendwo platziert haben. Es könnte verbessert werden, indem einige Vorschläge für die zu verwendenden Ordner gemacht werden.
JBentley

2

Es gibt immer die Möglichkeit, "es dorthin zu bringen, wo es hingehört", aber schreiben Sie zuerst eine einfache Drehzahl.


1

Wenn Ihre Anwendung für alle Benutzer im System verfügbar sein soll und Sie über die erforderlichen Berechtigungen verfügen, verwenden Sie / opt. Wenn Sie möchten, dass die Anwendung nur für Sie (und root) verfügbar ist, verwenden Sie / home / username


0

Der einfachste Weg dies zu tun ist, das .src.rpmQuellpaket ( für RPMites) zu nehmen, es zu entpacken, die neue Quelle / Konfiguration / was auch immer hinein zu hacken, die Version entsprechend zu ändern und zu bauen. Durch die Installation wird Ihr Paketmanager auf das neue Paket aufmerksam, kann es für Abhängigkeiten berücksichtigen und deinstallieren / aktualisieren.

Dies ist das erste Mal eine lästige Pflicht, aber wenn eine neue Version (oder ein kritischer Patch) herauskommt, ist das Update einfacher. Ein weiterer Vorteil ist, dass Sie mit lokaler Software ein eigenes Repository erstellen können, das z. B. von den Maschinen in einem Labor gemeinsam genutzt werden kann.


0

Schreiben Sie ein RPM, es ist nicht schwierig, hat Richtlinien, wo Dinge abgelegt werden sollen und macht die Deinstallation zum Kinderspiel.

Wenn Sie dies tun, installieren Sie Dateien unter /usrund nicht unter /usr/local, wie alle anderen Dateien, die über das Paketsystem übertragen werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.