Können aus dem Quellcode erstellte Binärdateien auf einem zweiten Computer installiert werden?

Können aus dem Quellcode erstellte Binärdateien auf einem zweiten Computer installiert werden?

Ich weiß nicht, ob dies der beste Ort für diese Frage ist. Wenn es einen besseren Ort gibt, weisen Sie mich bitte an den richtigen Ort.

Nehmen wir einmal an, ich habe zwei Maschinen – A ist eine Entwicklungsmaschine und B eine Produktionsmaschine. A hat Software wie einen Compiler, mit dem man Software aus dem Quellcode erstellen kann, B hingegen nicht.

Unter A kann ich problemlos Software aus dem Quellcode erstellen, indem ich der üblichen Routine folge:

./configure
make

Anschließend kann ich die erstellte Software auf A installieren, indem ich ausführe sudo make install. Was ich jedoch wirklich möchte, ist, die Software, die ich gerade erstellt habe, auf B zu installieren. Wie geht das am besten?

Ich habe einige Optionen in Betracht gezogen:

  1. Mithilfe eines Paketmanagers Software auf B installieren: Für mich ist das keine Option, da die im Paketmanager verfügbare Software sehr veraltet ist.
  2. Installieren Sie den Compiler und andere Build-Tools auf B: Aufgrund verschiedener Einschränkungen möchte ich die Build-Tools lieber nicht auf der Produktionsmaschine installieren.
  3. Die Binärdateien manuell von A nach B kopieren: Dies ist fehleranfällig und ich möchte sicherstellen, dass die Binärdateien auf allen Produktionsmaschinen einheitlich installiert werden.
  4. Nur makeauf B installieren, das Quellverzeichnis übertragen und sudo make installauf B ausführen: Dies ist die beste Lösung, die ich bisher gefunden habe. Aus irgendeinem Grund (vielleicht aufgrund von Taktverschiebungen) makewird jedoch versucht, die Software neu zu erstellen, die bereits erstellt sein sollte. Dies schlägt fehl, da die Build-Tools nicht auf B installiert sind. Da meine Maschinen außerdem schreckliche E/A-Geschwindigkeiten aufweisen, dauert die Übertragung des Quellverzeichnisses sehr lange.

Was wirklich schön wäre, wäre, wenn es eine Möglichkeit gäbe, eine Art Paket mit den erstellten Binärdateien zu erstellen, das übertragen und ausgeführt werden kann, um die Binärdateien und Konfigurationsdateien zu installieren. Gibt es ein solches Tool?

Antwort1

Wenn Sie das bisherige verwenden und das Makefile mit GNU Autotools generiert wird, würde ich Folgendes festlegen:Zielspeicherort oder Installationspfadmit

./configure --prefix=/somewhere/else/than/the/usual/usr/local

und dann laufen

make && make install

und kopieren Sie abschließend die Dateien aus dem Präfixordner in den usr/Ordner auf dem anderen Computer. Dabei wird vorausgesetzt, dass beide Computer die gleiche Architektur haben. Wenn nicht, verwenden Sie die entsprechende Cross-Toolchain.

Antwort2

Der sauberste Weg wäre wahrscheinlich, die Verpackungstools des Betriebssystems zu verwenden, um ein Paket für die Anwendung zu erstellen und es wie jedes andere zu installieren. Die Vorgehensweise variiert je nach Paketmanager und System und es gibt eine gewisse Lernkurve.

Die manuelle Installation könnte etwas einfacher sein, wenn das Quellpaket die Installation der Software in einem Unterverzeichnis (z. B. /opt/packagenameoder /usr/local/packagename) unterstützt. Kompilieren und installieren Sie auf einem Computer und kopieren Sie dann nur dieses Unterverzeichnis an denselben Speicherort auf dem anderen Computer. Das Verzeichnis sollte alle relevanten Dateien enthalten und nur diese.

Wenn Sie Änderungen in benötigen /etc, müssen Sie diese manuell vornehmen. Um tatsächlich auf die Binärdateien zugreifen zu können, müssen Sie sie entweder mit einem symbolischen Link auf ein Verzeichnis in Ihrem Pfad verknüpfen oder das Paketverzeichnis binzum Pfad hinzufügen. Die meisten Pakete, die autoconf/ verwenden, automakekönnen das --prefixArgument an das ./configureSkript übergeben, um den Installationspfad festzulegen.

In jedem Fall müssen Sie herausfinden, welche Bibliotheken usw. die von Ihnen kompilierte Anwendung benötigt, und sicherstellen, dass Sie auf beiden Computern kompatible Versionen haben.

verwandte Informationen