Instale um pacote 'recomendado' quando o usuário solicitar ação correspondente

10

Digamos que estou construindo um aplicativo para um pacote DEB, que tem como recomendado um pacote de dependência, vamos chamá-lo de package1.

Portanto, o pacote1, se instalado, pode fornecer funcionalidade extra ao meu programa, mas não diretamente relacionado à funcionalidade básica do meu programa (é por isso que é um pacote recomendado)

Assim, o usuário não escolhe inicialmente instalar o pacote recomendado (no Ubuntu Software Center você pode escolher marcando / desmarcando para instalar ou não os pacotes recomendados), mas no futuro, enquanto estiver usando o meu aplicativo, ele pede a funcionalidade correspondente.

Qual é a melhor maneira de dizer a ele que um pacote extra deve ser instalado para que essa funcionalidade funcione? Qual programa posso usar para instalar este pacote diretamente do meu programa com uma caixa de diálogo indicando como está indo o processo de instalação?

Eu quero fazer isso por meio do modo padrão e, de preferência, de uma maneira que seja independente do Linux Desktop Environment.

Em suma, eu quero uma maneira de instalar um pacote do meu programa, nem abrir o Ubuntu Software Center (via um URL do apt: //), nem fazê-lo em segundo plano.

Idealmente, seria um diálogo como o que é usado pelo Gerenciador de Atualizações (ou, para os que se lembram, do Gerenciador de Pacotes Synaptic).

PS: Eu preferiria algo que pudesse ser implementado usando C ++!

    
por hytromo 11.08.2012 / 22:50

3 respostas

1

Esta é uma pergunta antiga, mas encontrei a resposta, que é apturl .

Funciona da seguinte forma:

apturl apt:packagename e é exatamente o que eu preciso e o que o nautilus usa!

Importante, está disponível pré-instalado em muitas distribuições linux:)

    
por hytromo 29.12.2012 / 23:51
9

Se você estiver usando python, python-aptdaemon-gtk provavelmente é o caminho a percorrer. Para um bom exemplo de como fazer isso, veja em /usr/share/doc/python-aptdaemon.gtk3widgets/examples/gtk3-demo.py.gz

Você recebe instruções de instalação agradáveis, como:

No caso de usar C ++, você poderia usar a interface D-Bus do AptDaemon, mas eu não sei de nenhum exemplo e você não obteria os widgets de graça.

A API do D-Bus do AptDaemon está documentada aqui: link

Não consigo encontrar muitos tutoriais sobre o C ++ DBus na web, então sua melhor aposta é provavelmente a documentação e exemplos no libdbus-c ++ - pacote doc .

    
por andrewsomething 16.08.2012 / 00:57
5

Você pode ter um exemplo no totem media player quando ele solicita ao usuário que instale os codecs que estão faltando, ou quando você abre as opções de compartilhamento de um diretório no nautilus via clique direito, ele pede para instalar o samba.

Eu acho que eles usam o pacote sessioninstaller para fazer isso. Veja man session-installer e link

Você também pode usar o comando xdg-open apt://package : ele abrirá o gerenciador de pacotes padrão com a possibilidade de instalar o pacote (o centro de software do ubuntu em versões recentes).

    
por Marc M 14.08.2012 / 11:26