#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)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS