15155


[How to use libapt (or libept) in debian-like system to list packages and get
their infos?](https://stackoverflow.com/questions/341520/how-to-use-libapt-or-
libept-in-debian-like-system-to-list-packages-and-get-the)

のページの回答にパッケージの一覧を表示するサンプルコードがありますが  
依存関係の一覧を表示するコードがありません。

Synapticやlibaptのコードを追いかけたりしていますがわかりませんでした。  
libapt-pkg-docをみても大した記述がなく当てになりませんでした。

依存関係を表示するためのサンプルがあればお教えください。


CC BY-SA 3.0
2015-09-02T08:02:46.103
15139
2015-09-04T08:11:17.883
2017-05-23T12:38:55.250
-1
7844
question
c++ debian
debian系システムにおいてlibapt(or libept)を使ってpackageの依存関係を取得するにはどうすればよいですか


apt のソースコード `apt/cmdline/apt-cache.cc` にある [DumpPackage
関数](https://github.com/Debian/apt/blob/debian/experimental/cmdline/apt-
cache.cc#L202)がサンプルとしては丁度良いのではないでしょうか。これは `apt-cache showpkg` の実行本体に当たります。

関数の引数である `CmdL` は main 関数の `char *argv[]` と同等の変数(オブジェクト)です。内部で使用されている
`CmdL.FileList + 1` は `argv + 1` に当たりますので、DumpPackage
関数を取り出して単一のプログラムにすることができます(初期化コードを追加する必要はありますが)。

ただ、私の方で使用している Ubuntu 15.04 では libapt-private 関連のインクルードファイルなどがインストールされないので、前述の
github リポジトリから取得した apt パッケージをビルド、別ディレクトリにインストールして、そちらのライブラリなどを使う様にする必要がありました。


CC BY-SA 3.0
2015-09-02T16:37:22.800
15155
2015-09-02T16:37:22.800
15139
answer