Bloqueia permanentemente a instalação do pacote distro?

2

Estou usando um pacote fornecido em um PPA no Ubuntu. Eu uso a versão do PPA porque a versão do Debian é anêmica a ponto de ser efetivamente quebrada.

Hoje, quando eu passei pelo ciclo de apt-get update and apt=get dist-upgrade , fui apresentado a:

$ sudo apt-get dist-upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  binutils-arm-none-eabi libnewlib-arm-none-eabi libnewlib-dev
The following packages will be upgraded:
  gcc-arm-none-eabi libcurl3 libcurl3-gnutls
3 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 338 kB/24.7 MB of archives.
After this operation, 9,572 kB disk space will be freed.

dist-upgrade está tentando instalar os pacotes que me causaram o problema no passado: binutils-arm-none-eabi e gcc-arm-none-eabi . Mesmo um upgrade padrão tenta instalar alguns dos mesmos pacotes que me causaram problemas.

Eu quero bloquear permanentemente os pacotes da distro para binutils-arm-none-eabi e gcc-arm-none-eabi . Como um bloqueia permanentemente um pacote de distribuição, mas permite um PPA que forneça o mesmo pacote?

    
por jww 16.09.2014 / 02:34

1 resposta

2

No APT, você "fixa" pacotes - ou seja, especifica preferências personalizadas de pacotes com base em várias propriedades.

Primeiro, execute apt-cache policy para ver as propriedades dos repositórios configurados e procure um que seja específico para o seu PPA. Ele provavelmente terá algo como release n=precise (baseado no release do Ubuntu que ele tem como alvo) ou pelo menos origin launchpad.net (baseado no site de origem):

$ apt-cache policy | egrep -i "(ppa|arm)"
 500 http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu/ trusty/main i386 Packages
     release v=14.04,o=LP-PPA-terry.guo-gcc-arm-embedded,a=trusty,n=trusty,l=GNU ARM Embedded Toolchain,c=main
     origin ppa.launchpad.net
 500 http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu/ trusty/main amd64 Packages
     release v=14.04,o=LP-PPA-terry.guo-gcc-arm-embedded,a=trusty,n=trusty,l=GNU ARM Embedded Toolchain,c=main
     origin ppa.launchpad.net
     release v=14.04,o=LP-PPA-app-review-board,a=trusty,n=trusty,l=Application Review Board PPA,c=main
     release v=14.04,o=LP-PPA-app-review-board,a=trusty,n=trusty,l=Application Review Board PPA,c=main

Em seguida, crie um arquivo /etc/apt/preferences :

Package: binutils-arm-none-eabi
Pin: origin ppa.launchpad.net
Pin-Priority: 900

Package: gcc-arm-none-eabi
Pin: origin ppa.launchpad.net
Pin-Priority: 900

Para Pin , use a propriedade do repositório que você encontrou anteriormente. Para a prioridade, escolha um número maior do que qualquer repositório regular da Debian.

Por fim, execute apt-cache policy binutils-arm-none-eabi - desta vez com o nome do pacote - para verificar se as preferências foram aplicadas corretamente:

$ apt-cache policy gcc-arm-none-eabi
gcc-arm-none-eabi:
  Installed: 4-8-2014q2-0trusty10
  Candidate: 4-8-2014q2-0trusty10
  Package pin: 4-8-2014q2-0trusty10
  Version table:
     4.8.2-14ubuntu1+6 900
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
 *** 4-8-2014q2-0trusty10 900
        500 http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status
por 16.09.2014 / 07:02