当用户要求相应操作时安装“推荐”包

hyt*_*omo 10 application-development

假设我正在为 DEB 包构建一个应用程序,该包具有推荐的依赖项,我们称之为 package1。

所以,如果安装了 package1,可以为我的程序提供额外的功能,但与我的程序的基本功能没有直接关系(这就是为什么它是推荐包的原因)

因此,用户最初并没有选择安装推荐的软件包(在 Ubuntu 软件中心,您可以通过勾选/取消勾选安装或不安装推荐的软件包来选择),但是将来,在使用我的应用程序时,它会要求相应的功能。

告诉他必须安装额外的软件包才能使此功能正常工作的最佳方法是什么?我可以使用什么程序来直接从我的程序安装这个包,并显示一个对话框,指示安装过程的进展情况?

我想通过默认方式来做到这一点,最好是一种独立于 Linux 桌面环境的方式。

简而言之,我想要一种从我的程序安装软件包的方法,既不是通过打开 Ubuntu 软件中心(通过 apt:// URL)也不是在后台执行。

理想情况下,它将是一个类似于更新管理器使用的对话框(或者,对于那些记得的人,来自 Synaptic 包管理器)。

PS:我更喜欢可以使用 C++ 实现的东西!

and*_*ing 9

如果您使用的是python,python-aptdaemon-gtk可能是要走的路。有关如何执行此操作的一个很好的示例,请查看/usr/share/doc/python-aptdaemon.gtk3widgets/examples/gtk3-demo.py.gz

你会得到很好的安装提示,比如:

安装提示

在使用 C++ 的情况下,您可以使用 AptDaemon D-Bus 接口,但我不知道任何示例,您不会免费获得小部件。

AptDaemon 的 D-Bus API 记录在这里:http ://packages.python.org/aptdaemon/dbus.html

我在网上找不到太多 C++ DBus 教程,所以最好的选择可能是libdbus-c++-doc 中的文档和示例安装 libdbus-c++-doc 包裹。


Mar*_*c M 5

您可以以图腾媒体播放器为例,当它提示用户安装缺少的编解码器时,或者当您通过右键单击在 nautilus 中打开目录的共享选项时,它会提示安装 samba。

我认为他们使用这个sessioninstaller包来做到这一点。请参阅man session-installerhttps://launchpad.net/sessioninstaller

您也可以使用以下命令xdg-open apt://package:它会打开默认的包管理器,并可以安装您的包(在最近的版本中为 ubuntu 软件中心)。


hyt*_*omo 1

这是一个老问题,但我找到了答案,那就是apturl

其工作原理如下:

apturl apt:packagename这正是我所需要的,也是 nautilus 使用的!

重要的是,它可以预安装在许多 Linux 发行版上:)