'릴리즈 업그레이드'는 실제로 무엇을합니까?


30

우리는 do-release-upgrade“릴리스 업그레이드”를 알고 있습니다. 그러나 조금 낮은 수준에서 실제로 무엇을합니까?

데비안 방식 aptitude updateaptitude full-upgrade같이 소스를 설정 한 후 보다 수동으로 업그레이드 할 계획 입니다. 실제로, 나는 완전히 대화 형으로 할 계획입니다 aptitude. 그러나 그것은 내 출처를 바라는 것을 제외하고는 다른 일에 대해 궁금해 do-relase-upgrade합니다.

답변:


32

do-release-upgrade"update-manager-core"패키지의 일부입니다. 스크립트는 업그레이드 할 릴리스를 결정하고 지원되는지 여부를 확인하고 후자에 대해 불평하는 것으로 보입니다. – 작동이 확실하면 릴리스 별 UpgradeTool을 다운로드하여 실행합니다.

"업데이트 매니저 코어"패키지의 일부 파일입니다 /etc/update-manager/meta-release당신이 URL 찾을 수 http://changelogs.ubuntu.com/meta-release을 당신이 다운로드에 UpgradeTool의 URL이 찾을 수 있습니다.

다운로드 한 UpgradeTool tarball은 소스 패키지“ubuntu-release-upgrader”(“update-manager”이전)에서 패키지됩니다. 버전은 대상 릴리스의 최신 업데이트에 해당합니다.

소스는 사소한 릴리스 시간부터 오래된 README를 가지고 있습니다. 릴리스 업그레이드 중에 수행 할 작업에 대해 설명합니다. 또한 보다 자세한 UpgradeTool 제안에 대한 링크를 언급합니다 .

여기에 언급 된 작업을 나열하고 실제로 구현되었는지 확인했습니다.

  • 저장소 관련
    • 새로운 sources.list 항목으로 전환
    • 알 수없는 타사 리포지토리 제거
    • 스왑 미러 가능 (구현되지 않음)
  • 패키지 관련
    • 업그레이드하기 전에 깨진 패키지가 없는지 확인하십시오
    • 업그레이드하기 전에 현재 릴리스를 업데이트하십시오 ( apt-get update전용)
    • 특정 패키지 제거 및 설치
    • {ubuntu, kubuntu, edubuntu} -desktop이 설치되어 있는지 확인하십시오
    • 오래된 커널을 제거
    • 제거 블랙리스트 및 화이트리스트
    • 이전 릴리스에 있던 더 이상 사용되지 않는 패키지 제거 또는 교체
  • 구성 관련 (변덕스러운 경우 : 아래 참조)
    • 새 그룹에 기본 사용자 추가 (체크 한 버전에서는 수행되지 않음)
    • 구성 파일을 확인하십시오.

UpgradeTool은 다음 파일을 사용하여 각 릴리스에 대해 구성 됩니다 (여러 파일을 열어보십시오!).

  • DistUpgrade.cfg
    • UpgradeTool 관련 구성
    • 릴리스 관련 구성
    • 리포지토리 (예 : [Sources] ValidMirrors)
    • 사용자 정의 변경 ([Distro] PostInstallScript)
    • 특별 패키지; DistUpgradeController.py에 의해서만 처리됩니다 :
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] 강제 사용 중지
    • ... 그리고 DistUpgradeCache.py에 의해 :
      • [Distro] MetaPkgs, 제거 블랙리스트, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Distro 및 meta_package_name] KeepInstalledPkgs, KeepInstalledSection, 사후 업그레이드 *
      • [커널 제거] *
  • DistUpgradeQuirks.py
    • 특정 기능 (동일한 파일) 및 플러그인 ( plugins디렉토리) 실행 (릴리스 )
    • 함수에는 특정 이름 (예 from_nattyPreCacheOpen():)과 플러그인 특수 condition속성 (예 : *또는 PostInitialUpdate)이 있어야합니다.
    • 이러한 함수 중 하나 StartUpgrade()는 또 다른 그랩 백 자체입니다. _applyPatches()무엇보다도 patches디렉토리에 있는 파일을 통해 호출 하는
    • 이 모든 것들이 설치 에서 거의 아무것도 하지 않습니다 (i386, natty-updates보다 오래된 패키지)
  • DistUpgradeCache.py로부터 이동
    • get_kernel_list.sh(신뢰하지 않은) 실행 하고 하나의 커널이 설치되었는지 확인
    • Nvidia 드라이버에 대한 일부 처리

확인 된 버전 :

  • natty → oneiric
  • oneiric → 정확한
  • 정확한 → 신뢰할 수 있음 (2014-04-18 기준 최종)
  • 신뢰할 수있는 → utopic (2014-10-23에 릴리스되기 몇 시간 전)

3
do-release-upgrade를 사용할 때마다 부팅 할 수없는 시스템이
생겼습니다.

do-release-upgrade가 처리하는 것의 예로 nvidia 바이너리 드라이버, 멀티 아키 텍 변경, ndiswrapper, 아키텍처 및 커널 유형 추가 / 제거 (예 : 서버 커널 사용 중단)
NGRhodes

@ NGRhodes 귀하의 의견이 너무 모호합니다 : ndiswrapper는 요즘이 아닌 feisty의 특별한 사례였습니다. 아키텍처가 추가되거나 제거되지 않습니다 (md64는 제외하고 i386을 외부로 추가합니다. "다중 아키텍처 변경"으로 다룹니다). – 더 이상 사용되지 않음 : 패키지가 제거되었는지 여부.
Robert Siemer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.