apt Upgradeがx-www-browserをgoogle-chrome-stableに変更したのはなぜですか?

apt Upgradeがx-www-browserをgoogle-chrome-stableに変更したのはなぜですか?

今、私は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
[...]

私はクロムを使用しています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 upgradeiceweaselを開いていますが、私はどのような面で間違っていて、すでに自動モードになっていることが出力に表示されますか?それとも、Chrome Managerの悪い習慣とアップグレードするたびにサイレントモードにリセットされたのですか?

答え1

Chromeパッケージのpostinstには特別なものはありません。代替バージョンが現在のサイレントモードで、新しくインストールされたバージョンが現在の設定より優先順位が高い場合にのみリンクが変更されますupdate-alternatives --install/etc/alternatives

update-alternativesパッケージが新しくインストールされたのか更新されていないのかわからない。 postinstスクリプトはすべての場合にそれを呼び出します。これは予想される動作です。パッケージの更新により、一部の選択肢の優先順位が変更されることがあります。

代替案が変更された場合は、すでに自動モードになっていたことが唯一の説明です。現在の手動設定を含むパッケージを一時的に削除した場合、つまり現在の手動設定を含むパッケージを一時的に削除した場合、正しいスクリプトは削除または構成解除時にのみオーバーライドを削除するため、アップグレードiceweaselは手動設定には影響しません。アップグレードするときは、代わりに選択肢を削除してください。iceweaselprermiceweasel

反対は成立しません。無条件にオーバーライドを削除するバグがあるため、パッケージをアップグレードして手動でオーバーライドをに設定すると、サイレントモードに戻りprermます。繰り返しますが、このバグは、オーバーライドが手動でChromeに設定されている場合にのみ発生し、オーバーライドが手動で別のものに設定されている場合に発生する状況には影響しません。google-chrome-stable/usr/bin/google-chrome-stable

答え2

Gillesの答えには、それを制御するインストール後のスクリプトが言及されています。Debian Chrome postinst スクリプトここで。この動作を制御するセクションは、2013年に作成されてから変更されていないため、優先順位の変更の可能性が排除されました。

私はupdate-alternatives --installスクリプトの行を試した結果、私が見ているメッセージは実際にモードが以前に「自動」だった場合にのみ生成されることを確認しました。私はまた別の明白ではない行動を発見しました。代替が「手動モード」であり、/etc/alternatives/x-www-browserユーザーが代替システムを使用する代わりに他のバイナリへのシンボリックリンクを指す場合、変更はupdate-alternatives自動的に認識され、設定追跡が続行されます(バイナリにもアイテムリンクグループがあると仮定)。しかし、上書きが「自動モード」に設定されている場合、リンクを手動で再指定すると、設定update-alternativesは追跡されなくなります。選択肢を再インストールすると、優先順位に従ってリセットされます。

以前に低い優先順位の「代替」を再インストールしてこの動作を修正したか、「自動モード」で変更せずに手動で新しいシンボリックリンクを作成したと結論付ける必要があります。リンクスクリプトで説明されている「200」の優先順位の後に隠されたロジックは完全にはとんでもないので、原則として優先順位だけを変更しても驚くことはありません。 ;-)

関連情報