Non sono sicuro che questo sia il posto migliore per chiedere questo:per favore indirizzami nella giusta direzione se c'è un posto migliore.
Diciamo, ipoteticamente, che ho due macchine:A è una macchina di sviluppo e B è una macchina di produzione. A ha un software come un compilatore che può essere utilizzato per creare software dal sorgente, mentre B no.
Su A, posso facilmente creare software dal sorgente seguendo la solita routine:
./configure
make
Quindi, posso installare il software creato su A eseguendo sudo make install
. Tuttavia, quello che mi piacerebbe davvero fare è installare il software che ho appena creato su B. Qual è il modo migliore per farlo?
Ci sono alcune opzioni che ho considerato:
- Utilizzare un gestore di pacchetti per installare il software su B:questa non è un'opzione per me perché il software disponibile nel gestore di pacchetti è molto obsoleto.
- Installa il compilatore e altri strumenti di compilazione su B:preferirei non installare strumenti di compilazione sulla macchina di produzione a causa di vari vincoli.
- Copia manualmente i file binari da A a B:questo è soggetto a errori e vorrei assicurarmi che i file binari siano installati in modo coerente su tutte le macchine di produzione.
- Installa solo
make
su B, trasferisci la directory di origine ed eseguisudo make install
su B:questa è la soluzione migliore che ho trovato finora, ma per qualche motivo (forse offset di clock),make
tenterà di ricostruire il software che avrebbe dovuto essere già compilato, il che non riesce poiché gli strumenti di compilazione non sono installati su B. Poiché anche le mie macchine hanno velocità di I/O terribili, il trasferimento della directory di origine richiede molto tempo .
Sarebbe davvero bello se ci fosse un modo per creare una sorta di pacchetto contenente i binari compilati che possono essere trasferiti ed eseguiti per installare i binari ei file di configurazione. Esiste uno strumento del genere?
Risposta accettata:
Usando quello che hai finora e se il makefile è generato con GNU autotools, imposterei la posizione di destinazione o il percorso di installazione con
./configure --prefix=/somewhere/else/than/the/usual/usr/local
e quindi esegui
make && make install
e infine copia i file dalla cartella del prefisso in usr/
cartella nell'altra macchina. Ciò presuppone che entrambe le macchine abbiano la stessa architettura, in caso contrario, utilizzare la corrispondente toolchain incrociata.