2

Я использую пакет, предоставленный в PPA на Ubuntu. Я использую версию PPA, потому что версия Debian анемична до такой степени, что она фактически сломана.

Сегодня, когда я прошел цикл apt-get update and apt=get dist-upgrade , мне представили:

$ 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 пытается установить пакеты, которые вызывали у меня проблемы в прошлом: binutils-arm-none-eabi и gcc-arm-none-eabi . Даже стандартное upgrade пытается установить те же пакеты, которые доставили мне неприятности.

Я хочу навсегда заблокировать пакеты дистрибутива для binutils-arm-none-eabi и gcc-arm-none-eabi . Как один из них постоянно блокирует пакет дистрибутива, но разрешает PPA, который предоставляет тот же пакет?

1 ответ1

2

В APT вы "закрепляете" пакеты - то есть указываете пользовательские настройки пакетов на основе различных свойств.

Сначала запустите apt-cache policy чтобы увидеть свойства настроенных репозиториев, и найдите тот, который специфичен для вашего PPA. Вероятно, он будет иметь что-то вроде release n=precise (на основе релиза Ubuntu, на который он нацелен) или, по крайней мере, origin launchpad.net (на основе исходного сайта):

$ 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

Затем создайте файл /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

Для Pin используйте свойство репозитория, которое вы нашли ранее. В качестве приоритета выберите число, которое выше, чем в любом из обычных репозиториев Debian.

Наконец, запустите apt-cache policy binutils-arm-none-eabi - на этот раз с именем пакета - чтобы убедиться в правильности применения настроек:

$ 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .