O que o `do-release-upgrade` realmente faz?

30

Sabemos que do-release-upgrade"faz um upgrade de versão". Mas em um nível um pouco mais baixo, o que isso realmente faz?

Eu pretendo fazer uma atualização mais manual, por exemplo, da maneira Debian: aptitude updatee aptitude full-upgradedepois de configurar as fontes. Na verdade, pretendo fazê-lo totalmente interativo aptitude. Mas isso me deixa curioso sobre o que mais do-relase-upgrade faz, exceto divulgar minhas fontes.list.

Robert Siemer
fonte

Respostas:

32

do-release-upgradefaz parte do pacote "update-manager-core". O script parece determinar para qual versão você vai atualizar, tente descobrir se é suportado ou não e reclame sobre o último. - Se estiver convencido de que funciona, ele baixa o UpgradeTool específico da versão e o executa.

Parte do pacote "update-manager-core" é o arquivo /etc/update-manager/meta-release, onde você pode encontrar a URL http://changelogs.ubuntu.com/meta-release e lá encontra a URL para o UpgradeTool fazer o download.

O pacote do UpgradeTool baixado é empacotado no pacote de origem "ubuntu-release-upgradeer" (antes de ser "update-manager"). A versão corresponde às atualizações mais recentes da versão de destino.

A fonte possui um antigo LEIA-ME de tempos de lançamento difíceis e difíceis. Ele discute o que deve ser feito durante uma atualização de versão. Ele também menciona um link para uma proposta UpgradeTool mais detalhada .

Listo aqui as ações mencionadas lá e verifiquei se elas realmente foram implementadas:

  • relacionado ao repositório
    • alterne para novas entradas sources.list
    • remover repositórios desconhecidos de terceiros
    • possivelmente trocar espelho (não implementado)
  • pacote relacionado
    • verifique se não há pacotes quebrados antes de atualizar
    • atualizar a versão atual antes da atualização ( apt-get updateapenas)
    • remover e instalar pacotes específicos
    • verifique se o {ubuntu, kubuntu, edubuntu} -desktop está instalado
    • livrar-se de grãos antigos
    • ter uma lista negra e lista branca de remoção
    • remover ou substituir pacotes obsoletos que existiam em versões anteriores
  • relacionado à configuração (possível em peculiaridades: veja abaixo)
    • adicionando o usuário padrão a novos grupos (não feito para as versões que eu verifiquei)
    • verifique alguns arquivos de configuração

O UpgradeTool está configurado para cada versão usando os seguintes arquivos (abra-os para ver!):

  • DistUpgrade.cfg
    • Configuração relacionada ao UpgradeTool
    • configuração relacionada à liberação
    • repositórios (por exemplo, [Sources] ValidMirrors)
    • alterações personalizadas ([Distro] PostInstallScript)
    • pacotes especiais; processado apenas por DistUpgradeController.py:
      • [Distro] RemoveObsoletes, ForcedObsoletes, BaseMetaPkgs, MetaPkgs
      • [meta_package_name] ForcedObsoletes
    • ... e por DistUpgradeCache.py:
      • [Distro] MetaPkgs, RemovalBlacklist, RemoveEssentialOk, BadVersions, BaseMetaPkgs, PurgeObsoletes, Demotions, KeyDependencies
      • [Distro e meta_package_name] KeepInstalledPkgs, KeepInstalledSection, PostUpgrade *
      • [KernelRemoval] *
  • DistUpgradeQuirks.py
    • executa (libera) funções específicas (mesmo arquivo) e plugins ( pluginsdiretório)
    • funções devem ter nomes específicos (por exemplo from_nattyPreCacheOpen()) e conditionatributos especiais de plugins (por exemplo *ou PostInitialUpdate)
    • uma dessas funções, StartUpgrade()é outra sacola: entre outras, chama _applyPatches(), que passa por cima dos arquivos no patchesdiretório
    • tudo isso praticamente não faz nada na minha instalação (i386, pacotes não mais antigos que o natty-updates)
  • mais sobre DistUpgradeCache.py
    • é executado get_kernel_list.sh(não é confiável) e garante que um kernel esteja instalado
    • alguma manipulação sobre drivers Nvidia

Versões verificadas:

  • natty → onírico
  • onírico → preciso
  • preciso → confiável (final a partir de 18/04/2014)
  • confiável → utópico (horas antes do lançamento em 23/10/2014)
Robert Siemer
fonte
3
Cada vez que eu usei do-release-upgrade que eu acabei com um sistema que não arranca :)
user205301
Drivers binários NVIDIA, mudanças multiarch, ndiswrapper, adicionar / remover arquiteturas e tipos de kernel (por exemplo depreciativo o kernel do servidor): Como exemplos de coisas que o pegas-de liberação de atualização fazer
NGRhodes
@NGRhodes o seu comentário é muito vago para mim: o ndiswrapper foi um caso especial de volta, mas não nos dias de hoje. Nenhuma arquitetura é adicionada ou removida (exceto o amd64, que adiciona o i386 como estrangeiro, que você cobre com "alterações multiarca", eu acho). - Nada está "obsoleto": os pacotes foram removidos ou não.
Robert Siemer