apt-mark Mantendo um pacakge para uma versão principal (não um menor específico)

2

Eu quero manter versões de pacotes em meus servidores para evitar que as alterações na infraestrutura quebrem nosso código (Alterações do mongodb 2.4 para 2.6, por exemplo.)

Eu sei que posso (por exemplo) apt-mark hold package , por exemplo, mas paro de receber patches de segurança e pequenas atualizações.

Além disso, gostaria de instalar pacotes com a configuração de uma versão principal (mas não secundária)

por exemplo, sei que posso:

sudo apt-get install -y rabbitmq-server=3.3.5

Mas quero limitar a instalação a uma versão principal (3. *)

Como isso pode ser alcançado?

    
por alonisser 09.11.2014 / 15:47

1 resposta

0

Você pode fixar em um conjunto curinga de números de versão. Veja man apt_preferences para um exemplo:

% bl0ck_qu0te%

Assim, por exemplo, no Ubuntu 16.04, onde xenial-backports tem uma prioridade padrão de 100, a política inicial para debhelper é:

$ apt-cache policy debhelper
debhelper:
  Installed: 9.20160115ubuntu3
  Candidate: 9.20160115ubuntu3
  Version table:
     10.2.2ubuntu1~ubuntu16.04.1 100
        100 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
        100 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main i386 Packages
 *** 9.20160115ubuntu3 500
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

Depois fixei os backports para uma prioridade mais alta:

$ cat /etc/apt/preferences.d/debhelper
Package: *
Pin: release v=16.04,o=Ubuntu,a=xenial-backports,n=xenial,l=Ubuntu,c=main,b=amd64
Pin-Priority: 600

$ apt-cache policy debhelper
debhelper:
  Installed: 9.20160115ubuntu3
  Candidate: 10.2.2ubuntu1~ubuntu16.04.1
  Version table:
     10.2.2ubuntu1~ubuntu16.04.1 600
        600 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
        100 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main i386 Packages
 *** 9.20160115ubuntu3 500
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main i386 Packages

Novamente fixando 9.* versões de debhelper em uma prioridade ainda maior:

$ cat /etc/apt/preferences.d/debhelper
Package: *
Pin: release v=16.04,o=Ubuntu,a=xenial-backports,n=xenial,l=Ubuntu,c=main,b=amd64
Pin-Priority: 600

Package: debhelper
Pin: version 9.*
Pin-Priority: 800

$ apt-cache policy debhelper
debhelper:
  Installed: 9.20160115ubuntu3
  Candidate: 9.20160115ubuntu3
  Version table:
     10.2.2ubuntu1~ubuntu16.04.1 600
        600 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages
        100 http://jp.archive.ubuntu.com/ubuntu xenial-backports/main i386 Packages
 *** 9.20160115ubuntu3 800
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://jp.archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

Você só precisa criar um arquivo em /etc/apt/preferences.d que tenha:

Package: rabbitmq-server
Pin: version 3.*
Priority: 1001

Nenhum repositório tem uma prioridade maior que 1000 por padrão, 1001 é o suficiente para forçar o apt ao downgrade se necessário:

% bl0ck_qu0te%     
por muru 17.02.2018 / 03:31