Por que -t release não faz o downgrade do pacote enquanto o pacote / release faz?

1

Ao atualizar um pacote, -t ou --default-release funciona:

➜  ~  sudo apt-get install -t unstable libpam-gnome-keyring
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  libpam-gnome-keyring
1 upgraded, 0 newly installed, 0 to remove and 376 not upgraded.
Need to get 284 kB of archives.
After this operation, 22.5 kB disk space will be freed.
(Reading database ... 268717 files and directories currently installed.)
Preparing to unpack .../libpam-gnome-keyring_3.12.0-2_i386.deb ...
Unpacking libpam-gnome-keyring (3.12.0-2) over (3.8.2-2+b1) ...
Setting up libpam-gnome-keyring (3.12.0-2) ...

Mas quando tento usá-lo para fazer o downgrade, não funciona:

➜  ~  sudo apt-get install -t testing libpam-gnome-keyring
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libpam-gnome-keyring is already the newest version. ## Why???
libpam-gnome-keyring set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 25 not upgraded.

A única maneira é usar o método package/target_release :

➜  ~  sudo apt-get install libpam-gnome-keyring/testing
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Selected version '3.8.2-2+b1' (Debian:testing [i386]) for 'libpam-gnome-keyring'
The following packages will be DOWNGRADED:
  libpam-gnome-keyring
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 272 kB of archives.
After this operation, 22.5 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
dpkg: warning: downgrading libpam-gnome-keyring from 3.12.0-2 to 3.8.2-2+b1
(Reading database ... 268716 files and directories currently installed.)
Preparing to unpack .../libpam-gnome-keyring_3.8.2-2+b1_i386.deb ...
Unpacking libpam-gnome-keyring (3.8.2-2+b1) over (3.12.0-2) ...
Setting up libpam-gnome-keyring (3.8.2-2+b1) ...

Por que o -t não faz downgrade de pacotes?

    
por Braiam 21.08.2014 / 15:39

1 resposta

1

A opção -t apenas remove as preferências de fixação do apt e define a versão selecionada com uma prioridade 990, o equivalente a isto:

Package: *
Pin: release a=testing # for testing
Pin-Priority: 900

Esta prioridade não é suficiente para forçar um downgrade do pacote. Para forçar um downgrade de pacote, você precisa de 1000 ou mais prioridade para o release que está tentando fazer o downgrade, ou -1 ou menos no pacote que a versão vem do release que você deseja remover.

package/release faz algo totalmente diferente. Ele seleciona a versão mais recente no arquivo do pacote, caso haja mais de um, e instala somente esse pacote. O equivalente a:

apt-get download package=version
dpkg -i --force-downgrade package.deb

Em resumo, -t e package/release seguem procedimentos diferentes, e os únicos comandos capazes de fazer downgrade de pacotes do apt são os seletores de versão explícitos: package=version e package/release .

    
por 21.08.2014 / 15:39

Tags