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

Respostas:

24

Aqui está uma maneira mais geral de reverter pacotes instalados localmente, pacotes propostos e de 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. Certifique-se de que você removeu as entradas de -proposedou -backportsem seus /etc/apt/sources.liste /etc/apt/sources.list.d/*arquivos.
  2. Adicione um arquivo de preferências do apt, por exemplo, /etc/apt/preferences.d/99-back-to-stable-updatescontendo (por preciseaqui - 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
    

    Essa fixação de> 1000 fará com que o apt force um downgrade nos pacotes desse canal e uma prioridade de <0 nos canais -proposede -backportstambé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 fornecerá e, se você achar que está tudo bem, aceite-a. Se você precisar verificar o porquê e para qual versão ele será rebaixado, verifique isto apt-cache policy packagenamepara ver quais versões estão disponíveis e o que o apt decide é o candidato à instalação.

  4. Remova o /etc/apt/preferences.d/99-back-to-stable-updatesarquivo novamente, pois não é mais necessário.

Obrigado mlindnos fóruns do Ubuntu por essa insatisfação em fixar em seu post de mais de 5 anos atrás - mas isso me ajudou muito bem hoje.

gertvdijk
fonte
Suponho que também deva funcionar com o debian. Infelizmente, isso não faz nada para mim: /
Michael
@ Michael 1) O Debian não tem o conceito de repositórios oficiais propostos. 2) Este site é sobre o Ubuntu, não o Debian. Eu sugiro que você fazer uma nova pergunta sobre Unix.SE .
gertvdijk
Esta solução também funcionou com a versão 'xenial'! (depois de substituir preciso por xenial no arquivo, é claro) Muito obrigado!
morhook
4

Esta página sugere que a fixação do Apt pode ser usada para fazer o downgrade de um repositório inteiro, aproveitando o fato de que as prioridades de pinos 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 pacote, exceto os do natty-proposedrepositório:

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: este método falha ao aumentar a prioridade dos arquivos de pacote cujos campos de liberação contêm vírgulas. Consulte esta pergunta .)

Depois de fazer isso, apt-get --simulate upgradepode ser usado para testar a detecção de downgrade bem-sucedida. Depois de confirmar que as atualizações corretas foram detectadas, sudo apt-get upgradedeve ser tudo o que é necessário para executar a atualização.

Quando o downgrade estiver concluído, use Fontes de Software para desativar o repositório de atualizações de pré-lançamento (proposta pela natty) e remova o aumento temporário de prioridade:

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

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

ændrük
fonte
1
Solução interessante, provavelmente melhor e mais geral que a minha. A propósito, o número de pacotes desclassificados é o mesmo, confirmando a correção de ambas as abordagens.
enzotib 2/09/11
2

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

O script a seguir 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 awkscript, chamado 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 repositório proposto NÃO deveria ter sido desativado ainda.

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

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

Para estar seguro, adicione a --simulateopção apt-getno final do script bash.

enzotib
fonte
2

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

Caso você tenha um problema com um pacote, poderá reverter esse pacote usando o método darent present (depois de desativar -proposed), ou poderá usá-lo sudo aptitude install packagename/natty. Mais importante, porém, você deve registrar um bug no pacote. Poucas pessoas realmente testam a proposta de 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. Portanto, se você tiver algum problema, informe.

johanvdw
fonte
1

Em sináptico, você pode desativar o repositório proposto e atualizar suas fontes. Você verá que todos os pacotes que foram atualizados aparecem como instalados localmente (já que eles não estão mais nos repositórios de repositórios).

Agora você terá que "fazer o downgrade" desses pacotes. Selecione um por um e, no menu superior, escolha:

package > force version

(ou Control + E)

Um menu será exibido com as opções disponíveis. Eu escolheria o número da versão inferior para cada pacote. Se você cometer um erro e houver uma versão mais recente nos repositórios normais, ela será resolvida em uma atualização posterior.

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

animaletdesequia
fonte
O último parágrafo é apenas especulação e, portanto, deve ser um comentário sobre a questão ou pesquisado adequadamente.
Karl Richter