Como corrigir o problema “Não é possível calcular o upgrade” na linha de comando ao atualizar de 12.04 para 14.04?

1

Estou executando o Ubuntu 12.04 no servidor DigitalOcean.

Gostaria de atualizá-lo para versões posteriores (12.04- > 14.04- > 16.04), mas não o faço devido ao erro mencionado. O DigitalOcean fornece um tutorial para atualização, mas não é útil porque não explica como resolver o problema. Eu também tentei todas as respostas em questões semelhantes, que usam a linha de comando. O problema é essencialmente o mesmo que aqui e aqui :

"An unresolvable problem occurred while calculating the upgrade: E:Unable to correct problems, you have held broken packages. This can be caused by:
* Upgrading to a pre-release version of Ubuntu
* Running the current pre-release version of Ubuntu
* Unofficial software packages not provided by Ubuntu"
  • Eu não tenho ppa adicionado
  • Eu não adicionei nenhuma fonte extra a /etc/apt/sources.list . Mas devo mencionar que existem apenas espelhos DigitalOcean listados, sem servidores padrão ubuntu.
  • eu tenho > 900 pacotes listados como quebrados em /var/log/dist-upgrade/apt.log . (Parece que todos eles estão quebrados)
  • Eu tentei esses comandos (na ordem correta) apt-get update, apt-get upgrade, apt-get dist-upgrade, apt-get --purge autoremove, apt-get autoclean, apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }') , etc, que estão listados em respostas a perguntas semelhantes, mas eles não fazem nada, pois acham que está tudo bem.

Você tem mais alguma sugestão sobre como corrigir o problema?

UPDATE: achei que um problema com servidores DigitalOcean em sources.list poderia ser um problema, então eu os alterei para os originais do Ubuntu. Agora eu recebo apenas 2 erros no apt.log:

ERROR getting the encoding failed
Traceback (most recent call last):
  File "/tmp/update-manager-cwZhf2/DistUpgrade/DistUpgradeView.py", line 40, in <module>
    locale.setlocale(locale.LC_ALL, "")
  File "/usr/lib/python2.7/locale.py", line 539, in setlocale
    return _setlocale(category, locale)
Error: unsupported locale setting
ERROR Dist-upgrade failed: 'E:Unable to correct problems, you have held broken packages.

Não sei se o erro de localidade causa isso. Tentei corrigi-lo exportando LANG , LANGUAGE e LC_ALL para "en_US.utf8" , mas não ajudou. Vou tentar consertá-lo e atualizar a pergunta se isso ajudar.

UPDATE 2: Saída do comando locale:

$locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

UPDATE 3: Depois de definir a localidade como "C" (graças a Gunnar Hjalmarsson), o erro de localidade desapareceu de apt.log , mas invocar do-release-upgrade ainda leva a erro:

DEBUG /openCache(), new cache size 47033
DEBUG need_server_mode(): can not find a desktop meta package or key deps, running in server mode
DEBUG Installing 'locales' (priority in required set 'required' but not scheduled for install)
ERROR Dist-upgrade failed: 'E:Unable to correct problems, you have held broken packages.'

e ainda sem atualização.

    
por rightaway717 18.07.2016 / 18:21

1 resposta

1

Resumo da longa discussão nos comentários:

do-release-upgrade falhou ao ser executado porque o pacote locales não estava presente. Então a solução foi instalar o locales , que é um pacote obrigatório.

O OP tratou de um problema de dependência ao tentar instalar locales via apt-get install usando aptitude , que sugeria soluções em vez de simplesmente se recusar a instalar.

    
por Gunnar Hjalmarsson 19.07.2016 / 00:41