ユーザーが対応するアクションを要求したときに「推奨」パッケージをインストールする


10

アプリケーションをDEBパッケージにビルドしているとしましょう。これは、推奨される依存関係としてパッケージがあるため、package1と呼びましょう。

したがって、package1がインストールされている場合、私のプログラムに追加の機能を提供できますが、私のプログラムの基本機能に直接関連していません(そのため、これは推奨パッケージです)

したがって、ユーザーは最初に推奨パッケージのインストールを選択しません(Ubuntu Software Centerでは、チェックイン/チェック解除して、推奨パッケージをインストールするかどうかを選択できます)が、将来、アプリケーションを使用しているときに、対応する機能。

この機能を動作させるために追加のパッケージをインストールする必要があることを彼に伝える最良の方法は何ですか?このパッケージを自分のプログラムから直接インストールするために、どのようなプログラムを使用して、インストールプロセスの進行状況を示すダイアログを表示できますか?

私はこれをデフォルトの方法で、できればLinuxデスクトップ環境に依存しない方法で実行したいと考えています。

つまり、(apt:// URL経由で)Ubuntuソフトウェアセンターを開いたり、バックグラウンドで実行したりすることなく、プログラムからパッケージをインストールする方法が必要です。

理想的には、Update Managerが使用するダイアログ(または、Synaptic Package Managerからのダイアログ)が理想的です。

PS:私はC ++を使用して実装できるものを好みます!

回答:


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で説明されています。

私はWeb上のC ++ DBusチュートリアルの方法で多くを見つけることができないので、あなたの最善の策はおそらくlibdbus-c ++-doclibdbus-c ++-docをインストールするパッケージのドキュメントと例です。


申し訳ありませんが、私はpythonを使用していませんが、解決策として気に入っています。C ++の代替案(この詳細を含めるように回答を編集します)?
hytromo 2012

うーん... C ++のAptDaemon D-Busインターフェースを使用することもできますが、例を知らないので、ウィジェットを無料で入手することはできません。
andrewsomething 2012

いいね。このDBUSインターフェイスの使用に関するドキュメントと例がどこにあるか知っていますか?
hytromo 2012

一般に、DBusを介してメッセージを送信するためのチュートリアルは本当に必要ありません。私はこれを行う方法を知っています。送信するメッセージと送信先を知るだけです!
hytromo 2012

5

トーテムメディアプレーヤーで、不足しているコーデックをインストールするように求めるプロンプトを表示したり、nautilusでディレクトリの共有オプションを右クリックして開いたりすると、sambaをインストールするようにプロンプ​​トが表示されます。

彼らはそのためにsessioninstallerパッケージを使用していると思います。man session-installer、およびhttps://launchpad.net/sessioninstallerを参照してください

次のコマンドを使用することもできxdg-open apt://packageます。デフォルトのパッケージマネージャーが開き、パッケージをインストールできます(最近のリリースではubuntuソフトウェアセンター)。


回答を拡張して、セッションインストーラの操作方法の詳細を含めてください。xdg-openソリューションについては、USCでそれらを開かせたくないことを明確に述べましたが、あなたが言ったように、独立したダイアログでインストールします。
hytromo 2012

1

これは古い質問ですが、私は答えを見つけましたapturl

次のように機能します。

apturl apt:packagename そしてそれはまさに私が必要としているものであり、nautilusが使用しているものです!

重要なのは、多くのLinuxディストリビューションにプリインストールされていることです:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.