Resolving Dependencies Interactively

If a dependency problem arises that cannot be handled using the immediate dependency resolver, aptitude can assist you in resolving it. As soon as a problem occurs, a red bar will appear at the bottom of the screen with a summary of aptitude's suggestion about how to fix it. For instance, in the following screenshot, aptitude is indicating that it can resolve the situation by keeping two packages at their current versions.

[package view, packages broken after attempting to remove sound-juicer]

スクリーン最下部に示されているように、., を押すと別の解決方法を表示できます。また、! を押すと現在の解決方法を適用でき、e を押すとその解決方法をさらに詳しく検討できます。現在選択中の解決方法を検討すると次のようなスクリーンが現れます。

[dependency resolver #1]

アクションによって影響を受けるパッケージについては、パッケージがハイライトされているときに Enter を押すだけで、情報にアクセスできます。aptitude が特定の決断を下した理由についてのさらに詳しい説明を参照するには、リストの項目をハイライトさせてください。ハイライトさせると、aptitude の選択によって解決される依存関係が、他に可能なすべての解決方法とともにスクリーンの下半分に表示されます。

[explanation about dependency resolver decisions]

You can guide the dependency resolver to a solution of which you approve by approving or rejecting the individual actions of a solution. If you approve an action, the resolver will choose it whenever possible, ignoring alternatives (when there are several approved alternatives, any one of them could be chosen). On the other hand, if you reject an action, the resolver will never choose that action.

To reject an action, highlight it and press r; the rejection can be cancelled by pressing r again. Similarly, select an action and press a to approve it; press a again to restore its original state. You can undo either action by using 取り消し取り消し (Control+u) while the resolver screen is active. If you cancel a rejection or an approval, any solutions that were ignored will be available the next time that you generate a new solution.


By default, the resolver rejects actions that change the state of held packages, or that install forbidden versions of packages. You can override these rejections, thus allowing the hold or forbidding to be automatically overridden, in the same way that you would override any other rejection. Setting the configuration option Aptitude::ProblemResolver::Allow-Break-Holds to true will disable this behavior, meaning that the resolver will always break holds (albeit at a penalty, see Aptitude::ProblemResolver::BreakHoldScore).

拒否されたアクションは赤色になりRという印がつきます。他方で、承認されたアクションは緑色になりAという印がつきます。これは次のスクリーンショットを見ればわかるでしょう。このスクリーンショットでは、gstreamer0.8-cdparanoia を現在のバージョンに一時固定するというアクションが拒否され、sound-juicer を現在のバージョンに一時固定するというアクションが承認されています。

[rejections and approvals in dependency resolution]

Rejections and approvals only affect newly generated solutions. You can tell when a new solution will be generated by examining the indicator in the lower left hand corner of the screen: if there is a number in parentheses, it is the number of solutions that have been generated. Thus, when the number outside the parentheses and the number inside are identical (as above), pressing . will generate a new solution. If there is no number in parentheses (for instance, the indicator reads [1/5]), then there are no more solutions to generate. At any time, you can select the last generated solution by pressing >, and the first generated solution by pressing <.



スクリーン最上部のリスト内のアクションを選択するだけでなく、スクリーン下半分のリストを使用してアクションを選択することも可能です。このリストにアクセスするには、マウスを用いてその領域をクリックするか、または Tab を押してください。最後に、問題解決ツールが下した決断を順を追って眺めるには o を押してください。そうすると、次のスクリーンショットにあるように、解決される依存関係とその解決のために行うアクションのリストが表示されます。

[explanations of dependency resolver solutions]

もう一度 o を押すとこの表示モードから出ることが可能です。