Qual è il modo migliore per pubblicare un solo binario domanda di diverse distribuzioni di Linux?

StackOverflow https://stackoverflow.com/questions/1502543

Domanda

Ho un closed-source applicazioni Linux che voglio distribuire. Questa applicazione utilizza wxWidgets / GTK per cui v'è una lista enorme di librerie condivise (60+) che questa applicazione dipende.

Qual è il modo preferito di pubblicare l'applicazione e supportare il numero massimo di distribuzioni?

  • E 'per costruire la domanda di ciascuna distribuzione supportata e pubblicarli separatamente? Questo ha lo svantaggio di essere complicati da costruire (un chroot e una build per distribuzione) e funziona solo su distribuzione supportata.

  • E 'per aggiungere tutte le librerie condivise nel programma di installazione e li usa con la variabile LD_LIBRARY_PATH ENV (come VMware)? Questo ha l'inconveniente di aumentare la dimensione del programma di installazione.

  • E 'per costruire un'applicazione completamente statica? Questo non è certamente possibile in quanto si romperà alcune licenze.

  • E 'un mix di quella o un'altra opzione? Come fanno i venditori più commerciali pubblicano la propria grafica (preferibilmente basato su GTK) applicazione?

È stato utile?

Soluzione

Si dovrebbe avere uno sguardo alla Linux Standard Base . E 'progettato specificamente per aiutare le persone nella tua posizione. Esso definisce un ambiente che gli sviluppatori di applicazioni terze parti possono contare su - quindi non è impostato versione di libc e altre librerie, e alcuni programmi e directory vivono in luoghi noti. Tutto il sostegno alla distribuzione Linux principale LSB.

Detto questo, si dovrebbe comunque probabilmente confezionare il risultato specifico per ogni distribuzione maggiore -. Solo in modo che i clienti possono gestire la vostra applicazione con i loro strumenti di gestione dei pacchetti familiari

Altri suggerimenti

In sostanza, ci sono due modi. Si può scegliere sia, se lo si desidera.

Il primo modo è il modo in cui giochi comuni e come farlo. Fare un lib / sottodirectory, uso LD_LIBARY_PATH e comprendono quasi ogni libreria condivisa è necessario. Che assicura un'esperienza senza dolore dal tuo utente, ma fa di installazione più grande e probabilmente il footprint di memoria più grande pure. Non avrei nemmeno tentare di riutilizzare le librerie preesistenti, in quanto tenderebbero a scomparire come gli aggiornamenti sono fatti per il sistema.

Il secondo modo è quello di realizzare pacchetti di distribuzione. Questi non sono generalmente così difficile da fare, e sarà quindi integrare perfettamente con le distribuzioni, e sarà, inoltre, sembrano molto più accogliente per i vostri clienti. I 2 lati negativi sono: Avrai bisogno di fare questo per ogni distribuzione (Debian, Ubuntu, SuSE, RedHat è probabilmente un buon inizio), e sarà necessario per mantenere la loro: col passare del tempo, alcune librerie non saranno più disponibili in una versione specifica, e quindi l'utente riceverà problemi con le dipendenze.

Nel vostro installatore, verificare quali librerie sono installati e quindi scaricare i binari per quelli che non lo sono.

Per ulteriori comodità degli utenti, se non v'è alcuna connessione a Internet, hanno il programma di installazione genera una chiave che è possibile inserire sul tuo sito web per ricevere un archivio ZIP che si può quindi alimentare al programma di installazione.

Per il massimo del comfort, controllare che le librerie sono disponibili su distro di destinazione e chiedere all'utente di utilizzare lo strumento di amministrazione standard per installarli. In questo modo, non inquinerà il computer con diverse versioni della stessa libreria.

Detto questo: Potrebbe essere più intelligente di mettere il vostro codice di preziose in una libreria di collegamento e quindi prevedere che, come blob binario in un pacchetto sorgente. In questo modo, il codice è protetto come lo sarebbe in un binario puro e gli utenti possono compilare il codice colla sul loro sistema preferito, senza dover preoccuparsi di cose.

Voglio dire: Quanto vale la pena è la parte del codice che definisce l'interfaccia utente? Quanto si perde quando qualcuno ruba che?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top