Come fare in modo che il pacchetto Debian generi due pacchetti con un archivio sorgente upstream?


14

Sto confezionando qualcosa per il mio PPA. L'origine upstream è un .tar.gzarchivio basato su Makefile.

Poiché questo pacchetto ha una quantità significativa di dati indipendenti dall'architettura, sarebbe saggio che gli script di generazione generino due pacchetti:

  • pacchetto
  • pacchetto -data

Come posso impostarlo? Ho modificato il mio controlfile Debian per generare due pacchetti, ma non ho idea di come ottenere i file giusti nel pacchetto giusto.

Dato che i file di dati sono attualmente tutti installati tramite Makefile, mi sono perso un po 'qui.

Risposte:


14

Questo è un posto dove ho sempre trovato carente la documentazione. Praticamente ho imparato solo come funziona osservando come viene fatto in altri pacchetti. Come per la maggior parte delle cose nel packaging Debian, ci sono alcuni modi per farlo. Trovo che il modo più semplice sia usare i debian/package.installfile. Ecco un esempio di un pacchetto su cui ho lavorato, immaginazione (ramo bzr) .

Innanzitutto, dobbiamo creare il pacchetto in debian/control. Adesso ci sono tre stanze. Uno per il pacchetto sorgente e uno per ciascun pacchetto binario. Si noti che il pacchetto foo-data dovrebbe essere Architecture: all. Nota anche che l'immaginazione dipende imagination-common (= ${source:Version}).

Quindi, creiamo un debian/imagination.installfile. Questo contiene i file o percorsi specifici che vogliamo finire nel pacchetto di immaginazione. Per questo pacchetto vogliamo tutti i file dipendenti dall'architettura. Il file desktop è incluso come deve dire con il binario che chiama nella sua Exec:linea.

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

Dobbiamo creare un debian/imagination-common.installfile. Ciò conterrà tutti i file, le immagini, le traduzioni, i documenti e simili indipendenti dall'architettura.

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install descrive cosa sta realmente succedendo qui:

forse hai un pacchetto di grandi dimensioni che crea più pacchetti binari. È possibile utilizzare il Makefile upstream per installarlo tutto in debian / tmp, quindi utilizzare dh_install per copiare directory e file da lì nelle directory di compilazione del pacchetto appropriate.

Che cosa intende per "la corretta pacchetto directory costruire" è che entro la fine del processo di generazione, tutto ciò che sarà nella risultante foo.debsarà trovato in src/debian/foo. I file che finiranno si foo-data.debtroveranno in src/debian/foo-data. Essendo debian/rulesessenzialmente solo un Makefile, puoi iniziare a immaginare altri modi per ottenere lo stesso risultato.


Grazie mille! Spiegazione molto chiara e funziona perfettamente.
Nathan Osman,
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.