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


206

Скажіть, що ви працюєте з сервером, і ви не хочете перейти на Тестування (видавлювання) від Stable (Lenny), щоб просто встановити необхідний пакет або два.

Який найкращий спосіб встановити лише певні пакети з Тестування?


2
Про це говорить остання офіційна документація: Пакети із змішаних джерел архівів .
Олексій

Відповіді:


183

Багато людей, схоже, бояться змішати стабільність з тестуванням, але, чесно кажучи, тестування досить стабільне саме по собі, і при належних налаштуваннях та перевірці рішень ви можете уникнути "дрейфу стабільності", який ставить ваші основні пакети на нестабільний шлях.

"Тестування є досить стабільним ??" , Ви запитаєте. Так. Для того, щоб пакет міг перейти з нестабільного до тестування, він повинен мати нульові відкриті помилки протягом 10 днів поспіль. Ймовірно, що, особливо для більш популярних пакетів, хтось збирається подати звіт про помилку для нестабільної версії, якщо щось не так.

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

Ось що я рекомендую для налаштування:

Спочатку створіть такі файли в /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

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

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

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

Тепер, створивши відповідний набір для /etc/apt/sources.list.d:

stable.list: Копія з оригіналу /etc/apt/sources.list. Перейменуйте старий файл на щось подібне sources.list.orig.

testing.list: Те саме, що stable.list, крім с testing.

unstable.list: Те саме, що stable.list, за винятком unstable, і видалити списки безпеки.

experimental.list: Те саме, що unstable.list, крім с experimental.

Ви також можете додати oldstableв sources.lists.dі preferences.d(використовувати пріоритет 1), хоча цей показник, як правило, закінчується і зникає до наступного стабільного циклу. У подібних випадках ви можете використовувати http://archive.debian.org/debian/і "жорсткий код" версії Debian (etch, lenny тощо).

Щоб встановити тестову версію пакету, просто скористайтеся aptitude install lib-foobar-package/testingабо просто перейдіть у графічний інтерфейс придатності та виберіть версію всередині деталей пакета (натисніть клавішу Enter, яку ви шукаєте).

Якщо ви отримуєте скарги на конфлікт пакетів, спочатку подивіться на рішення. У більшості випадків першим буде "не встановлювати цю версію". Навчіться використовувати варіанти прийому / відхилення роздільної здатності для пакета. Наприклад, якщо ви встановлюєте foobar-пакет / тестування, і першим рішенням є "не встановлювати foobar-пакет / тестування", то позначте цей вибір як відхилений, а інші рішення ніколи більше не перейдуть до цього шляху. У таких випадках вам, мабуть, доведеться встановити кілька інших пакетів тестування.

Якщо він стає занадто волохатим (як, наприклад, намагається оновити libc або ядро ​​чи якусь іншу величезну основну систему), то ви можете або відхилити ці шляхи оновлення, або взагалі повернутися з початкового оновлення. Пам’ятайте, що оновити матеріал буде лише до тестування / нестабільності, якщо ви дозволите це.

EDIT: виправлено декілька пріоритетних штифтів та оновлено список.


4
Ви працювали apt-get updateпісля створення файлів конфігурації?
Потік

3
За допомогою цього методу я отримую (що мені здається) непослідовну поведінку. "apt-get install -t тестування appX" не відповідає тому, як "apt-get install appX / testing" (див. serverfault.com/q/646934/132528 ) - я здогадуюсь, що мова йде лише про спосіб цього методу змушує вирішувати пріоритети, хоча це не інтуїтивно зрозуміло для мене?
eugenevd

7
ВАЖЛИВО: автор обрав значення переваги фіксації для стабільності / безпеки, яке вище значення за замовчуванням Release ... див. Serverfault.com/a/653552/120130 для отримання додаткової інформації
Alex Ryan

7
Ця відповідь просто зламала мою систему. Після спроби sudo apt-get updateя отримав помилку оновлення. Потім перезапустили, що дало мені Xsession error, знову перезапустили, і тепер у мене немає Gui. /dev/sda1/тепер повний. Чудово.
luchonacho

3
Я рекомендую людям прислухатися до негативних коментарів до цієї публікації. Я щойно покусав його на недавньому оновлення Debian 9, яке було виправлено шляхом повернення цих змін. Послухайте поради в статті Debian з цього приводу: wiki.debian.org/DontBreakDebian (прокрутіть до Не робити франкенДебіан)
Брендон Арнольд

98

В /etc/apt/apt.conf.dдодати наступний файл

99defaultrelease:

APT::Default-Release "stable";

в /etc/apt/sources.list.d- додайте URL-адреси для тестування / нестабільних джерел

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

бігати

apt-get update

а потім встановіть те, що вам потрібно

apt-get -t testing install something

Будьте дуже обережні, якщо встановите речі, які мають велику кількість залежностей. Переважно не робити цього на виробництві.

Ви також можете спробувати свою удачу в репортерах або схожих сховищах.


1
Ого. Це було швидко. Я розміщував повідомлення, щоб поділитися інформацією, яку я щойно натрапив! Хороший!
Гарет

Я ніколи раніше не використовував метод apt.conf. Здається простішим, що метод файлу уподобань, але дає вам менш точний контроль. - Чашки
Чашки

4
Відповідь потребує оновлення; ця конфігурація повністю зламає речі тепер, коли вичавнення стало стабільним, і лонни стало старим.
El Yobo

1
Більше не використовується, оновіть
Lothar

4
у новіших випусках debian немає файлу apt.conf, замість цього редагуйте /etc/apt/apt.conf.d/70debconf
Hayden Thring

49

apt_preferences

Визначте рівень за замовчуванням, до якого система повинна «безпечно оновити» у файлі / etc / apt / preferences:
man apt_preferences

З apt_preferences можна багато чого зробити, але для простоти ...

Мені потрібно було встановити єдиний пакет (autoMysqlBackup), який був доступний лише в Тестуванні. Рішенням було додати наступне до / etc / apt / переваг:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

З додаванням кількох сховищ до /etc/apt/sources.list придатність тепер буде оновлена ​​лише до вказаного випуску, навіть якщо репозиції пізнішого випуску перераховані (у цьому випадку "стабільні").

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Отже, щоб встановити цей пакет, все, що вам потрібно зробити, це:

$ aptitude install -t testing packageName 

Це також хороший метод, не так швидко, як apt.conf, але дозволяє контролювати всі ваші різні джерела відносно.
Чашки

2
Це занадто складно для завдання ... Використання APT :: Default-Release встановлює пріоритет виводу на 990 (подібно до того, як ви встановили його на 900), а негативне закріплення для решти насправді не потрібно. . Під час dist-оновлення стабільний пакет все одно має пріоритет, і як тільки ви явно перелічите щось у командному рядку, його негативний пріоритет закріплення в основному буде проігноровано.
Рафаель Герцог

Я не знаю, як відповісти вам @Raphael. Здається, дуже елегантний спосіб робити речі. Я використовував спритневе закріплення раніше років тому, але ніколи насправді не отримував. Приклади, які я використовував вище, прямо зі сторінки "apt_preferences man".
Гарет

2
Підтвердьте, що це добре працює на вичавленні
tomfanning

3
@Lothar: Це працює на Debian 6. Тільки тому, що файл не існує, це не означає, що він не працює. Просто створіть файл і додайте налаштування. Цитата зі сторінки чоловіка: "Якщо файл налаштувань відсутній або якщо у файлі немає запису, який стосується певної версії, то пріоритет, призначений цій версії, є пріоритетом розповсюдження, до якого належить ця версія."
rzetterberg

13

