do-release-upgrade
faz 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 update
apenas)
- 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 (
plugins
diretório)
- funções devem ter nomes específicos (por exemplo
from_nattyPreCacheOpen()
) e condition
atributos 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 patches
diretó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)