Installa un pacchetto 'raccomandato' quando l'utente richiede un'azione corrispondente

10

Diciamo che sto costruendo un'applicazione per un pacchetto DEB, che ha come dipendenza un pacchetto consigliato, chiamiamolo pacchetto1.

Quindi, package1, se installato, può fornire funzionalità extra al mio programma, ma non direttamente correlate alle funzionalità di base del mio programma (ecco perché è un pacchetto consigliato)

Quindi, l'utente non sceglie inizialmente di installare il pacchetto consigliato (in Ubuntu Software Center è possibile selezionare spuntando / deselezionando per installare o non installare i pacchetti consigliati), ma in futuro, mentre si utilizza la mia applicazione, richiede la funzionalità corrispondente.

Qual è il modo migliore per dirgli che è necessario installare un pacchetto aggiuntivo per far funzionare questa funzionalità? Quale programma posso usare per installare questo pacchetto direttamente dal mio programma con una finestra di dialogo che indica come sta andando il processo di installazione?

Voglio farlo tramite il modo predefinito e, preferibilmente, un modo che è indipendente da Linux Desktop Environment.

In breve, voglio un modo per installare un pacchetto dal mio programma né aprendo Ubuntu Software Center (tramite un URL apt: //) né eseguendolo in background.

Idealmente, sarebbe una finestra di dialogo come quella che viene utilizzata dal Gestore aggiornamenti (o, per quelli che ricordano, dal Gestore pacchetti Synaptic).

PS: preferirei qualcosa che potrebbe essere implementato usando C ++!

    
posta hytromo 11.08.2012 - 22:50

3 risposte

1

Questa è una domanda vecchia, ma ho trovato la risposta, che è apturl .

Funziona come segue:

apturl apt:packagename ed è esattamente ciò di cui ho bisogno e che cosa usa nautilus!

È importante che sia preinstallato su molte distribuzioni Linux:)

    
risposta data hytromo 29.12.2012 - 23:51
9

Se stai usando python, python-aptdaemon-gtk è probabilmente la strada da percorrere. Per un buon esempio di come farlo, guarda /usr/share/doc/python-aptdaemon.gtk3widgets/examples/gtk3-demo.py.gz

Riceverai richieste di installazione come:

Nel caso dell'utilizzo di C ++, potresti utilizzare l'interfaccia D-Bus AptDaemon, ma non conosco esempi e non avresti i widget gratis.

L'API D-Bus di AptDaemon è documentata qui: link

Non riesco a trovare molto in termini di tutorial di C ++ DBus sul web, quindi la tua migliore possibilità è probabilmente la documentazione e gli esempi in libdbus-c ++ - doc pacchetto.

    
risposta data andrewsomething 16.08.2012 - 00:57
5

Potresti fare un esempio sul totem player multimediale quando chiede all'utente di installare i codec mancanti, o quando apri le opzioni di condivisione di una directory in nautilus tramite il tasto destro, ti chiede di installare samba.

Penso che utilizzino il pacchetto sessioninstaller per farlo. Vedi man session-installer e link

Potresti anche usare il comando xdg-open apt://package : aprirà il gestore pacchetti predefinito con la possibilità di installare il tuo pacchetto (centro software ubuntu nelle versioni recenti).

    
risposta data Marc M 14.08.2012 - 11:26

Leggi altre domande sui tag