Posso chiamare altri comandi dpkg o apt- * all'interno dei miei script preinst?


9

Come parte del mio file .deb personalizzato (interno) che verrà distribuito sui dispositivi Ubuntu 12.04, ho bisogno di aggiungere diversi repository PPA, eseguire apt-get update e quindi installare pacchetti da quei PPA.

Questo può essere fatto all'interno degli script .preinst o .postinst nel mio file .deb?

Suppongo che quando il mio file .deb è installato ( sudo dpkg -i testing.deb) che alcune serrature o meccanismi probabilità esistono che mi avrebbe impedito di chiamare alcuni comandi come add-apt-repository, apt-get updatee apt-get install.

È un presupposto corretto?


Risposte:


7

Hai ragione. Gli script del manutentore non devono apportare modifiche agli stati apt o dpkg, ad eccezione delle modifiche che verranno apportate durante l'installazione del pacchetto.

L'installazione di un file in /etc/apt/sources.list.d, tuttavia, va bene. La maggior parte dei pacchetti che ricoprono un ruolo come "installa questo pacchetto per aggiungere il repository APT X al tuo sistema" semplicemente lo fanno (invece di chiamare add-apt-repository). È anche comune rilasciare la chiave pubblica GPG utilizzata per firmare il repository /etc/apt/trusted.gpg.d.

Se si desidera semplificare l'esecuzione da parte dell'utente delle fasi di installazione aggiuntive per il proprio software, è possibile che si desideri semplicemente spedire uno script che esegue il lavoro e dire all'utente di eseguirlo manualmente.

Ma se vuoi davvero, davvero chiamare apt-get updateo apt-get install, ecc. Automaticamente, e non ti dispiace che il tuo pacchetto sarà del tutto inaccettabile in Debian o Ubuntu, e i tuoi utenti sono d'accordo con il pacchetto che agisce in quel modo, allora potresti forse mettere qualcosa in /etc/cron.dcui verifica la presenza di eventuali blocchi apt o dpkg esistenti e, se non ne sono presenti, esegue i passaggi di installazione aggiuntivi e provvede affinché tali passaggi non vengano eseguiti nuovamente. Non consiglio questo approccio.

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.