Eu tenho vários pacotes de mesa que eu havia atualizado para uma versão PPA, antes de limpar o PPA para poder atualizar meu sistema. As diferenças nas versões são pequenas (elas são tecnicamente as mesmas, apenas um conjunto de bibliotecas era do git e os outros são as versões finais).
Se eu tentar fazer o downgrade via Synaptic, apt-get ou aptitude, sou jogado no inferno das dependências.
Existe uma maneira de fazer o downgrade manual dos pacotes (talvez um por um) e marcar seus pacotes dependentes como imóveis (se isso faz sentido) até que eu termine?
PS esta pergunta: Como fazer o downgrade de um pacote via apt-get? é um pouco diferente e não ajuda nessa situação.
apt
dpkg
dependencies
downgrade
RolandiXor
fonte
fonte
ppa-purge
primeiro?synaptic
, quando selecionar o pacote xyz, todas as dependências serão selecionadas por padrão.Mas você sempre poderá desmarcar todas as dependências e apenas instalar o pacote principal.Mais tarde, poderá instalar todas as dependências.Mas novamente, isso funciona apenas se você estiver pronto para reinstalar.Respostas:
Eu nunca brinquei com isso antes, mas sugiro que você
hold
(oulock
) a versão das dependências que causam problemas. Dessa forma,apt
há um número mais limitado de soluções possíveis e talvez não fique confuso quando você tenta fazer o downgrade dos outros pacotes.Se nada mais funcionar, você pode seguir a abordagem manual sugerida nesta resposta: Como fazer o downgrade de um pacote via apt-get? . Basicamente, baixar os necessários
.deb
pacotes manualmente, em seguida, instalá-los um por um com o de nível mais baixodpkg
e um dos seus argumentos contundentes:--ignore-depends
,--force-depends
,--force-depends-version
, ou mesmo--force-all
.No mesmo espírito que o acima, você tem o
--force-downgrade
argumento:Mas isso pressupõe que você leu
man dpkg
e entendeu o que faz:Consulte Erro: número da versão não inicia com dígito e Como instalar uma versão mais antiga do Java e Como instalar uma versão mais antiga do pacote, como o líquido 2.2.2? para exemplos de:
E consulte Como instalar um pacote sem instalar algumas dependências? por exemplo (junto com o aviso apropriado) de:
Outra abordagem seria criar um
.deb
pacote fictício usando oequivs
pacote (e talvez um nome ligeiramente diferente). A instalação do pacote fictício deve permitir a remoção do pacote "true", mantendo os deps relevantes e, em seguida, instalar a versão mais antiga. Não tenho certeza de como exatamente isso funcionaria, mas verifique este tópico relevante para obter detalhes: Como remover um deb sem remover suas dependências .fonte
Você pode primeiro usar
apt-mark
para marcar todas as dependências do pacote de destino (e talvez também as recomendadas / sugeridas) instaladas no sistema como instalações manuais . Depois disso, instale as versões anteriores do softwareapt-get
mencionando explicitamente a versão.Para listar a dependência, pacotes recomendados e sugeridos para o pacote de destino:
Marcando pacotes como instalados manualmente :
(use isso para todas as dependências, recomendações e sugestões.)
Remova o pacote de destino:
Para ver uma lista de versões de pacotes para as quais você pode fazer o downgrade / upgrade, use:
Instale a versão de destino do pacote necessário:
ou
PS. Se a lista de dependências / pacotes recomendados / sugeridos , ou seja, aqueles a serem marcados com
apt-mark
for grande, salve a lista pretendida da saída empacotadaapt-cache show <target-package-name>
em qualquer arquivo, digamos/path/to/foo
e use oapt-mark
em uma combinação como esta:fonte
apt-cache policy <target-package-name>
para ter uma lista de versões de pacotes que você pode desclassificar / upgrade to ..Acabei de passar pela dor de atualizar para uma versão upstream de um pacote e depois decidir fazer o downgrade. Isso foi feito através de um repositório privado de mantenedores. No meu caso, tratava-se de experimentar a versão mais recente do systemd 233 (ainda não lançada).
A chave é entender que você precisa especificar todos os pacotes que devem ser rebaixados. Se você acertar, é provável que faça o que quiser. Se você perder algo, o apt dirá que a ação fará com que muitos pacotes sejam removidos. Para garantir que usamos o sinalizador '-s' para experimentar o downgrade antes de realmente fazer isso.
Os passos que você precisa seguir são:
1) Liste todas as dependências que foram atualizadas para upstream (use outra palavra-chave se sua situação for diferente):
Isso fornece uma lista de pacotes com um número de versão upstream.
2) Liste qual é a versão estável correta para cada pacote:
3) Verifique tudo que é bom:
(não tenho certeza se --reinstall foi necessário, mas foi o que eu fiz)
4) Remova o -s e faça-o.
fonte