Ich muss Software auf meinem Fedora-Rechner kompilieren. Wo ist der beste Ort, um die Software nicht zu beeinträchtigen?
Ich muss Software auf meinem Fedora-Rechner kompilieren. Wo ist der beste Ort, um die Software nicht zu beeinträchtigen?
Antworten:
Faustregel, zumindest auf Debian-Systemen:
/usr/local
das für Zeug ist „systemweit“ , dh /usr/local
in einer Distro-Standardtendenziell zu $PATH
und folgt einer Standardhierarchie UNIX - Verzeichnis mit /usr/local/bin
, /usr/local/lib
usw.
/opt
für Sachen vertrauen Sie nicht systemweit, mit pro-App - Präfixen, dh zu machen /opt/firefox-3.6.8
, /opt/mono-2.6.7
und 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.
/opt
wenn Sie dies tun sudo
.
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 $PATH
zumindest 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 $HOME
Verzeichnis. Auf diese Weise müssen Sie sudo
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 dann /home/username/stage/bin
Ihre hinzufügen $PATH
.
/usr/local
. B. ) "für lokale Installationen reserviert" sind .
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
/etc/mysql
für die Konfiguration verwenden?
/usr/local/etc
standardmäßig einen Ordner gibt. Ich denke, ich sollte diesen verwenden ... :-)
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.
/opt
, aber ich habe schon oft gesehen, wo /usr/local
es Müll gibt, der von der Distribution kommt
/usr/local
waren Verzeichnishierarchien, die denen im Standardbaum entsprachen, und möglicherweise Indexdateien für Dinge wie TeX.
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.
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 ...
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.
Wenn Sie mehrere Anwendungen, die Sie selbst erstellt haben, problemlos installieren und entfernen möchten, können Sie Stow als einfachen Paketmanager verwenden.
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.
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 :)
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.
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.
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
Der einfachste Weg dies zu tun ist, das .src.rpm
Quellpaket ( 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.
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 /usr
und nicht unter /usr/local
, wie alle anderen Dateien, die über das Paketsystem übertragen werden.