Как установить определенную версию пакета, если она определена двумя разными PPA? [dубликат]

Скажем, я добавил PPA, у которого есть пакет X, который я хочу, но у него также есть Y-пакет, от которого я не хочу использовать или получать обновления. Как я могу из одного и того же PPA получать обновления для определенного пакета, но отказывать в обновлениях от того же PPA для других пакетов.

Поэтапный пример был бы хорош, так как это произошло со мной в нескольких PPA которые имеют конкретный пакет, который я хочу, но также добавляют целую кучу других, которые я еще не хочу обновлять.

18
задан 1 February 2017 в 18:13

6 ответов

Вы использовали бы то, что называется «pinning»

Предполагая, что вы устанавливаете пакет foo из PPA, вам наверняка потребуется установить любые зависимости от ppa.

] Но если есть другие программы, вы можете указать, какой репозиторий использовать с фиксацией.

См. Ubuntu wiki pinning

Существует пример привязки ppa на этой странице

Ubuntu wiki pinning

На странице wiki:

Чтобы сделать apt-get обновлением как можно более безболезненным, установите более низкий приоритет Pin на PPA, это остановит нежелательные версии пакетов от установки.

Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

. Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

d11] Добавьте в файл следующее:

Package: * Pin: release o=LP-PPA-ubuntu-mozilla-daily Pin-Priority: 400

Используйте следующие команды до и после, чтобы проверить, что приоритет Pin-Priority обновлен.

apt-cache policy apt-cache policy firefox-3.5
15
ответ дан 18 July 2018 в 10:48

Вы использовали бы то, что называется «pinning»

Предполагая, что вы устанавливаете пакет foo из PPA, вам наверняка потребуется установить любые зависимости от ppa.

] Но если есть другие программы, вы можете указать, какой репозиторий использовать с фиксацией.

См. Ubuntu wiki pinning

Существует пример привязки ppa на этой странице

Ubuntu wiki pinning

На странице wiki:

Чтобы сделать apt-get обновлением как можно более безболезненным, установите более низкий приоритет Pin на PPA, это остановит нежелательные версии пакетов от установки.

Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

. Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

d11] Добавьте в файл следующее:

Package: * Pin: release o=LP-PPA-ubuntu-mozilla-daily Pin-Priority: 400

Используйте следующие команды до и после, чтобы проверить, что приоритет Pin-Priority обновлен.

apt-cache policy apt-cache policy firefox-3.5
16
ответ дан 24 July 2018 в 19:39

Вы использовали бы то, что называется «закрепление»

Предполагая, что вы устанавливаете пакет foo из PPA, вам почти наверняка потребуется установить любые зависимости от ppa.

Но если есть другие программы, вы можете указать, какой репозиторий использовать с пиннингами.

См. Ubuntu wiki pinning

Существует пример привязки ppa на этой странице

https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA

На странице wiki:

Чтобы сделать apt-get обновлением как можно более безболезненным, установите более низкий приоритет Pin на PPA, это остановит установку нежелательных версий пакета. После установки пакеты из PPA ubuntu-mozilla-daily всегда будут проигрывать в любом конкурсе с пакетами из других репозиториев, даже если они имеют более высокую версию.

Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

Добавьте в файл следующее:

Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400

Используйте следующие команды до и после, чтобы проверить, что приоритет PIN-кода обновлен.

apt-cache policy

apt-cache policy firefox-3.5
16
ответ дан 31 July 2018 в 22:42

Вы использовали бы то, что называется «закрепление»

Предполагая, что вы устанавливаете пакет foo из PPA, вам почти наверняка потребуется установить любые зависимости от ppa.

Но если есть другие программы, вы можете указать, какой репозиторий использовать с пиннингами.

См. Ubuntu wiki pinning

Существует пример привязки ppa на этой странице

https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA

На странице wiki:

Чтобы сделать apt-get обновлением как можно более безболезненным, установите более низкий приоритет Pin на PPA, это остановит установку нежелательных версий пакета. После установки пакеты из PPA ubuntu-mozilla-daily всегда будут проигрывать в любом конкурсе с пакетами из других репозиториев, даже если они имеют более высокую версию.

Создайте файл /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

Добавьте в файл следующее:

Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400

Используйте следующие команды до и после, чтобы проверить, что приоритет PIN-кода обновлен.

apt-cache policy

apt-cache policy firefox-3.5
16
ответ дан 9 August 2018 в 02:12

Прежде всего, если вы уже обновили пакеты из PPA по ошибке, см. этот ответ: https://askubuntu.com/a/142808/103117, в частности раздел об использовании ppa-purge. Поскольку я уже обновил пакеты, а apt-get не будет понижаться независимо от приоритетов, проще всего очистить все обновленные пакеты, а затем исправить приоритеты, а затем повторно добавить PPA и только обновить пакеты, которые вы хотите.

Подробное объяснение системы приоритета / пиннинга см. в man apt_preferences.

Если пакет доступен из нескольких источников, каждому из них будет присвоен приоритет, и вы увидите, что с помощью apt-cache policy <package name>. Например, я использую PPA под названием nathan-renniewaldock / ppa / ubuntu, и я не хочу устанавливать mysql-server-5.5 (мой «пакет Y»). Поэтому я могу проверить текущую ситуацию:

rob@frodo:~$ apt-cache policy mysql-server-5.5 mysql-server-5.5: Installed: 5.5.27-1~ppa1~precise Candidate: 5.5.27-1~ppa1~precise Version table: *** 5.5.27-1~ppa1~precise 0 500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages 100 /var/lib/dpkg/status 5.5.24-0ubuntu0.12.04.1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 5.5.22-0ubuntu1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Так как все приоритеты 500, согласно странице руководства, выбирается номер с наивысшим номером версии.

Если, например, вы хотите установить только ddclient («пакет X»), но не любой другой пакет, вы хотите уменьшить приоритет для всех пакетов в PPA, кроме ddclient. Создайте файл с именем /etc/apt/preferences.d/nathan-preferences. Обратите внимание, что все файлы в этом каталоге читаются, и есть некоторые правила о имени файла (он должен содержать только буквенно-цифровые символы, hypens, тире и не иметь расширения или заканчиваться на .pref).

Сначала нам нужно знаете, как идентифицировать наш PPA. Команда apt-cache policy самостоятельно передает информацию обо всех источниках. Я знаю, что у моего PPA есть «nathan» в названии, так что я делаю:

$ apt-cache policy | grep nathan 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main

Интересной частью является «o = LP-PPA-nathan-renniewaldock», который мы используем в / etc / apt /preferences.d/nathan-prefs:

Package: * Pin: release o=LP-PPA-nathan-renniewaldock Pin-Priority: 400 Package: ddclient Pin: release o=LP-PPA-nathan-renniewaldock Pin-Priority: 500

Это устанавливает все в PPA в приоритет 400, а затем возвращает ddclient до 500 по умолчанию. Теперь я могу проверить, что он имеет работал:

$ apt-cache policy ddclient ddclient: Installed: 3.8.0-11.4ubuntu1 Candidate: 3.8.1-0~ppa1~precise Package pin: 3.8.1-0~ppa1~precise Version table: 3.8.1-0~ppa1~precise 500 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages *** 3.8.0-11.4ubuntu1 500 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages 100 /var/lib/dpkg/status

Таким образом, ddclient имеет приоритет 500, что совпадает с исходным пакетом Ubuntu, но он будет установлен из nathan PPA, потому что это более высокая версия. Теперь давайте удостовериться, что другие пакеты не будут установлены:

$ apt-cache policy mysql-server mysql-server: Installed: 5.5.24-0ubuntu0.12.04.1 Candidate: 5.5.24-0ubuntu0.12.04.1 Version table: 5.5.27-1~ppa1~precise 0 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages *** 5.5.24-0ubuntu0.12.04.1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 100 /var/lib/dpkg/status 5.5.22-0ubuntu1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

В этом случае пакет из PPA nathan имеет приоритет 400, который ниже Ubuntu, поэтому, хотя он имеет более высокая версия не будет обновлена. Мы можем проверить:

$ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: ddclient 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 77.7 kB of archives. After this operation, 11.3 kB of additional disk space will be used. Do you want to continue [Y/n]?

Поскольку только пакет, который я хочу, должен быть обновлен, я с радостью могу сказать «да».

