#author("2019-03-07T09:38:43+09:00","","") #navi(../) * Debian系Linuxで依存関係エラー時に表示されたファイルを探す方法・apt-file [#x30e89ec] ソースをダウンロードしてコンパイル&リンクしたときに依存関係エラーで必要なファイルやライブラリが表示されたり~ 他のマシンでコンパイル済やバイナリーを持ってきたときに実行するとxxxx.soがありません。~ などと表示されたときにapt-fileコマンドを使えば、そのファイルが格納されているパッケージを探し出すことができます。~ 尚、apt系のコマンドなので、Debian系(Ubuntu, LinuxMint, など)が対象となります。 #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) #contents * 関連記事 [#j69ffc57] -[[ファイルやコマンドがどのパッケージに含まれているか調べる方法>逆引きUNIXコマンド/ファイルやコマンドがどのパッケージに含まれているか調べる方法]] * 動作確認したLinux [#a750e226] $ lsb_release -cd Description: Ubuntu 18.04.2 LTS Codename: bionic * dpkg -S ファイル名との違い [#q981a226] dpkg -S ファイル名により同様に指定したファイルがどのパッケージに存在するかを確認することができますが、~ ''インストール済''パッケージのみが対象となります。~ 今回は未インストールでも対象のファイルを探すためapt-fileコマンドを使います。 * apt-fileコマンドのインストール [#wefbff2e] apt-fileコマンドはデフォルトではインストールされていないはずなので、端末(ターミナル)を起動して、~ 以下のコマンドを実行し、apt-fileコマンドをインストールします。 sudo apt install apt-file インストール後、以下のコマンドでパッケージ情報をアップデートしてください。 sudo apt update 尚、今回紹介したapt-fileでも同様のことができますが、廃止予定らしいです。~ 以下の記述通り、apt updateを使えば良いでしょう。 $ man apt-file <省略> update Deprecated action that just calls "apt update". <省略> * apt-file search ファイル名 で探してみる [#u04b0840] 実際にapt-fileコマンドを使ってファイルを探してみます。~ 使用例として、2つ以下に記します。 ** apt-file search ファイル名 [#sd255249] 一番簡単なのは以下の構文になります。~ apt-file search ファイル名 例として、他のマシンに存在するバイナリをコピーして持ってきたら、libcurl-nss.so.3が無いと言われました。~ libcurl-nss.so.3が存在するパッケージを探してみます。~ 検索中は少々時間がかかります。 $ apt-file search libcurl-nss.so.3 libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.3 上記にお通り、libcurl3-nssというパッケージ(左側)に存在することが表示されます。~ あとは、apt install パッケージ名でインストールすれば解決です。~ また、すべてのファイル名を入力しなくても検索が可能です。~ $ apt-file search libcurl-nss libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.3 libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.4 libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.4.5.0 libcurl4-nss-dev: /usr/lib/x86_64-linux-gnu/libcurl-nss.a libcurl4-nss-dev: /usr/lib/x86_64-linux-gnu/libcurl-nss.la libcurl4-nss-dev: /usr/lib/x86_64-linux-gnu/libcurl-nss.so パッケージ名のみ表示したい場合は、-lオプションを追加します。 $ apt-file -l search libcurl-nss libcurl3-nss libcurl4-nss-dev ** apt-file -x search ファイル名 [#d996ecd9] オプションに-xをつけると正規表現で検索できます。~ 以下に実行例を記します。 $ apt-file -x search 'libcurl-nss.so.[0-9]' libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.3 libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.4 libcurl3-nss: /usr/lib/x86_64-linux-gnu/libcurl-nss.so.4.5.0 パッケージ名のみ表示したい場合は、-lオプションを追加します。 $ apt-file -xl search 'libcurl-nss.so.[0-9]' libcurl3-nss 以上、apt-fileコマンドを使ってインストール済み、未インストール済みを問わず~ 該当するパッケージを検索する方法でした。 #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)