Hai notato correttamente che un pacchetto ha un nome, un autore e una versione. Questi tre identificano un pacchetto in modo univoco. Se devi mappare questo file su un file system, puoi scegliere una struttura come
./plugins/author-id/package-id/version/
Ciò consente a due autori di offrire pacchetti diversi con lo stesso nome e più versioni di un pacchetto da installare contemporaneamente. Se non è necessario il supporto per più versioni, puoi eliminare il livello version
.
La domanda è come assegnare gli ID autore. Java usa il semplice trucco di usare semplicemente i nomi di dominio, poiché dovrebbero essere comunque unici. Questo funziona bene se ci si può aspettare che ogni sviluppatore possieda un dominio (questo sembrerebbe essere il caso nello sviluppo di applicazioni web). Tuttavia, Java inverte l'ordine dei sottodomini in modo che le informazioni gerarchicamente più importanti siano nella parte anteriore del nome. Il dominio dev.example.com
è mappato al prefisso com.example.dev
.
È utile avere un file in ogni pacchetto che descrive i metadati. Questo file potrebbe dichiarare informazioni sulle dipendenze, un riepilogo di ciò che fa questo pacchetto, un numero di versione.
Con questa struttura, l'installazione o l'aggiornamento di un pacchetto funzionerebbe in questo modo:
- Il nuovo pacchetto viene decompresso in una directory temporanea e vengono letti i metadati.
- La directory dei moduli installati viene cercata per un pacchetto con lo stesso nome dello stesso autore. Se non viene trovata alcuna corrispondenza, questo pacchetto è installato.
- Se viene trovata una corrispondenza e il numero di versione è più alto, il vecchio pacchetto viene rimosso e il nuovo pacchetto installato.
- Prima dell'installazione, la presenza delle dipendenze è verificata.
Ci sono tonnellate di gestori di pacchetti da cui puoi rubare idee. Dai un'occhiata a CPAN (Perl), pip (Python), gem (Ruby), npm (Node.js). Ognuno di questi ha alcuni punti di forza e alcuni punti deboli.