Cosa devo sapere se voglio scrivere un'applicazione che verrà eseguita su qualsiasi distribuzione Linux?


15

Sto programmando di scrivere un'app che vorrei poter eseguire su qualsiasi installazione Linux senza dover riscrivere alcun codice nel farlo (tranne forse l'interfaccia, GNOME vs KDE, ecc.).

Non ho molta esperienza nella minuzia delle differenze tra le distro, e non posso anche fornire dettagli sul progetto in quanto è appena entrato nella fase di pianificazione diversa da quella che frugerà nel kernel per interagire con il più possibile l'hardware del computer.


open source o proprietario? compilato o interpretato?
xenoterracide,

open source e compilato.

beh allora non devi preoccuparti di scrivere qualche piccola app / makefile o qualcosa del genere, che ricollegherà il tuo programma, come fa oracle
xenoterracide

Risposte:


10

Alcuni punti da tenere a mente durante lo sviluppo,

  1. Utilizzare un sistema di generazione standard
  2. Evitare percorsi di libreria con codifica rigida
  3. utilizzare invece strumenti come pkg-configtrovare i pacchetti esterni.
  4. Se l'applicazione ha una GUI, utilizzare alcuni framework come quelli wxWidgetsche possono eseguire il rendering di elementi dell'interfaccia utente nativi a seconda di dove si esegue.
  5. Evitare di creare dipendenze con pacchetti che non verranno eseguiti su altre distribuzioni.

L'unico modo per assicurarsi che l'applicazione funzioni su tutte le distribuzioni è eseguirla e testarla. Un modo per farlo è creare macchine virtuali per ogni distribuzione. VirtualBox può essere usato per fare questo. Ho circa 8 macchine virtuali sulla mia scatola per questo tipo di test.

Penso che non si possa generalizzare troppo sulla distribuzione dell'applicazione poiché ogni distribuzione utilizza un modo diverso di installare i pacchetti. Debian usa debe fedora rpm.


3
evita semplicemente percorsi di codifica rigidi, la più grande differenza tra TUTTE le distro è il loro gestore di pacchetti e dove mettono le cose. Supponiamo che inseriranno ogni singolo file e directory in un posto diverso da te.
xenoterracide,

2

Solo il mio 2c, ma ho avuto meno mal di testa con le applicazioni che arrivano con i pacchetti nei repository ufficiali o che sono compilati dalla fonte. Le applicazioni distribuite come file binari di terze parti tendono a soffrire di alcuni problemi di dipendenza. Di solito dovrò rintracciarli e risolverli manualmente.

Quindi, se dovessi rilasciare un'app Linux, lavorerei per comprimerla e inserirla nei repository ufficiali. Altrimenti, lo distribuirei in formato sorgente e farei compilare l'utente per il proprio sistema.


2

Se stai scrivendo per Linux non incorporato, la cosa principale da tenere a mente è che distribuzioni diverse avranno una raccolta diversa di versioni di libreria. Quindi dovresti impostare una baseline sufficientemente vecchia. Poiché Debian si aggiorna lentamente, Debian stable (o oldstable quando esiste, nei pochi mesi successivi al rilascio) tende ad essere una scelta ragionevole.

Dovrai impacchettare separatamente per ogni distribuzione. Se la tua applicazione è open source e di successo, puoi contare su qualcuno che la raccoglie e contribuisce al packaging, quindi non è un'abilità essenziale. A parte l'imballaggio, le differenze tra le distribuzioni influiscono principalmente sull'amministrazione del sistema, non sullo sviluppo o sull'uso quotidiano.

Se hai intenzione di patchare il kernel, dovrai testare con più distribuzioni poiché ogni distribuzione ha le sue patch che potrebbero causare incompatibilità e ogni distribuzione ha impostazioni di userland che possono fare affidamento su diversi set di interfacce del kernel disponibili (ad es. Requisiti per alcune cose non essere moduli).

Nota che ciò che ho scritto sopra non è vero se vuoi che la tua applicazione funzioni su sistemi embedded (qui significa tutto ciò che non è un server, desktop o laptop), che anche quando eseguono un kernel Linux spesso non hanno le solite librerie, a partire da Glibc che viene evitato a favore di µClibc , dietlibc , Bionic , ecc.



0

Le distribuzioni si differenziano principalmente per le impostazioni / configurazioni predefinite del packaging e dell'applicazione. Ogni codice che viene eseguito in un'architettura determinata deve essere eseguito su ogni distro per quell'architettura. Inoltre puoi facilmente eseguire le app GNOME in KDE e viceversa, così puoi scegliere quella che si adatta meglio a te / alla tua base di utenti e il gioco è fatto!


0

La cosa principale è scegliere una lingua. In quale lingua verrà eseguito? Se vuoi davvero eseguire qualsiasi distribuzione Linux, puoi scriverlo in Python. Qualsiasi app python che verrà eseguita su Linux verrà (sostanzialmente) eseguita su qualsiasi distribuzione Linux con 0 modifiche.

Python ha anche dei buoni leganti GTK e Qt. Non ho mai lavorato con GTK, ma PyQt è davvero fantastico con cui lavorare.

I vantaggi di Python è che probabilmente non avrai bisogno di compilare alcuna estensione (dipende totalmente da ciò che stai scrivendo. Anche se ne hai bisogno, è abbastanza facile.) E hai anche un'ottima fonte di distribuzione tramite pypi . L'installazione di programmi Python da lì di solito è persino più semplice del repository dei pacchetti di distribuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.