Creare un pacchetto DEB (NON è la solita domanda)

3 risposte [Ultimo contenuto]
Ritratto di Nobun
Nobun
(Junior)
Offline
Junior
Iscritto: 01/06/2008
Messaggi: 11

Ho sviluppato un mio programma, rilasciato sotto licenza GPL3.

Attualmente è distribuito in questi pacchetti:

LINUX
1 pacchetto .tar.gz con il sorgente ottimizzato per una installazione facile (necessario prima verificare l'esistenza di 2 requisiti indicati nel README)
2 pacchetti .tar.gz contenenti l'eseguibile compilato sotto Ubuntu8.04
1 pacchetto sorgente linux

WINDOWS:
2 pacchetti binari windows
1 pacchetto sorgente windows (praticamente identico a prima, salvo un paio di differenze dovute al filesystem)

-------

Ora vorrei sostituire i due pacchetti .tar.gz con dei pacchetti DEB che risolvano le dipendenze (non ha senso per me un .deb sorgente, visto che il primo pacchetto sorgente non fa "installare" il programma nelle cartelle root e non chiede permessi di amministrazione... e poi è facile individuare cosa rimuovere)

Il primo problema che mi viene in mente è come posso impostare le dipendenze nel pacchetto DEB. Considerando che non mi è molto chiara la grammatica da usare nella creazione di un DEB.

Allora: io presumo che per trovare tutte le dipendenze del binario (e quindi non solo le librerie "aggiuntive" necessarie per compilare il sorgente, ma tutte le librerie effettivamente linkate dinamicamente) debba guardare la lista di TUTTE le librerie che ottengo utilizzando il comando ldd giusto?

Ok, una volta ottenuta la lista otterrò una serie di

pincopallino-etc-so.3

Devo scriverle tutte nel campo DEPENDS, ma come devo scriverle? con l'estensione .so.3 oppure con il sistema delle versioni. Perché tutti gli esempi che ho visto non riportano il nome esatto del file di libreria richiamato, ma ad es. il nome generico della libreria con un <= numero versione.

Come faccio a sapere cosa devo scrivere ESATTAMENTE nella lista delle librerie da far installare a Synaptic?

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Le dipendenze sono pacchetti, non librerie. Devi indicare il nome del pacchetto che fornisce la libreria. Se non sai qual è usa "dpkg --search". La versione va indicata solo se il tuo programma fa uso di funzionalità che non esistevano nelle versioni precedenti.

Ritratto di Moreno
Moreno
(Geek)
Offline
Geek
Iscritto: 16/06/2005
Messaggi: 94

Ciao

Ecco i primi link che mi riporta Google

http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
http://www.linuxdevices.com/articles/AT8047723203.html

Ciao Ciao, Moreno

Ebbene sì confesso sono un infiltrato di http://www.mandrakeitalia.org ma mi piace girare il Mondo.
Profilo

Ritratto di Nobun
Nobun
(Junior)
Offline
Junior
Iscritto: 01/06/2008
Messaggi: 11

Quote:

mcortese ha scritto:
Le dipendenze sono pacchetti, non librerie. Devi indicare il nome del pacchetto che fornisce la libreria. Se non sai qual è usa "dpkg --search". La versione va indicata solo se il tuo programma fa uso di funzionalità che non esistevano nelle versioni precedenti.

Ti ringrazio del chiarimento, ma ci sono ancora alcune cose che non mi tornano. Nel senso:
Io quando ho compilato il mio programma (composto da due eseguibili, uno linkato con la libreria aggiuntiva allegro e il secondo con la libreria aggiuntiva qt4) ho prodotto un binario che è linkato dinamicamente NON SOLO con allegro e qt4, ma anche con le altre librerie di sistema utilizzate dal programma che, anche se non vengono espressamente indicate nella linea di comando - essendo "standard" - vengono comunque utilizzate oppure richiamate (es., se non ricordo male, Allegro si appoggia ad XFree86 per alcune operazioni di grafica su X).

Ora se ldd mi da che il programma è linkato a pincopalla.so.3 e mi trovo ad avere una libreria aggiornata tipo pincolalla.so.4 chi mi dice che il programma funzioni?

Come faccio a risalire al pacchetto esatto delle librerie che servono?

Grazie mille e scusate la banalità della domanda.

----

Per Moreno: grazie mille per i link (delle letture in più fanno sempre bene, anche se ho letto diverse pagine sull'argomento). Il mio problema, per ora, non è tanto capire il metodo per realizzare un pacchetto DEB, quanto piuttosto come compilare CORRETTAMENTE alcuni campi, tra cui il campo delle dipendenze (quello che ho chiesto ora) il campo dello script di disinstallazione (che chiederò più avanti, nel senso di avere consigli su come scrivere un corretto script di disinstallazione) etc
Insomma, essere sicuro che, una volta creato, il pacchetto funzioni bene (che controlli le dipendenze correttamente, dando quindi una certezza di funzionamento del programma dopo l'installazione e che possa essere disinstallabile senza problemi come già accade nella versione sorgente)