PDA

Visualizza la versione completa : Sviluppare applicazione Linux


billiejoex
18-09-2006, 14:07
Salute a tutti. Ero in dubbio se postare in "Programmazione" o "Linux"; ho deciso di postare qui.
Il problema questo: ho sviluppato un server FTP multi piattaforma che vorrei rendere "installabile" su piattaforme Linux sotto forma di servizio.
Il problema nasce dal fatto che le varie distribuzioni Linux adottano delle convenzioni differenti. Non posso, ad esempio, decidere che:

- L'eseguibile principale vada in /usr/sbin. Magari sotto la distribuzione X tale path non esiste.
- Lo script di avvio vada in /etc/init.d per lo stesso motivo. Magari la gestione dei run level anche differente.
- etc...

Volevo sapere, nel caso in cui vi siano sviluppatori in questo forum, come viene gestito questo problema. Sono stati scritti degli 'standard' da rispettare in questi casi?
Come ha fatto lo sviluppatore del demone xxx a creare un source package che, se compilato, riesce ad installare il programma su qualunque piattaforma UNIX?

Purtroppo mi rendo conto di essere totalmente ignorante riguardo queste tematiche.
Magari anche una qualche dritta sui vari sistemi di pacchettizzazione (deb, rpm, depot ecc...) mi farebbe comodo.

Ringrazio anticipatamente.

billiejoex
18-09-2006, 14:51
PS - Quasi dimenticavo... Se volessi inserirci anche un bel man, per la mia applicazione? Come si fa in questi casi (ignoranza totale)? =)

Ikitt
18-09-2006, 20:42
Originariamente inviato da billiejoex
Il problema nasce dal fatto che le varie distribuzioni Linux adottano delle convenzioni differenti.

Certamente: ma non cosi` tanto differenti!
In particolare riguardo la strutturazione del FS ormai c'e` una certa standardizzazione (vedi il FileSystem Hierarchy Standard (http://www.pathname.com/fhs se ben ricordo)).
Puoi assumere che le varie distro rispettino tale standard, e lavartene legittimamente le mani se non e` cosi`. Le maggiori distro, comunque, sono piu` o meno tutte FHS compliant, e sicuramente per cose macroscopiche come /usr/sbin!


[...]
- Lo script di avvio vada in /etc/init.d per lo stesso motivo. Magari la gestione dei run level anche differente.
- etc...

Purtroppo per gli script di avvio la situazione e` un po` spinosa. La cosa meno peggio e` fornire un tot di script precotti (o uno sufficientemente generico) per le maggiori distribuzioni.


[...]
Come ha fatto lo sviluppatore del demone xxx a creare un source package che, se compilato, riesce ad installare il programma su qualunque piattaforma UNIX?
Ci sono gli autotools, anche se molti preferirebbero che non ci fossero:
automake + autoconf + libtool. Se riesci a domarli, e non e` banale, danno un grosso aiuto riguardo la portabilita`; certamente anche il codice dovra` essere strutturato in modo acconcio, ma un sacco di aspetti specifici della piattaforma riesci a gestirli, o quantomeno ad individuarli, grazie ai suddetti.

Ci sono anche alternative piu` moderne (cmake? scons?) ma meno diffuse.



Magari anche una qualche dritta sui vari sistemi di pacchettizzazione (deb, rpm, depot ecc...) mi farebbe comodo.
Per rpm trovi di tutto e di piu` su "maximum rpm", un libro liberamente scaricabile, spero sia ancora disponibile, era cosi` qualche tempo fa.
Per deb la situazione e` un po` piu` ferraginosa, potresti cominciare dalla "maintainer guide".

Rimane sempre valida l'opzione di prendere un pacchetto sorgente (.deb o .rpm) e guardare com'e` fatto.
Idem per le manpagine, quelle che ho scritto le ho fatte a partire da (semplici) manpagine esistenti con un grezzo procedimento di try 'n' error.
L'alternativa e` studiare, se ben ricordo, il formato di troff/nroff.

Enrico81
18-09-2006, 20:47
http://it.wikipedia.org/wiki/Linux_Standard_Base


Non sono uno sviluppatore ma forse questo fa al caso tuo.


:ciauz:

billiejoex
19-09-2006, 11:48
Certamente: ma non cosi` tanto differenti!
In particolare riguardo la strutturazione del FS ormai c'e` una certa standardizzazione (vedi il FileSystem Hierarchy Standard (http://www.pathname.com/fhs se ben ricordo)).
Puoi assumere che le varie distro rispettino tale standard, e lavartene legittimamente le mani se non e` cosi`. Le maggiori distro, comunque, sono piu` o meno tutte FHS compliant, e sicuramente per cose macroscopiche come /usr/sbin!


Citazione:
[...]
- Lo script di avvio vada in /etc/init.d per lo stesso motivo. Magari la gestione dei run level anche differente.
- etc...

Purtroppo per gli script di avvio la situazione e` un po` spinosa. La cosa meno peggio e` fornire un tot di script precotti (o uno sufficientemente generico) per le maggiori distribuzioni.


Citazione:
[...]
Come ha fatto lo sviluppatore del demone xxx a creare un source package che, se compilato, riesce ad installare il programma su qualunque piattaforma UNIX?
Ci sono gli autotools, anche se molti preferirebbero che non ci fossero:
automake + autoconf + libtool. Se riesci a domarli, e non e` banale, danno un grosso aiuto riguardo la portabilita`; certamente anche il codice dovra` essere strutturato in modo acconcio, ma un sacco di aspetti specifici della piattaforma riesci a gestirli, o quantomeno ad individuarli, grazie ai suddetti.

Ci sono anche alternative piu` moderne (cmake? scons?) ma meno diffuse.


Citazione:

Magari anche una qualche dritta sui vari sistemi di pacchettizzazione (deb, rpm, depot ecc...) mi farebbe comodo.
Per rpm trovi di tutto e di piu` su "maximum rpm", un libro liberamente scaricabile, spero sia ancora disponibile, era cosi` qualche tempo fa.
Per deb la situazione e` un po` piu` ferraginosa, potresti cominciare dalla "maintainer guide".

Rimane sempre valida l'opzione di prendere un pacchetto sorgente (.deb o .rpm) e guardare com'e` fatto.
Idem per le manpagine, quelle che ho scritto le ho fatte a partire da (semplici) manpagine esistenti con un grezzo procedimento di try 'n' error.
L'alternativa e` studiare, se ben ricordo, il formato di troff/nroff.
Ti ringrazio molto per le info che mi sono state davvero molto utili.
Immaginavo che la questione linux fosse molto controversa.
Mi armo di pazienza e vedo cosa riesco a combinare.
Per adesso ti ringrazio.

tagweb
19-09-2006, 12:26
o dividi il tuo lavoro in pacchetti precompilati deb, rpm, ecc.. in modo da personalizzare la cosa a seconda della distro o imho fai un installer che chiede la path e non ti rompi. Magari fai scegliere il tipo di distro cosi' ha delle path di default sensate a prova di utente che scrive la path nella sua home.

Loading