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.

directhex
quelle
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.

Sandig
quelle
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

Xenoterracid
quelle
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.

Scott Anderson
quelle
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.

Stephen Jazdzewski
quelle
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 ...

Kevin Cantu
quelle
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.

Eimantas
quelle
5

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

Daniel James
quelle
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.

Aaron Toponce
quelle
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 :)

Elmarco
quelle
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.

jacksonh
quelle
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.

wzzrd
quelle
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.

Hemant
quelle
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.

Nils
quelle
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


quelle
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.

vonbrand
quelle
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.

user55149
quelle