7
ответ дан 18 July 2018 в 10:48

Прежде всего, если вы уже обновили пакеты из PPA по ошибке, см. этот ответ: https://askubuntu.com/a/142808/103117, в частности раздел об использовании ppa-purge. Поскольку я уже обновил пакеты, а apt-get не будет понижаться независимо от приоритетов, проще всего очистить все обновленные пакеты, а затем исправить приоритеты, а затем повторно добавить PPA и только обновить пакеты, которые вы хотите.

Подробное объяснение системы приоритета / пиннинга см. в man apt_preferences.

Если пакет доступен из нескольких источников, каждому из них будет присвоен приоритет, и вы увидите, что с помощью apt-cache policy <package name>. Например, я использую PPA под названием nathan-renniewaldock / ppa / ubuntu, и я не хочу устанавливать mysql-server-5.5 (мой «пакет Y»). Поэтому я могу проверить текущую ситуацию:

rob@frodo:~$ apt-cache policy mysql-server-5.5 mysql-server-5.5: Installed: 5.5.27-1~ppa1~precise Candidate: 5.5.27-1~ppa1~precise Version table: *** 5.5.27-1~ppa1~precise 0 500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages 100 /var/lib/dpkg/status 5.5.24-0ubuntu0.12.04.1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 5.5.22-0ubuntu1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Так как все приоритеты 500, согласно странице руководства, выбирается номер с наивысшим номером версии.

Если, например, вы хотите установить только ddclient («пакет X»), но не любой другой пакет, вы хотите уменьшить приоритет для всех пакетов в PPA, кроме ddclient. Создайте файл с именем /etc/apt/preferences.d/nathan-preferences. Обратите внимание, что все файлы в этом каталоге читаются, и есть некоторые правила о имени файла (он должен содержать только буквенно-цифровые символы, hypens, тире и не иметь расширения или заканчиваться на .pref).

Сначала нам нужно знаете, как идентифицировать наш PPA. Команда apt-cache policy самостоятельно передает информацию обо всех источниках. Я знаю, что у моего PPA есть «nathan» в названии, так что я делаю:

$ apt-cache policy | grep nathan 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main

Интересная часть - «o = LP-PPA-nathan-renniewaldock», которую мы используем в / etc / apt /preferences.d/nathan-prefs:

Package: * Pin: release o=LP-PPA-nathan-renniewaldock Pin-Priority: 400 Package: ddclient Pin: release o=LP-PPA-nathan-renniewaldock Pin-Priority: 500

Это устанавливает все в PPA в приоритет 400, а затем возвращает ddclient до 500 по умолчанию. Теперь я могу проверить, что он имеет работал:

$ apt-cache policy ddclient ddclient: Installed: 3.8.0-11.4ubuntu1 Candidate: 3.8.1-0~ppa1~precise Package pin: 3.8.1-0~ppa1~precise Version table: 3.8.1-0~ppa1~precise 500 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages *** 3.8.0-11.4ubuntu1 500 500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages 100 /var/lib/dpkg/status

Таким образом, ddclient имеет приоритет 500, что совпадает с исходным пакетом Ubuntu, но он будет установлен из nathan PPA, потому что это более высокая версия. Теперь давайте удостовериться, что другие пакеты не будут установлены:

$ apt-cache policy mysql-server mysql-server: Installed: 5.5.24-0ubuntu0.12.04.1 Candidate: 5.5.24-0ubuntu0.12.04.1 Version table: 5.5.27-1~ppa1~precise 0 400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages *** 5.5.24-0ubuntu0.12.04.1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages 500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages 100 /var/lib/dpkg/status 5.5.22-0ubuntu1 0 500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

В этом случае пакет из PPA nathan имеет приоритет 400, который ниже Ubuntu, поэтому, хотя он имеет более высокая версия не будет обновлена. Мы можем проверить:

$ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: ddclient 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 77.7 kB of archives. After this operation, 11.3 kB of additional disk space will be used. Do you want to continue [Y/n]?

Поскольку только пакет, который я хочу, должен быть обновлен, я с радостью могу сказать «да».

7
ответ дан 24 July 2018 в 19:39

Другие вопросы по тегам:

Похожие вопросы: