Ich bin mir nicht sicher, ob dies der beste Ort ist, um diese Frage zu stellen. Bitte weisen Sie mich in die richtige Richtung, wenn es einen besseren Ort gibt.
Nehmen wir hypothetisch an, dass ich zwei Maschinen habe – A ist eine Entwicklungsmaschine und B eine Produktionsmaschine. A hat Software wie einen Compiler, der zum Erstellen von Software aus dem Quellcode verwendet werden kann, während B dies nicht tut.
Auf A kann ich einfach Software aus dem Quellcode erstellen, indem ich der üblichen Routine folge:
./configure
make
Dann kann ich die erstellte Software auf A installieren, indem ich sudo make install
ausführe . Was ich jedoch wirklich gerne tun würde, ist die Software zu installieren, die ich gerade auf B erstellt habe. Wie geht das am besten?
Es gibt ein paar Optionen, die ich in Betracht gezogen habe:
- Verwenden Sie einen Paketmanager, um Software auf B zu installieren:Dies ist keine Option für mich, da die im Paketmanager verfügbare Software sehr veraltet ist.
- Installieren Sie den Compiler und andere Build-Tools auf B:Ich möchte aufgrund verschiedener Einschränkungen lieber keine Build-Tools auf dem Produktionscomputer installieren.
- Kopieren Sie die Binärdateien manuell von A nach B:Dies ist fehleranfällig, und ich möchte sicherstellen, dass die Binärdateien auf allen Produktionsmaschinen einheitlich installiert werden.
- Nur
make
installieren Übertragen Sie auf B das Quellverzeichnis und führen Siesudo make install
aus zu B:Dies ist die beste Lösung, die ich bisher gefunden habe, aber aus irgendeinem Grund (vielleicht Uhr-Offsets)make
wird versuchen, die Software neu zu erstellen, die bereits hätte erstellt werden sollen, was fehlschlägt, da die Erstellungswerkzeuge nicht auf B installiert sind. Da meine Maschinen auch schreckliche E/A-Geschwindigkeiten haben, dauert die Übertragung des Quellverzeichnisses sehr lange .
Was wirklich nett wäre, wäre, wenn es eine Möglichkeit gäbe, eine Art Paket zu erstellen, das die erstellten Binärdateien enthält, die übertragen und ausgeführt werden können, um die Binärdateien und Konfigurationsdateien zu installieren. Gibt es ein solches Tool?
Akzeptierte Antwort:
Wenn Sie das verwenden, was Sie bisher haben, und wenn das Makefile mit GNU Autotools generiert wird, würde ich den Zielspeicherort oder Installationspfad festlegen mit
./configure --prefix=/somewhere/else/than/the/usual/usr/local
und dann ausführen
make && make install
und kopieren Sie schließlich die Dateien aus dem Präfixordner in den usr/
Ordner auf dem anderen Rechner. Dies setzt voraus, dass beide Maschinen die gleiche Architektur haben, wenn nicht, dann verwenden Sie die entsprechende Cross-Toolchain.