Wird
make install
mit einem Makefile die meiste Zeit angerufen/usr/bin/install
?Was macht die notwendige Arbeit
/usr/bin/install
neben dem Kopieren der gerade kompilierten Dateien/usr/bin/local
?Die Manpage sagt
/usr/bin/install
Kopieren von Dateien und Festlegen von Attributen. Welche Attribute sind so wichtig festzulegen?- Legt es nur Berechtigungsmodi und Eigentümer / Gruppe fest, die nicht erforderlich sind?
11
Antworten:
install
bietet neben dem Kopieren von Dateien in ein Verzeichnis eine Reihe von Funktionen.-s
Option entfernt die Symboltabelle aus einer ausführbaren Datei und spart Platz-m
Option setzt die Berechtigungsbits. Die Dateien im Entwicklerverzeichnis wurden vorbehaltlich seiner Umask erstellt, wodurch andere möglicherweise nicht ausgeführt werden können.install -m 755 file1 /usr/local/bin
stellt sicher, dass jeder die Datei ausführen kann, was wahrscheinlich der Entwickler für eine Datei in einem freigegebenen Verzeichnis wünscht.-o
und-g
legen den Eigentümer und die Gruppe fest. Mit würdecp
der Eigentümer und die Gruppe der Zieldatei auf die UID und GID desjenigen festgelegt, der die ausgeführt hatcp
, und mit würdecp -p
der Eigentümer und die Gruppe der Zieldatei mit der Datei im Erstellungsverzeichnis identisch sein sei was der Entwickler will. Daswall
Programm muss in einer Gruppe seintty
, dasscreen
Programm muss in einer Gruppe seinutmp
usw.install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)
prägnanter als die vier Befehle istcp
,strip
,chmod
, undchown
.Der letzte Punkt ist wahrscheinlich, warum der
install
Befehl erfunden wurde und warum viele Makefiles ihn verwenden.Install
wird jedoch nicht immer verwendet. Ich habe gesehen,cp -r lib $(DESTDIR)/lib
wann ein ganzer Baum voller Dinge zum Kopieren ist und./install.sh
ob der Entwickler lieber ein benutzerdefiniertes Skript verwendet. Viele Pakete haben eineinstall.sh
Ableitung von der mit X11 gelieferten, dieinstall
eine-t
(Transformations-) Option zum Umbenennen der Zieldateien auf eine bestimmte Weise unterstützt.quelle
Da es im Wesentlichen Sache der Projektentwickler ist, welche Befehle in einem Makefile verwendet werden, ist es schwierig, hier eine eindeutige Antwort zu geben. Im Allgemeinen würde ich sagen, dass es eine gute Praxis ist, den
install
Befehl in einem Makefile für alle in 2 genannten Installationsprozesse zu verwenden, aber andererseitsinstall
ist es nicht POSIX, so dass es immer nicht der portabelste Ansatz ist, ihn immer zu verwendenAFAIK die meisten Tools können automatisch Makefiles wie generieren verwendet werden
automake
undcmake
wird verwendeninstall
.Wird
install
im Allgemeinen zum Kopieren von Dateien und zum Festlegen von Berechtigungen / Eigentümer / Gruppe in einem Befehl verwendet, wie Sie sagen. Eine andere häufig verwendete Funktion besteht darin, unnötige Symbole (z. B. Debugging-Symbole) aus einer Binärdatei zu entfernen, die sie nicht mehr benötigt. Es gibt auch einige zusätzliche Optionen für Dinge wie das Erstellen von Backups vor dem Installieren und Arbeiten in einem SELinux-Kontext, die nützlich sein können.Welche Berechtigungen ausgewählt werden müssen, hängt von der Datei selbst ab. Die meisten installierten Dateien sind für alle lesbar, aber nur für root beschreibbar (die Idee ist, Programmdateien an einem Ort abzulegen, an dem sie für alle zugänglich sind, aber nicht manipuliert werden können). Dies ist nicht bei allen Fällen der Fall. Wenn die Datei vertrauliche Daten enthält, ist es üblich, den Zugriff auf eine Gruppe oder nur auf root zu beschränken.
quelle