Установите «рекомендуемый» пакет, когда пользователь запрашивает соответствующее действие

Допустим, я создаю приложение для пакета DEB, который имеет рекомендованную зависимость от пакета, назовем его package1.

Таким образом, пакет1, если он установлен, может предоставить дополнительную функциональность моей программе, но не имеет прямого отношения к основным функциям моей программы (поэтому это рекомендуемый пакет)

Таким образом, пользователь не выбирает Первоначально для установки рекомендованного пакета (в Ubuntu Software Center вы можете выбрать, отметив / убрав галочку для установки или не устанавливать рекомендуемые пакеты), но в будущем, при использовании моего приложения, он запрашивает соответствующую функциональность.

Как лучше всего сказать ему, что для работы этой функции необходимо установить дополнительный пакет? Какую программу я могу использовать, чтобы установить этот пакет непосредственно из моей программы с диалоговым окном, указывающим, как идет процесс установки?

Я хочу сделать это по умолчанию, и, предпочтительно, способом, который использует Linux Независимо от среды рабочего стола.

Короче говоря, мне нужен способ установить пакет из моей программы, не открывая Ubuntu Software Center (через URL apt: //) и не делая это в фоновом режиме.

В идеале это должен быть диалог, подобный тому, который используется диспетчером обновлений (или для тех, кто помнит, из диспетчера пакетов Synaptic).

PS: я бы предпочел что-то, что могло бы быть реализовано с использованием C ++!

10
задан 16 August 2012 в 03:09

3 ответа

Это старый вопрос, но я нашел ответ: apturl .

Он работает как следует:

apturl apt: packagename и это именно то, что мне нужно и что использует наутилус!

Важно отметить, что он доступен предустановленным во многих дистрибутивах Linux :)

1
ответ дан 16 August 2012 в 03:09

Если вы используете python, то python-aptdaemon-gtk, вероятно, будет правильным решением. Для хорошего примера, как это сделать, посмотрите на /usr/share/doc/python-aptdaemon.gtk3widgets/examples/gtk3-demo.py. gz

Вы получаете хорошие подсказки по установке вроде:

install prompt

В случае использования C++, вы могли бы использовать интерфейс AptDaemon D-Bus, но я не знаю ни одного примера и вы не получите виджеты бесплатно.

API D-Bus AptDaemon документирован здесь: http://packages.python.org/aptdaemon/dbus.html

В интернете я не могу найти много учебников по C++ DBus, так что, возможно, лучшим вариантом будет документация и примеры в пакете libdbus-c++-doc Install libdbus-c++-doc .

9
ответ дан 16 August 2012 в 03:09

Вы можете взять пример на тотемном медиаплеере, когда он предлагает пользователю установить недостающие кодеки, или когда вы открываете опции общего доступа к каталогу в nautilus по правой кнопке мыши, он предлагает установить samba.

Я думаю, они используют для этого пакет sessioninstaller. Смотрите man session-installer, и https://launchpad.net/sessioninstaller

Также можно воспользоваться командой xdg-open apt://package: она откроет менеджер пакетов по умолчанию с возможностью установки вашего пакета (центр программного обеспечения ubuntu в последних релизах).

5
ответ дан 16 August 2012 в 03:09

Другие вопросы по тегам:

Похожие вопросы: