Як встановити один пакет із тестування Debian або нестабільний на стабільному?


41

Я хочу встановити єдиний пакет (і його залежності, але лише настільки, наскільки вони не задовольняються в Wheezy) від Debian Jessie на мою систему Wheezy, не модернізуючи "все і кухонну раковину" до версій Jessie. Зокрема, я хотів би встановити kpcli , який доступний в упаковці в Джессі, але не в Wheezy.

Все, що я знайшов, вказує на те, що я повинен додати сховища Джессі до мого списку джерел, встановити закріплення, щоб тримати все на хрипі і лише брати єдиний пакет від Джессі, і він майже просто стане на місце. Однак це не стає мені місце. Якщо я створюю /etc/apt.d/sources.list.d/jessie.list із таким вмістом:

deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main

а потім створити /etc/apt/preferences.d/jessie за допомогою:

Package: *
Pin: release a=wheezy
Pin-Priority: 1001

Package: kpcli
Pin: release a=jessie
Pin-Priority: 450

і бігайте apt-get -u updateза ним apt-get -u install kpcli/jessie, тоді я очікую, що apt-get потягне kpcli і, можливо, невеличку жменю інших пакетів від Джессі, а залишок моєї встановленої системи залишить недоторканим. (У моїй системі встановлена ​​повністю сучасна інсталяція Wheezy.) Як варіант, якщо я отримав пріоритет пін-файлу занадто низьким, я би сподівався, що він нічого не зробить. Скоріше, у моїй системі apt-get хоче оновити кілька сотень пакунків.

Що, власне, потрібно, щоб встановити лише цей єдиний пакет версії Jessie, а залишок моєї системи Wheezy залишився недоторканим?

Зауважте, що в цьому конкретному випадку програмне забезпечення насправді написано на Perl, тому немає компіляції у бінарне чи щось подібне; однак існує декілька залежностей від модуля Perl. Отже, однією з можливих альтернатив буде встановлення .deb (завантажується вручну), використовуючи те, що лише (1) дозволяє вказати єдиний локальний архів .deb, який слід встановити, як dpkg -i, і (2) інтелектуально обробляє залежності. , яка dpkg -iне відповідає. Однак для всіх пошукових запитів, які я робив кілька разів, і не вдалося розробити простий у виконанні посібник, як це зробити, загальне рішення (те, що працює і для двійкових, і для компільованих пакетів) було б чудово .


4
Звичайний спосіб впоратися з цим - це бекспортинг - відновлення пакета з джерел Debian на Wheezy. Пакет, який ви використовуєте, здається, perl (або, принаймні, від цього залежить), тому, можливо, не складе труднощів. Якщо ви хочете отримати більше деталей, будь ласка, скажіть так. Я, напевно, можу надати покрокову інформацію, якщо вона вам справді потрібна.
Faheem Mitha

Відповіді:


15

Для кожного запису (стабільний, тестуючий, нестабільний) у вас є пріоритет PIN-коду 500. Ви не повинні використовувати PIN> 1000. Я використовую 1001 лише тоді, коли я хочу щось знизити. У мене є тестування + sid + експериментальні записи, вказані у /etc/apt/sources.listта наступному /etc/apt/preferencesфайлі:

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

Значення 500 за замовчуванням нестабільне. Отже, спробуємо перевірити льодовик:

# apt-cache policy iceweasel
iceweasel:
  Installed: (none)
  Candidate: 17.0.10esr-1~deb7u1
  Version table:
     26.0-1 0
        130 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
     24.2.0esr-1 0
        500 http://ftp.pl.debian.org/debian/ sid/main amd64 Packages
     17.0.10esr-1~deb7u1 0
        900 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

Тож, якби я спробував встановити льодохід, його було б завантажено з тестової гілки, оскільки він має найвищий пріоритет.

Спробуйте змінити пріоритети на:

Package: *
Pin: release a=wheezy
Pin-Priority: 900

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910

sudo apt-get -u install kpcli/jessieвсе ще надає мені 316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.запропоновані вами пріоритети. Якщо я це роблю apt-cache policy perl(один із пакетів, який він хоче оновити), він показує 5.18.1-5 як кандидат з пріоритетом 500, а встановлений 5.14.2-21 + deb7u1 також з пріоритетом 500. Це майже виглядає так, з будь-якої причини, apt не підбирає пріоритети ...
CVn

Гаразд, я щось отримав. Схоже, хитрість полягала у використанні Package: kpcli*(а не Package: kpcli), а потім Package: * Pin: release o=Debian Pin-Priority: -10у кінці. Тоді, звичайно, існують важкі залежності, що ведуть до версій Perl, доступних лише в Джессі, що, в свою чергу, потребує більш нового libc6! Я не збираюся йти цим шляхом, якщо чесно, але це, принаймні, отримало мені результат, за яким я йшов. Дякую!
CVn

25

Насправді є спосіб це зробити, не використовуючи прив'язку / пріоритети взагалі. Натомість ви можете вказати, з якого випуску за замовчуванням ви встановите пакунки, з яких потім будете використовуватись, якщо інше не вказано, використовуючи параметр випуску цілі. Це працює так само, якщо ви хочете встановити лише вибрані пакети, наприклад, із заднього списку.

Я покажу це для встановлення пакетів з Stretch в Jessie, оскільки це поточний стабільний / тестуючий, але це працює так само, як для встановлення пакетів Jessie в Wheezy, як спочатку запитували.

Спочатку додайте розтяжку як сховище, наприклад, у /etc/apt/sources.list.d/stretch.list:

deb http://ftp.debian.org/debian stretch main

Потім, щоб встановити випуск за замовчуванням, створіть такий файл, як /etc/apt/apt.conf.d/default-releaseмістить:

APT::Default-Release "jessie";

(Я думаю, що в Wheezy apt.conf.dне існувало, і вам потрібно буде вкласти цей фрагмент /etc/apt/apt.conf).

Тоді встановити пакет з тестування так само просто, як aptitude -t stretch install kpcliі вам не потрібно турбуватися про чіткі пріоритети.

Примітка: @amc в коментарях зазначив, що якщо ви використовуєте aptзамість aptitude, ви повинні використовувати "stable"як Default-Releaseзамість "jessie". Дякую! (Звичайно, ви можете використовувати і aptitudeз цим налаштуванням.)


... це виглядає як дійсно гладкий спосіб зробити це. Чому це офіційно не прийнято ??
JamesTheAwesomeDude

1
Я отримуюThe value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
Стівен Пенні

1
вам потрібно використовувати "стабільний" / "тестування" / тощо замість "jessie" / "stretch" для випуску за замовчуванням і при використанні apt
amc

6

Pin: release a=wheezyповинно бути Pin: release n=wheezy, можливо.

На чоловіковій сторінці :

Наступний запис присвоює високий пріоритет усім версіям пакунків, що належать до будь-якого дистрибутива, кодове ім'я якого - "jessie".

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

Так це правильно!


3
Не вдалося б це встановити ВСІ пакети від jessy?
rubo77
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.