it-swarm.com.de

Wo soll ich Software ablegen, die ich selbst kompiliere?

Ich muss Software auf meinem Fedora-Computer kompilieren. Wo kann man es am besten platzieren, um die gepackte Software nicht zu beeinträchtigen?

130
theotherreceive

Faustregel, zumindest bei Systemen mit Debian-Geschmack:

  • /usr/local für Sachen, die "systemweit" sind - d.h. /usr/local ist in der Regel in der Standardeinstellung einer Distribution $PATH und folgt einer Standard-UNIX-Verzeichnishierarchie mit /usr/local/bin, /usr/local/lib, usw.

  • /opt für Dinge, denen Sie nicht vertrauen, dass sie systemweit mit App-Präfixen erstellt werden - d. h. /opt/firefox-3.6.8, /opt/mono-2.6.7, und so weiter. Dinge hier erfordern eine sorgfältigere Verwaltung, aber es ist auch weniger wahrscheinlich, dass Ihr System beschädigt wird - und es ist einfacher zu entfernen, da Sie nur den Ordner löschen und er weg ist.

92
directhex

Wenn Sie wirklich nicht möchten, dass es überhaupt stört, fügen Sie es nirgendwo in Ihren $PATH Ein.

Wenn Sie es in $PATH Möchten, stellen Sie zumindest sicher, dass Sie es nicht auf /usr/local Installieren. Ich habe festgestellt, dass dort eine Menge Software aussieht, auch wenn sie von der Distribution in /usr Installiert wird.

Meine bevorzugte Art, benutzerdefinierte kompilierte Software zu installieren, befindet sich in meinem Verzeichnis $HOME. Auf diese Weise müssen Sie Sudo für nichts 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 Ihrem /home/username/stage/bin$PATH Hinzufügen.

50
Sandy

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

21
xenoterracide

Meistens platziere ich meine eigenen kompilierten Sachen gerne in /opt. Es ist eine Art Pseudo-Standard-Ort. Sie können auch /usr/local, aber ich ziehe es vor, meine Sachen 100% isoliert zu halten.

10
Scott Anderson

Setzen Sie sie auf /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.

Auf diese Weise können Sie zwischen Versionen und Dokumenten wechseln, welche Version Sie verwenden.

9

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

 ./configure
 make

gefolgt von

 Sudo checkinstall

um eine . deb Datei zu erstellen ...

6
Kevin Cantu

Per FHS , /usr/local/ wird für aus der Quelle kompilierte Anwendungen verwendet, während /opt/ wird für Anwendungen von Drittanbietern verwendet, die von Ihrem Betriebssystemhersteller nicht unterstützt werden.

5
Aaron Toponce

Wenn es die Möglichkeit gibt, würde ich vorschlagen, Ihre Software zu kompilieren und dann ein FC-Paket zu erstellen (ich glaube, es wird yum verwendet, um Softwarepakete zu installieren). Dann können Sie das Paket Ihrer eigenen kompilierten Software installieren und entfernen, ohne das gesamte System zu beschädigen.

5
Eimantas

Wenn Sie mehrere selbst erstellte Anwendungen einfach installieren und entfernen möchten, können Sie Stow als einfachen Paketmanager verwenden.

5
Daniel James

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 einfach zwischen den Versionen wechseln.

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

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

4
elmarco

Es ist eigentlich nicht so schwer, Deb's 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 meistens: erstelle einfach eine kleine Drehzahl.

3
wzzrd

Ich habe ein etwas anderes Setup als die meisten Leute, weil ich viel entwickle. Ich habe ein Verzeichnis/home/jackson/bin /, in das ich Inhalte installiere, und ich habe meine .bashrc-Datei bearbeitet und Folgendes hinzugefügt:

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
jacksonh

wenn Sie eine Anwendung kompilieren, können Sie den Pfad für ausführbare Dateien in Ihre PATH env-Variable einfügen. Dies hat keine Auswirkungen auf andere Benutzer.

2
Hemant

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

2
Nils

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

1
Silviu Bogan

Schreiben Sie eine 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 /usr und nicht unter /usr/local, wie alle anderen Dateien, die durch das Verpackungssystem kommen.

0
user55149

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

Dies ist beim ersten Mal eine lästige Pflicht, aber wenn eine neue Version (oder ein kritischer Patch) herauskommt, ist die Aktualisierung einfacher. Ein weiterer Vorteil besteht darin, dass Sie mit lokaler Software ein eigenes Repository erstellen können, das z. von den Maschinen in einem Labor.

0
vonbrand