為什麼 apt upgrade 將我的 x-www-browser 更改為 google-chrome-stable?
現在第二次,我剛剛跑步
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
) 條目僅用於選擇“自動”模式,並且列出的二進製文件指示將使用哪個選項。問題是,我 99% 確定我在上次升級後使用 update-alternatives 將其切換回我首選的瀏覽器(iceweasel),所以它應該處於“手動模式”。x-www-browser
在此升級之前肯定會打開 iceweasel。
apt upgrade
即使它正在打開iceweasel,是否指示我弄錯了並且已經處於自動模式的輸出?或者這是 chrome 維護者的不良做法的結果,並且每次升級都會重置為自動模式?
Chrome 包的 postinst 並沒有什麼特別之處。它只是呼叫
update-alternatives --install
./etc/alternatives
僅當替代目前處於自動模式並且新安裝的版本具有比目前設置更高的優先級時,才會更改連結。
update-alternatives
不知道也不關心軟體包是新安裝還是更新。postinst 腳本在所有情況下都會呼叫它。這是期望的行為:包的更新可能會改變它的一些替代品的優先級。如果替代方案正在改變,唯一的解釋是它之前已經處於自動模式。如果您暫時刪除了包含目前手動設置的軟體包,即如果您暫時刪除了 ,它可能已經返回到自動模式
iceweasel
。另一方面,升級iceweasel
不會影響手動設置,因為正確的prerm
腳本iceweasel
僅在解除安裝或取消配置時才刪除替代方案,而不是在升級時。¹¹反之則不然:
prerm
ofgoogle-chrome-stable
有一個錯誤,它會無條件地刪除替代項,因此如果您升級包並將替代項手動設置為/usr/bin/google-chrome-stable
,它將返回自動模式。再一次,此錯誤僅在將替代項手動設置為 Chrome 時觸發,如果將替代項手動設置為其他內容,它不會影響發生的情況。