make install
macht, was der Makefile
Autor will. In der Regel ist es zu diesem Zeitpunkt zu spät, das Installationsverzeichnis zu ändern, wie es häufig früher während des Builds bekannt ist, sodass auf Hilfedateien und Konfigurationsdateien mit den richtigen Pfadnamen verwiesen werden kann.
Viele Projekte verwenden die GNU-Autotools , um ihre Portabilität zwischen Hardware- und Betriebssystemunterschieden zu verbessern. (Verschiedene Unix-Varianten verwenden leicht unterschiedliche Header für Deklarationen von Funktionen, die leicht vom üblichen Pfad abweichen - mit der Ausnahme, dass die meisten Programme die einen oder anderen benötigen, die an verschiedenen Orten deklariert sind.)
Wenn ein Projekt die Autotools verwendet, lautet das normale Mantra für die Installation:
./configure
make
make install
In der ./configure
Regel können Sie eine Befehlszeilenoption wie --prefix /opt/apache
oder etwas Ähnliches verwenden, um einen anderen Pfadnamen anzugeben. /usr/local/
ist eine gängige Standardeinstellung prefix
. Es ist weitaus einfacher, lokal erstellte Software an einem Ort und von der Distribution bereitgestellte Software in den "Hauptverzeichnissen": /usr/
/bin/
usw. zu speichern. (Packager achten sehr darauf, dass sie niemals Dateien berühren /usr/local/
- sie wissen, dass dies ausschließlich für Systemadministratoren bestimmt ist.)
Wie auch immer, das ./configure --prefix /path/to/new/prefix
setzt eine Variable in das Makefile
, was beim Kompilieren des Programms verfügbar ist, und ändert die Handbuchseiten so, dass sie auf die richtigen Speicherorte für Dateien, Konfigurationsdateien usw. verweisen. So make
wird die Software speziell für den gewünschten Installationsort erstellt und make install
wird es an diesem Ort installieren.
Die meisten Programme können auch ohne den letzten make install
Schritt ausgeführt ./program_name
werden. Oft werden sie nur gestartet. Dies ist definitiv ein pro-Projekt Sache - einige, wie postfix
, qmail
etc. werden von vielen verschiedenen beweglichen Teile aus und verlassen sich auf sie alle zusammen arbeiten. Andere mögen ls
oder sind su
möglicherweise in sich geschlossen genug, um in dem Verzeichnis, in dem sie erstellt wurden, ordnungsgemäß ausgeführt zu werden. (Dies ist nicht oft nützlich, aber manchmal sehr nützlich.)
Allerdings verwenden nicht alle Projekte die Autotools - sie sind riesig , kompliziert und in der Wartung miserabel. Handgeschriebene Makefile
s sind viel einfacher zu schreiben, und ich persönlich denke, dass die einfache Verteilung Makefile
mit verfügbaren Konfigurationsvariablen sowohl für Entwickler als auch für Benutzer viel einfacher ist. (Obwohl das ./configure ; make ; make install
Mantra für Benutzer wirklich einfach ist, wenn es funktioniert.)
make install
Schritte aus Sicht eines Programmierers.