Ho bisogno di sviluppare / utilizzare un gestore di pacchetti per un sistema Linux incorporato con le seguenti proprietà:
- Un master controlla completamente quali pacchetti devono essere installati (lo slave non ha la possibilità di chiedere nulla al master)
- La velocità di download sul dispositivo è lenta e non solo tutto ciò che è disponibile nella distribuzione principale può essere scaricato nella destinazione
- L'aggiornamento / declassamento dei pacchetti deve essere possibile
- Dovrebbe essere possibile sostituire il gestore pacchetti sul sistema stesso
- Possibilità di sostituire il sistema operativo stesso
- È facile recuperare dai guasti (perdita di potenza, ...), specialmente quando si considerano i due punti sopra
- I blocchi sullo slave che devono essere cancellati manualmente non sono in alcun modo consentiti
- Se un nuovo (meta?) pacchetto sostituisce un vecchio (meta) pacchetto e rimangono alcuni pacchetti non necessari, vengono rimossi, per risparmiare spazio sul dispositivo
- Definire alcune forme di ordine o dipendenza per installare i pacchetti
- Forse è necessaria una qualche forma di un sistema di recupero (come rilevare che è necessario, come avviarlo, ...)
Alcuni punti ripetono solo altri punti, e alcuni punti non sono necessariamente qualcosa che il gestore pacchetti deve fare.
Ho iniziato a copiare idee da dpkg (specialmente come installa i file e li rinomina in seguito per ridurre il lasso di tempo in cui può accadere qualcosa di brutto) e utilizzare il formato deb per i pacchetti stessi (non usando tutti i campi).
Non sono sicuro di me stesso, se questa domanda appartiene ai programmatori, ma invece di chiedere una soluzione o qualcosa del genere, sono più interessato se altri programmatori affrontano lo stesso problema e se ci sono risorse notevoli come questo tipo del problema è risolto. Personalmente mi è successo troppe volte che i dispositivi embedded potrebbero essere quasi distrutti da un aggiornamento software senza alcuna possibilità (senza hardware speciale) per il ripristino.
Alcuni link che potrebbero essere pertinenti per gli altri sono i seguenti:
Potrei anche fornire una descrizione simile allo pseudo codice per ciò che intendo fare.