Beim Übergang von Windows zu Linux kann ich den Prozess der Installation von Software unter Linux nicht verstehen. Wenn wir unter Windows eine Installationsdatei ausführen, werden Sie gefragt, wo Sie das Programm installieren möchten, höchstwahrscheinlich nur im Ordner mit den Programmdateien. Später bearbeitet es die Registrierung. Dies wird als Installation in Windows bezeichnet. Was bedeutet das Installieren von Software unter Linux genau?
Angenommen, ich habe den Quellcode heruntergeladen, ihn konfiguriert und dann die Binärdatei mit erstellt make
. Jetzt ist es nur eine Binärdatei, noch kein brauchbares Programm. Wie wird es installiert? Von make install
? Und was genau macht dieser Befehl?
make
installation
KawaiKx
quelle
quelle
make install
Schritte aus Sicht eines Programmierers.Antworten:
Make ist ein allgemeines Workflow-Programm, das normalerweise zum Kompilieren verwendet wird. Aber es kann für alles verwendet werden.
Wenn Sie so etwas wie "make all" ausführen, führt das make-Programm eine Regel mit dem Namen "all" aus einer Datei im aktuellen Verzeichnis mit dem Namen "Makefile" aus. Diese Regel ruft normalerweise den Compiler auf, um Quellcode in Binärdateien zu kompilieren.
Wenn Sie "make install" ausführen, übernimmt das make-Programm die Binärdateien aus dem vorherigen Schritt und kopiert sie an einige geeignete Speicherorte, damit auf sie zugegriffen werden kann. Anders als unter Windows müssen für die Installation nur einige Bibliotheken und ausführbare Dateien kopiert werden, und es besteht keine eigentliche Registrierungspflicht. Kurz gesagt, "make install" kopiert nur kompilierte Dateien an die entsprechenden Speicherorte.
quelle
all
in derMakefile
und was die Endmarkierung dieses Abschnitts aussieht, so kann ich , wo die Regelverarbeitung für sehenall
stoppt.make install
macht, was derMakefile
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:
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 Standardeinstellungprefix
. 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 dasMakefile
, 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. Somake
wird die Software speziell für den gewünschten Installationsort erstellt undmake 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, wiepostfix
,qmail
etc. werden von vielen verschiedenen beweglichen Teile aus und verlassen sich auf sie alle zusammen arbeiten. Andere mögenls
oder sindsu
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 VerteilungMakefile
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.)quelle
make install
tut nichts weniger als das Ausführen derinstall
Funktion / des Abschnitts in IhremMakefile
quelle
make clean
, im Grunde führt es nur die Codes unter dem Abschnitt aus.Das Wichtigste bei der Installation von Software unter Linux ist, dass es viel zuverlässiger und einfacher ist, Software von Ihrer Distribution zu installieren (dies ist der Zweck!). Nur verwenden,
make install
wenn es keine andere Möglichkeit gibt (auch alternative Programme in Betracht ziehen).Ein häufiger Fehler von Windows-Benutzern besteht darin, Programme von verschiedenen Orten herunterzuladen und zu installieren. Dabei wird vergessen, die Distributionspakete auszuchecken, die mit einem einzigen Klick oder Befehl (im Paketmanager) installiert werden können.
Denken Sie auch daran, dass einer der Hauptgründe für die Abwesenheit von Virusinfektionen unter Linux darin besteht, dass Software von einem zentralen (vertrauenswürdigen) Ort aus anstelle der vielen zufälligen Sites installiert wird (oder werden sollte).
Als zusätzliche Anmerkung: Während Distributionen wie Ubuntu immer veraltete Pakete enthalten, gibt es auch Distributionen wie Arch Linux, die immer auf dem neuesten Stand sind (obwohl sie nicht buchstäblich jedes Programm bieten, das jemals für Linux veröffentlicht wurde, wie Debian / Ubuntu).
Was genau passieren würde, wenn Sie den Paket-Manager verwenden, würde er Abhängigkeiten überprüfen, Pakete herunterladen, entpacken, alle Dateien in die entsprechenden Verzeichnisse legen, gemäß den Richtlinien von FHS und Distribution sowie einigen anderen Routinen, die Sie wahrscheinlich kennenlernen könnten von der Manpage des Paketmanagers.
quelle