Como posso voltar de uma atualização para o repositório proposto?

24

Por engano, habilitei o repositório Atualizações de pré-lançamento (natty-proposed) e atualizei todos os pacotes.

Como posso desfazer isso?

Aqui estão os resultados dos testes de instruções da enzotib e o resultados de testes de minhas instruções .

    
por ændrük 31.08.2011 / 19:17

5 respostas

24

Aqui está uma maneira mais geral de reverter pacotes instalados localmente, pacotes propostos e backports para o canal stable + updates. Embora as outras respostas estejam corretas e funcionem de maneira semelhante, acho que essa é uma abordagem mais elegante.

  1. Verifique se você removeu as entradas de -proposed ou -backports nos arquivos /etc/apt/sources.list e /etc/apt/sources.list.d/* .
  2. Adicione um arquivo apt-preferences, por exemplo /etc/apt/preferences.d/99-back-to-stable-updates contendo (por precise aqui - substitua pela sua versão):

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    Esta fixação de > 1000 farão com que forçar um downgrade nos pacotes desse canal e uma prioridade de < 0 nos canais -proposed e -backports também removerá todos os pacotes adicionais.

  3. Agora corra

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Inspecione a solução proposta que o apt lhe dará e, se achar que está tudo bem, aceite-a. Se você precisar verificar por que e qual versão será rebaixada, verifique isso com apt-cache policy packagename para ver quais versões estão disponíveis e o que o apt decide é o candidato para instalação.

  4. Remova o arquivo /etc/apt/preferences.d/99-back-to-stable-updates novamente, já que não é mais necessário.

Agradecemos a mlind nos fóruns do Ubuntu por esta insígnia em fixar seu post de mais de 5 anos atrás - mas isso me ajudou muito bem hoje.

    
por gertvdijk 16.12.2012 / 17:49
4

Esta página sugere que o pinting do Apt pode ser usado para fazer o downgrade de um repositório inteiro, aproveitando o fato de que < as prioridades de pin maiores que 1000 podem causar downgrades de pacotes .

Uma solução, então, pode ser incrementar temporariamente em 1000 as prioridades padrão de todos os arquivos de pacotes, exceto aqueles do repositório natty-proposed :

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

(Nota: Esse método falha ao aumentar a prioridade dos arquivos de pacotes cujos campos de liberação contêm vírgulas. Consulte esta pergunta .)

Depois de fazer isso, apt-get --simulate upgrade pode ser usado para testar a detecção de downgrade bem-sucedida. Depois de confirmar que os downgrades corretos foram detectados, sudo apt-get upgrade deve ser tudo o que é necessário para realizar o downgrade.

Quando o downgrade estiver concluído, use as Fontes de software para desabilitar o repositório Atualizações de pré-lançamento (natty-proposed) e, em seguida, remova o aumento de prioridade temporário:

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

Por fim, reinicie para que todos os programas em execução sejam versões desatualizadas.

    
por ændrük 02.09.2011 / 19:53
2

No synaptic você pode desabilitar o repositório para propor e atualizar suas fontes. Então você verá que todos os pacotes que foram atualizados aparecem como instalados localmente (já que eles não estão mais nos repositórios).

Agora você terá que "rebaixar" esses pacotes. Selecione um por um e, no menu superior, escolha:

package > force version

(ou Control + E)

Um menu aparecerá com as opções disponíveis. Eu escolheria o menor número de versão para cada pacote. Se você cometer um erro e houver uma versão mais nova nos repos normais, isso será resolvido em uma atualização posterior.

Que ajuda.

EDITAR:

Uma solução rápida seria usar o comando purge-ppa apontando para o repositório porposto, mas não sei se funcionaria com eles, eu usei apenas para limpar ppa externos e fazer downgrade de pacotes para o ubuntu oficial versões. Eu não recomendo que você faça isso neste caso, talvez alguém saiba se é um método seguro ...

    
por animaletdesequia 31.08.2011 / 21:08
2

Não consigo encontrar uma solução mais simples que a seguinte. No entanto, espero que alguém entre com uma resposta melhor.

O seguinte script que pode executar o downgrade

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

O script awk , denominado get-prev-pkg-vers , é o seguinte

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

Ao executar o script, o repo proposto NÃO deve ter sido desabilitado ainda.

Lembre-se de definir o bit executável nos dois scripts.

Um problema com essa abordagem é que todos os pacotes com downgrade resultarão como instalados manualmente (também aqueles que foram instalados automaticamente).

Por segurança, adicione a opção --simulate a apt-get no final do script bash.

    
por enzotib 31.08.2011 / 22:12
2

A reversão de todos os pacotes do natty-propo provavelmente não é necessária: a maioria dos pacotes será atualizada para as mesmas versões em breve, através das atualizações do natty, de qualquer forma.

Caso você tenha um problema com um pacote, você poderá reverter esse pacote usando o método que o orent apresenta (após a desabilitação -proposta), ou você pode usar sudo aptitude install packagename/natty . Mas mais importante, você deve enviar um bug contra o pacote. Poucas pessoas realmente testam propostas por natureza e, se ocorrerem regressões (= novos problemas), elas certamente devem ser relatadas. Caso contrário, eles podem acabar nas atualizações para todos os usuários do Ubuntu. Então, se você tiver algum problema, denuncie.

    
por johanvdw 31.08.2011 / 22:22