apt-get -f installとは February 27, 2007
Rating: 3

UbuntuはDebian系なので、パッケージ管理はaptで行っている。aptは非常に良くできていて使いやすい。 が、依存関係が一ヶ所でも壊れるとインストールやアップデートが何もできなくなる。

Webで調べると、修復方法は”apt-get -f install”で良いらしい(コマンドラインのエラーメッセージでも表示される)のだが、このオプションがどういう動作をするのかを書いている記事が見当たらなかった。 “man apt-get”で-fオプションを調べると以下のような説明になっている。

-f, –fix-broken 修復 – 依存関係が壊れたシステムの修正を試みます。 このオプション を install や remove と一緒に使うときは、 パッケージを指定しなく てもかまいません。 どのパッケージを指定しても、完全に問題を解決 し ます。APT 自体は、 システムに存在する壊れたパッケージ依存関係 を許すことができないので、 初めて APT を実行する場合、このオプシ ョ ンが必要になることがあります。 システムの依存関係構造にかなり 問題がある場合は、 手動で修正するよう要求することもあります。 ( 通 常 は 、問題のあるパッケージを取り除くのに dselect( 8 ) や dpkg –remove を使用します) このオプションを -m オプションと同時に 使 用 す る と 、 エラーになる状況があるかもしれません。 設定項目 - APT::Get::Fix-Broken

ついでに”LANG=C man apt-get”で原典も確認しておく。

-f, –fix-broken Fix; attempt to correct a system with broken dependencies in place. This option, when used with install/remove, can omit any packages to permit APT to deduce a likely solution. Any Package that are specified must completely correct the problem. The op- tion is sometimes necessary when running APT for the first time; APT itself does not allow broken package dependencies to exist on a system. It is possible that a system’s dependency structure can be so corrupt as to require manual intervention (which usu- ally means using dselect( 8 ) or dpkg –remove to eliminate some of the offending packages). Use of this option together with -m may produce an error in some situations. Configuration Item: APT::Get::Fix-Broken.

一般的な感覚だと-fは–forceなんじゃないかと思うのだが、apt-getでは–fix-brokenとして機能することが分かった。 -f installというオプションだから、依存関係を無視してパッケージをインストールするのかと思っていたが全然違った。”apt fix”というコマンドにすれば良いのに。

さらにそれでも直らなければdselectかdpkg –removeを使って直せ、ということらしい。 これで安心して使えそうだ。

Comments are closed.