2回目は、apt upgrade
を実行したところ、次のようになりました。
[...]
Setting up google-chrome-stable (48.0.2564.116-1) ...
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
[...]
私はchrome with deb http://dl.google.com/linux/chrome/deb/ stable main
を引っ張っています。aptの私の理解は不安定ですが、一般的にこれは最初にパッケージをインストールするとき、またはdpkg reconfigure
を使用していますか?apt upgrade
のたびに優先ブラウザをリセットしなければならないのは非常に煩わしく、不満を感じます。
アップグレード後、これはupdate-alternatives
が表示しているものです。
$ update-alternatives --config x-www-browser
There are 3 choices for the alternative x-www-browser (providing /usr/bin/x-www-browser).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/google-chrome-stable 200 auto mode
1 /usr/bin/chromium 40 manual mode
2 /usr/bin/google-chrome-stable 200 manual mode
3 /usr/bin/iceweasel 70 manual mode
Press enter to keep the current choice[*], or type selection number:
このテーブルはかなり紛らわしいと思いますが、おかげで この質問 最初の(0
)エントリは「自動」モードを選択するために使用され、リストされたバイナリはどの選択を示しているかを理解していると思います使用されます。問題は、最後のアップグレード後にこれを好みのブラウザ(iceweasel)に戻すために、更新の代替手段を使用したと99%確信しているため、「手動モード」になっているはずです。 x-www-browser
は、このアップグレードの前に確かにiceweaselを開いていました。
apt upgrade
の出力は、私が何らかの理由で間違っていて、iceweaselを開いていたにもかかわらず、これがすでに自動モードになっていることを示していますか?それとも、これはchromeメンテナの悪い習慣の結果であり、アップグレードのたびに自動モードにリセットされますか?
Chromeパッケージのpostinstは、異常なことは何もしません。update-alternatives --install
を呼び出すだけです。これにより、代替手段が現在ある場合にのみ、/etc/alternatives
のリンクが変更されます。自動モードでは、新しくインストールされたバージョンの優先度が現在の設定よりも高くなります。
update-alternatives
は、パッケージが新しくインストールされたか更新されたかを認識または気にしません。 postinstスクリプトは、すべての場合にそれを呼び出します。これは望ましい動作です。パッケージを更新すると、いくつかの選択肢の優先度が変わる可能性があります。
代替案が変更されている場合、唯一の説明は、以前はすでに自動モードであったということです。現在の手動設定を含むパッケージを一時的に削除した場合、つまりiceweasel
を一時的に削除した場合は、自動モードに戻った可能性があります。一方、iceweasel
のアップグレードは手動設定には影響しません。prerm
のiceweasel
スクリプトは、アンインストールまたは構成解除されている場合にのみ代替を正しく削除し、そうでない場合は削除しないためです。アップグレード中です。¹
¹ 逆は当てはまりません。google-chrome-stable
のprerm
にはバグがあり、代替を無条件に削除するため、パッケージをアップグレードして代替を手動で/usr/bin/google-chrome-stable
に設定した場合は、自動モードに戻ります。繰り返しになりますが、このバグは、代替手段が手動でChromeに設定された場合にのみトリガーされ、代替手段が手動で他の何かに設定された場合の動作には影響しません。
これを制御するポストインストールスクリプトは、Gillesの回答で言及されています。掘り下げてみたところ、 debian chrome postinst script ここにあります。この動作を制御するセクションは2013年に作成されてから変更されていないため、優先度が変更されています除外されます。
スクリプトのupdate-alternatives --install
行を試してみたところ、表示されたメッセージは、モードが以前は「自動」であった場合にのみ生成されることがわかりました。私はまた、別の非自明な行動を発見しました。代替が「手動モード」であり、/etc/alternatives/x-www-browser
のシンボリックリンクが代替システムを使用するのではなく、ユーザーによって別のバイナリを指している場合、update-alternatives
は自動的に変更を認識し、追跡を続行します。構成(バイナリにもリンクグループのエントリがあると想定)。ただし、代替が「自動モード」に設定されている場合、手動でリンクを再ポイントすると、update-alternatives
は構成を追跡しなくなります。および代替を再インストールすると、優先度に基づいてリセットされます。
以前に「代替」を低い優先度で再インストールすることによってこの動作を変更したか、「自動モード」から変更せずに手動で新しいシンボリックリンクを作成したと結論付ける必要があります。リンクされたスクリプトで説明されている「200」優先度の背後にあるロジックは完全にばかげていると言うので、原則として優先度を変更しても驚かないでしょう。 ;-)