apt Upgrade가 내 x-www-browser를 google-chrome-stable로 변경한 이유는 무엇입니까?

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) 항목이 "자동" 모드를 선택하기 위한 것임을 이해하고 있으며 나열된 바이너리는 어떤 선택이 사용될 것인지를 나타냅니다. 문제는 마지막 업그레이드 후 업데이트 대안을 사용하여 기본 브라우저(iceweasel)로 다시 전환했다고 99% 확신하므로 "수동 모드"에 있어야 한다는 것입니다. x-www-browser이 업그레이드 전에 Iceweasel이 켜져 있어야 합니다.

apt upgradeiceweasel을 여는 중인데도 내가 어떤 면에서 실수했고 이미 자동 모드에 있다는 것이 출력에 표시됩니까 ? 아니면 크롬 관리자의 나쁜 습관과 업그레이드할 때마다 자동 모드로 재설정한 결과입니까?

답변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의 답변에는 이를 제어하는 ​​설치 후 스크립트가 언급되어 있습니다.데비안 크롬 postinst 스크립트여기. 이 동작을 제어하는 ​​섹션은 2013년 작성된 이후 변경되지 않았으므로 우선순위 변경 가능성이 배제되었습니다.

나는 update-alternatives --install스크립트의 행을 실험해 본 결과 내가 보고 있는 메시지가 실제로 모드가 이전에 "자동"이었던 경우에만 생성된다는 것을 확인했습니다. 나는 또한 또 다른 명백하지 않은 행동을 발견했습니다. 대안이 "수동 모드"이고 /etc/alternatives/x-www-browser사용자가 대체 시스템을 사용하는 대신 다른 바이너리에 대한 심볼릭 링크를 가리키는 경우 update-alternatives변경 사항이 자동으로 인식되고 구성 추적이 계속됩니다(바이너리에도 항목 링크 그룹이 있다고 가정). 하지만재정의가 "자동 모드"로 설정된 경우, 링크를 수동으로 다시 지정하면 update-alternatives구성이 더 이상 추적되지 않습니다.대안을 다시 설치하면 우선순위에 따라 재설정됩니다..

이전에 더 낮은 우선순위의 "대체"를 다시 설치하여 이 동작을 수정했거나 "자동 모드"에서 변경하지 않고 수동으로 새 심볼릭 링크를 생성했다는 결론을 내려야 합니다. 링크 스크립트에 설명된 "200" 우선순위 뒤에 숨은 논리는 완전히 터무니없기 때문에 원칙적으로 우선순위만 수정해도 놀라지 않을 것입니다. ;-)

관련 정보