当用户要求采取相应措施时,请安装“推荐”包装


10

假设我正在为DEB软件包构建应用程序,该软件包具有推荐的依赖关系软件包,我们将其称为package1。

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

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

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

我想通过默认方式,最好是独立于Linux桌面环境的方式来执行此操作。

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

理想情况下,这将是一个对话框,类似于更新管理器(或者对于记住的对话框,来自Synaptic软件包管理器)使用的对话框。

PS:我希望可以使用C ++来实现!

Answers:


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软件包中的文档和示例。


抱歉,我没有使用python,但我喜欢将其作为解决方案。任何C ++替代方法(我将编辑答案以包括此详细信息)吗?
hytromo

嗯...我想您可以使用C ++的AptDaemon D-Bus接口,但是我不知道任何示例,您也不会免费获得这些小部件。
andrewsomething 2012年

真好 您知道在哪里可以找到使用此DBUS接口的文档和示例吗?
hytromo

通常,我真的不需要教程来通过DBus发送消息。我知道该怎么做。我只需要知道要发送什么消息以及在何处!
hytromo

5

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

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

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


请扩展您的答案,并包括有关如何使用会话安装程序的更多详细信息。至于xdg-open解决方案,我明确提到我不希望它们在USC中打开,但正如您所说,要使用独立对话框进行安装,例如在图腾中安装编解码器或在Nautilus中安装samba时。
hytromo

1

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

其工作方式如下:

apturl apt:packagename 而这正是我所需要的以及鹦鹉螺所使用的!

重要的是,它已预装在许多Linux发行版中:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.