Щодо того, що варто, загальна порада, яку я завжди бачив, - це "Не змішуй стабільно ні з чим". Більшість навчальних посібників для змішаних систем призначені для тестування на змішування та нестабільні.

Здається, міркування полягають у тому, що якщо ви змішаєте стабільність із тестуванням, для самих базових пакетів (наприклад, libc6) знадобляться оновлення (для того, щоб встановити програмне забезпечення з тестування), і як тільки ці основні пакети перейдуть до тестування, вся система може пройти таким чином.

Ось дві альтернативи:

  1. Використовуйте Backports .
  2. Встановіть вихідний рядок із тестування та спробуйте створити пізнішу версію, яку ви хочете, з джерела .

1
Я згоден. Я просто спробував оновити libdvdread4 від тестування через помилку у версії в wheezy / stable. Хоча, хоча, принести останній libc. Тож я просто схопив вихідний пакет для libdvdread4 зі стайні та промацував його зміною джерела 1 рядка та відновив його. Шлях краще, ніж тягнути всілякі пакети з тестування. Тепер усі пакети все ще є "стабільними", і я просто змінив 1 рядок, який мені потрібен.
дгрант

12

Документація про debian є великою темою, і я настійно раджу зануритися, оскільки це справді розкриє красу системи debian.

Погляньте на те, як зберегти змішану систему , це пояснить усе, що вам потрібно знати.


1
Здається, це той самий метод, який використовується у відповіді @pQd, тому він не застосовується до debian> = 6.0. Також в заголовку посилання йдеться про "застарілу документацію" зараз. Також здебільшого посилається лише на відповідь.
декіс

Хоча @dequis має рацію в тому, що посилання здається застарілим, я просто дотримувався вказівок на Debian 8 (тестування), щоб встановити пакет з нестабільного, і все, здається, працює просто чудово. Хтось отримав сучасне посилання на документацію?
domsson

1
Це, ймовірно, буде те , що ви шукаєте: debian.org/doc/manuals/debian-reference / ...
tomdeb

7

Інший спосіб, який може запобігти встановленню занадто великої кількості залежностей від Testing або Sid, полягає в наступному: ви скажете apt-get, щоб отримати джерело пакету від Testing або Sid і створити пакет для вашої системи за допомогою інструментів Debian (не потрібно вручну повозити з джерелами).

Цитуючи звідси:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

Як я можу підтримати пакет sid на тестування чи стабільність?

Встановіть джерело Debian (та інструменти розробки, особливо дебелпер, devscripts та build-basic), а потім складіть пакет.

Крок за кроком:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Отримані деби повинні бути в поточному каталозі і можуть бути встановлені за допомогою dpkg -i the.deb.


4

Я роблю це протягом тривалого періоду часу, щоб впевнено сказати, що це досить безпечно і це може бути зручно. З наведеною нижче програмою стабільна версія буде встановлена ​​за замовчуванням, однак Aptitude також дозволить вам вибрати підтримувану або нестабільну версію, якщо це потрібно:

введіть тут опис зображення

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

  • Створіть '/etc/apt/apt.conf.d/10defaultrelease' та введіть його вміст так:
Apt :: default-Release "стабільний";
  • Відредагуйте "/etc/apt/sources.list", щоб додати нестабільні та резервні джерела, щоб це виглядало приблизно так:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Офіційна мульти-архітектура amd64 / i386 NETINST # 1 20110205-14: 45] / видавити головну

deb http://ftp.us.debian.org/debian/ видавити головне
deb-src http://ftp.us.debian.org/debian/ видавити головне

deb http://security.debian.org/ видавити / оновити головне
deb-src http://security.debian.org/ видавити / оновити головне

# видавити-оновити, раніше відомий як "мінливий"
deb http://ftp.us.debian.org/debian/ головне видавлювання
deb-src http://ftp.us.debian.org/debian/ головний сервіс

# стискати спини
# http://backports.debian.org/Instructions/
деб http://backports.debian.org/debian-backports головний стис-backports main

