Was macht / usr / bin / install neben dem Kopieren?

11
  1. Wird make installmit einem Makefile die meiste Zeit angerufen /usr/bin/install?

  2. Was macht die notwendige Arbeit /usr/bin/installneben dem Kopieren der gerade kompilierten Dateien /usr/bin/local?

  3. Die Manpage sagt /usr/bin/installKopieren von Dateien und Festlegen von Attributen. Welche Attribute sind so wichtig festzulegen?

  4. Legt es nur Berechtigungsmodi und Eigentümer / Gruppe fest, die nicht erforderlich sind?
Tim
quelle
"Ruft make install mit einem Makefile die meiste Zeit / usr / bin / install auf?" Nein, es macht was es will. Es ist ein Make-Ziel. Ist Ihre Frage zur ausführbaren Datei der Installation? Oder über machen? Es ist nicht klar.
Faheem Mitha
beide. @FaheemMitha
Tim
Ok, nun, 1 und 2 sind unterschiedliche Fragen, und die Antwort auf 1 ist wahrscheinlich nicht, aber definieren Sie "die meiste Zeit". Ich bin mir des Punktes 1 sowieso nicht sicher.
Faheem Mitha

Antworten:

17

install bietet neben dem Kopieren von Dateien in ein Verzeichnis eine Reihe von Funktionen.

  • Die -sOption entfernt die Symboltabelle aus einer ausführbaren Datei und spart Platz
  • Die -mOption 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/binstellt sicher, dass jeder die Datei ausführen kann, was wahrscheinlich der Entwickler für eine Datei in einem freigegebenen Verzeichnis wünscht.
  • Die Optionen -ound -glegen den Eigentümer und die Gruppe fest. Mit würde cpder Eigentümer und die Gruppe der Zieldatei auf die UID und GID desjenigen festgelegt, der die ausgeführt hat cp, und mit würde cp -pder Eigentümer und die Gruppe der Zieldatei mit der Datei im Erstellungsverzeichnis identisch sein sei was der Entwickler will. Das wallProgramm muss in einer Gruppe sein tty, das screenProgramm muss in einer Gruppe sein utmpusw.
  • Es reduziert die Anzahl der Befehle, die in ein Makefile-Rezept eingefügt werden müssen. install -s -m 755 -o root -g bin file1 file2 lib/* $(DESTDIR)prägnanter als die vier Befehle ist cp, strip, chmod, und chown.

Der letzte Punkt ist wahrscheinlich, warum der installBefehl erfunden wurde und warum viele Makefiles ihn verwenden.

Installwird jedoch nicht immer verwendet. Ich habe gesehen, cp -r lib $(DESTDIR)/libwann ein ganzer Baum voller Dinge zum Kopieren ist und ./install.shob der Entwickler lieber ein benutzerdefiniertes Skript verwendet. Viele Pakete haben eine install.shAbleitung von der mit X11 gelieferten, die installeine -t(Transformations-) Option zum Umbenennen der Zieldateien auf eine bestimmte Weise unterstützt.

Mark Plotnick
quelle
2
  1. 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 installBefehl in einem Makefile für alle in 2 genannten Installationsprozesse zu verwenden, aber andererseits installist es nicht POSIX, so dass es immer nicht der portabelste Ansatz ist, ihn immer zu verwenden

    AFAIK die meisten Tools können automatisch Makefiles wie generieren verwendet werden automakeund cmakewird verwenden install.

  2. Wird installim 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.

Graeme
quelle