Установите "рекомендуемый" пакет, когда пользователь запрашивает соответствующее действие
Допустим, я создаю приложение для пакета DEB, который имеет рекомендованную зависимость от пакета, назовем его package1.
Таким образом, пакет1, если он установлен, может предоставить дополнительную функциональность моей программе, но не имеет прямого отношения к основным функциям моей программы (поэтому это рекомендуемый пакет)
Таким образом, пользователь изначально не выбирает установку рекомендованного пакета (в Ubuntu Software Center вы можете выбрать, отметив / убрав галочку для установки или не устанавливать рекомендуемые пакеты), но в будущем, при использовании моего приложения, он запрашивает соответствующая функциональность.
Как лучше всего сказать ему, что для работы этой функции необходимо установить дополнительный пакет? Какую программу я могу использовать, чтобы установить этот пакет прямо из моей программы с диалоговым окном, показывающим, как идет процесс установки?
Я хочу сделать это по умолчанию и, желательно, независимо от среды рабочего стола Linux.
Короче говоря, я хочу, чтобы способ установки пакета из моей программы не открывался Ubuntu Software Center (через URL apt: //), а не выполнялся в фоновом режиме.
В идеале это должен быть диалог, подобный тому, который используется диспетчером обновлений (или, для тех, которые помнят, из диспетчера пакетов Synaptic).
PS: Я бы предпочел что-то, что могло бы быть реализовано с использованием C++!
3 ответа
Это старый вопрос, но я нашел ответ, который apturl,
Это работает следующим образом:
apturl apt:packagename и это именно то, что мне нужно, и что использует наутилус!
Важно отметить, что он предустановлен на многих дистрибутивах Linux:)
Если вы используете Python, python-aptdaemon-gtk это, вероятно, путь. Для хорошего примера того, как это сделать, посмотрите на /usr/share/doc/python-aptdaemon.gtk3widgets/examples/gtk3-demo.py.gz
Вы получаете хорошие приглашения установки, такие как:

В случае использования C++ вы могли бы использовать интерфейс AptDaemon D-Bus, но я не знаю ни одного примера, и вы бы не получили виджеты бесплатно.
API-интерфейс D-Bus для AptDaemon описан здесь: http://packages.python.org/aptdaemon/dbus.html
Я не могу найти много подходов к учебникам по C++ DBus в Интернете, поэтому лучше всего вам подойдет документация и примеры в libdbus-C++ - doc пакет.
Вы можете взять пример проигрывателя тотема, когда он предлагает пользователю установить отсутствующие кодеки, или когда вы открываете параметры общего доступа к каталогу в nautilus с помощью щелчка правой кнопкой мыши, он предлагает установить samba.
Я думаю, что они используют sessioninstaller пакет, чтобы сделать это. Увидеть man session-installerи https://launchpad.net/sessioninstaller
Вы также можете использовать команду xdg-open apt://package: он откроет менеджер пакетов по умолчанию с возможностью установки вашего пакета (центр программного обеспечения Ubuntu в последних выпусках).