再コンパイルできず、パッケージ化されていない実行可能ファイルを自分のコンピュータにインストールし、それを実行するために必要なライブラリをダウンロードしたいと思います。
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
これにより、リンクされたライブラリを提供するパッケージ名のリストが返されます。
答え2
@terdonの答えは素晴らしいですが、デフォルトでDebianシステムにインストールされている他の答えを使用すると、dpkg-query
これを達成する方がはるかに簡単です。apt-file
ldd /bin/bash | awk '/=>/{print $(NF-1)}' | while read n; do dpkg-query -S $n; done | sed 's/^\([^:]\+\):.*$/\1/' | uniq
これによりパッケージのリストが生成されます。
答え3
最良の方法は、ディストリビューションを実際にサポートするパッケージを見つけることです。しかし、それがうまくいかない場合は、他の方法を知っています。
通常どおりlddを実行し、これらの依存関係を手動でインストールします。
例えばlibpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)
私にとって、それはapt-get install libpango:i386
Debianの安定版が十分に良いようにインストールして祈ることを意味します。
ldd、Googleのすべての行を見て、どのリポジトリが利用可能かを確認する必要があり、基本的に幸運です。その後、1つずつインストールします。プログラムが実際に実行されるまで。ただし、lddは「簡単な」プログラムでのみ機能します。プラグインやランダムコードを実行するプログラムを呼び出すことはまったく異なることです。これを行うには、コンソールで実行し、競合/エラーが発生した場合に修正する必要があります。
つまり、バイナリ専用の実行可能ファイルはメンテナンスが非常に困難です。他のものを使用することを検討することもできます。ディストリビューションが実行可能ファイルが構築されたシステムより少し前にあるか遅れている場合は、決して機能しない可能性があります。