# нестабільна
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ нестабільний головний
deb-src http://ftp.us.debian.org/debian/ нестабільний головний

# невільний колишній sun java
#deb http://ftp.us.debian.org/debian/ видавити невільно
# deb-src http://ftp.us.debian.org/debian/ видавити невільно
  • Редагувати etc/apt/preferencesфайл закріплення - якщо файл не існує, створіть його.
# Пріоритети закріплення пакета
# Див. Http://wiki.debian.org/AptPreferences та http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# В оболонці горіха встановлюється найвищий PIN-код
#
# За замовчуванням Pining є наступним, що є додатком до наших налаштувань:
№ 990 - для версії, яка не встановлена, але DO належить до нашої настройки "APT :: Default-Relase" стабільний ".
№ 500 - для версій, які не встановлені і не належать до цільового випуску
№ 100 - для вже встановлених пакетів, це також означає інші версії цього ж пакету
№1 - для експериментальних пакетів; пакети з "NotAutomatic: так"
#
# Наші шпильки
№ 400 - бекпорти, які можна безпечно встановити без необхідності оновлення інших пакетів
# 50 - нестабільні пакети, примусові установки на екрані деталей можуть призвести до конфліктів

Пакет: *
Контакт: відпустіть n = стиснення-спинки
Пріоритет: 400

Пакет: *
Pin: випустити a = нестабільно
  • Створіть '/etc/apt/apt.conf.d/100guiconf' та встановіть Aptitude так, щоб відображалася інформація про фіксацію.
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";

1
Просто оновлення, що крім вищезазначеного, я вирішив запустити всі мої системні пакети із сховищ розробки тестування. Тож у source.listньому слід сказати кодове ім'я jessieзамість squeeze. Політика Debian testingмайже стабільна, і пакети були майже такими ж новими, як і у unstableсховищі. Тут у мене не вистачає місця, тому, будь ласка, подивіться на: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates та wiki.debian.org/StableProposedUpdates ; останні два є додатковими джерелами сховища.
Даніель Соколовський

2

Якщо ваш вибір пакунків більше задіяний або інсталяція буде повторена на декількох машинах, ви можете розглянути можливість створення приватного сховища, яке відображає підмножину офіційних сховищ. Для цього потрібно трохи попрацювати, щоб налаштувати сховище, але винагороду легко підтримувати з мінімальним конфігурацією для кожного клієнта та повторюваними результатами при виконанні десятків установок. Я вважаю це корисним навіть тоді, коли встановлюється лише один або два пакети, і використовую цей метод для автоматизації та підтримки встановлення хмари. Один сервер на дешевому VPS може обробляти десятки приватних сховищ.

Щоб налаштувати ваш приватний сервер сховища:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Потім налаштуйте ваш веб-сервер за вибором для обслуговування статичних файлів репозиторію. Можливо, захистити сховище сертифікатом безпеки та базовою автентифікацією.

Щоб автоматично підтримувати ваше приватне сховище та витягувати оновлення з висхідного потоку, покладіть вище в сценарій та запустіть із завдання cron.

Щоб налаштувати клієнтську машину, на своєму клієнтському комп'ютері:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Для обслуговування клієнтської машини та залучення всіх оновлень приватного репозиторію на клієнтській машині:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

Інший варіант - завантажити замість вихідного пакету тестування. APT може автоматично створити вихідний пакет після завантаження. Таким чином, тестування оновлень не впливатиме на ваші стабільні пакети. Єдина компроміс полягає в тому, що це займе більше часу, ніж просто завантаження та встановлення двійкового пакету.

Щоб налаштувати APT для завантаження вихідних пакетів з тестування, просто додайте:

deb-src http://<your debian mirror here> testing main

Якщо ви просто хочете слідкувати за поточним тестуванням, а не майбутніми тестуваннями, замініть "тестування" на поточне кодове ім'я (на момент написання це "buster")

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