実行可能ファイルをサポートするためにロードする必要があるパッケージまたはライブラリを決定する方法はありますか?

実行可能ファイルをサポートするためにロードする必要があるパッケージまたはライブラリを決定する方法はありますか?

再コンパイルできず、パッケージ化されていない実行可能ファイルを自分のコンピュータにインストールし、それを実行するために必要なライブラリをダウンロードしたいと思います。

ldd以下は実行の部分出力です。

libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)
libcairo.so.2 => /usr/lib/i386-linux-gnu/libcairo.so.2 (0xb6f64000)
libatk-1.0.so.0 => /usr/lib/i386-linux-gnu/libatk-1.0.so.0 (0xb6f43000)
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb6e9e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6cf4000)
/lib/ld-linux.so.2 (0xb786e000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6cd3000)
libgio-2.0.so.0 => /usr/lib/i386-linux-gnu/libgio-2.0.so.0 (0xb6b7c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6b4f000)

この情報を使用してダウンロードするパッケージを選択するためのツールはありますか?それとも、リストされたライブラリとその依存関係を抽出してディスク使用量を最小限に抑える方が良いですか?システムはヘッドレス仮想マシンで実行され、プログラムはVNCを介して表示されます。

フルグラフィックデスクトップはほとんどの必須ライブラリを提供すると思いますが、必要なライブラリ、その依存関係、およびそれをサポートするのに十分なX Windowsパッケージをダウンロードしたいと思います。

ベストアンサー1

どのオペレーティングシステムを使用しているかを明示していないので、Linuxを想定してDebianを例に挙げます。私の知る限り、あなたの質問に対する迅速な答えは「いいえ」です。しかし、これは役に立つ解決策かもしれません。

ldd your_prog | awk '{print $1}' | sed 's/\..*//' | 
  while read n; do echo "----- $n ----"; apt-cache search ^$n; done

これはldd出力を解析し、実行apt-cache(オペレーティングシステムに対応するものに置き換え)して、名前と説明に含まれるパッケージを検索しますldd

これにより、すべての結果が見つからなくなり、いくつかの(例:)にはあまりにも多くの結果が得られますが、libc役に立ちます。


apt-file@FaheemMithaは、これがより良いアプローチである可能性があると指摘しました。たとえば、

ldd /bin/bash | awk '/=>/{print $(NF-1)}'  | 
 while read n; do apt-file search $n; done |
  awk '{print $1}' | sed 's/://' | sort | uniq

これにより、リンクされたライブラリを提供するパッケージ名のリストが返されます。

おすすめ記事