Digamos que estoy creando una aplicación para un paquete DEB, que tiene como dependencia recomendada un paquete, llamémoslo paquete1.
Entonces, el paquete 1, si está instalado, puede proporcionar funcionalidad adicional a mi programa, pero no está directamente relacionado con la funcionalidad básica de mi programa (es por eso que es un paquete recomendado)
Entonces, el usuario no elige inicialmente instalar el paquete recomendado (en el Centro de software de Ubuntu puede elegir marcando / desmarcando para instalar o no instalar los paquetes recomendados), pero en el futuro, mientras usa mi aplicación, solicita La funcionalidad correspondiente.
¿Cuál es la mejor manera de decirle que se debe instalar un paquete adicional para que esta funcionalidad funcione? ¿Qué programa puedo usar para instalar este paquete directamente desde mi programa con un cuadro de diálogo que indica cómo va el proceso de instalación?
Quiero hacer esto a través de la forma predeterminada y, preferiblemente, de manera independiente del entorno de escritorio Linux.
En resumen, quiero una forma de instalar un paquete desde mi programa, no abriendo Ubuntu Software Center (a través de un apt: // URL) ni haciéndolo en segundo plano.
Idealmente, sería un cuadro de diálogo como el que usa el Administrador de actualizaciones (o, para los que lo recuerden, del Administrador de paquetes Synaptic).
PD: ¡Preferiría algo que se pudiera implementar usando C ++!
fuente
Puede tomar un ejemplo en el reproductor multimedia de tótem cuando le pide al usuario que instale códecs faltantes, o cuando abre las opciones de compartir un directorio en nautilus haciendo clic derecho, le pide que instale samba.
Creo que usan el
sessioninstaller
paquete para hacer eso. Verman session-installer
y https://launchpad.net/sessioninstallerTambién puede usar el comando
xdg-open apt://package
: abrirá el administrador de paquetes predeterminado con la posibilidad de instalar su paquete (centro de software ubuntu en versiones recientes).fuente
Esta es una vieja pregunta, pero he encontrado la respuesta, que es
apturl
.Funciona de la siguiente manera:
apturl apt:packagename
¡y es exactamente lo que necesito y lo que utiliza nautilus!Es importante destacar que está disponible preinstalado en muchas distribuciones de Linux :)
fuente