Вопрос: Как я могу запустить Debian, но установить некоторые пакеты из тестирования?


Предположим, что вы используете сервер, и вы не хотите обновлять его до Testing (Squeeze) со Stable (Lenny), чтобы просто установить требуемый пакет или два.

Каков наилучший способ установки только определенных пакетов из тестирования?


175
2018-06-09 07:53


Источник


Это то, что должна сказать последняя официальная документация: Пакеты из смешанного источника архивов, - Alexey


Ответы:


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

«Тестирование довольно стабильно?», ты спрашиваешь. Да. Чтобы пакет мог перейти от нестабильного к тестированию, он должен иметь нулевые открытые ошибки в течение 10 последовательных дней. Скорее всего, особенно для более популярных пакетов кто-то собирается представить отчет об ошибке для нестабильной версии, если что-то не так.

Даже если вы не хотите смешивать среду, все равно приятно иметь такой вариант, если вы столкнетесь с чем-то, что требует более новой версии, чем то, что находится в стабильном состоянии.

Вот что я рекомендую для настройки:

Сначала создайте следующие файлы в /etc/apt/preferences.d:

security.pref:

Package: *
Pin: release l=Debian-Security
Pin-Priority: 1000

stable.pref:

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

testing.pref:

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

unstable.pref:

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

experimental.pref:

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

(Не бойтесь нестабильного / экспериментального материала здесь. Приоритеты настолько низки, что никогда не будут автоматически устанавливать какой-либо из этих вещей. Даже ветка тестирования будет вести себя, поскольку она будет только устанавливать пакеты, которые вы хотите использовать в тестировании.)

Теперь создадим соответствующий набор для /etc/apt/sources.list.d:

security.list:

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

stable.list:

deb     http://mirror.steadfast.net/debian/ stable main contrib non-free
deb-src http://mirror.steadfast.net/debian/ stable main contrib non-free
deb     http://ftp.us.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.us.debian.org/debian/    stable main contrib non-free

testing.list: Такой же как stable.list, за исключением testing,

unstable.list: Такой же как stable.list, за исключением unstable,

experimental.list: Такой же как stable.list, за исключением experimental,

Вы можете заменить зеркало steadfast.net тем, что хотите. Я бы рекомендовал использовать netselect-apt чтобы определить самое быстрое зеркало и использовать его для вашего первого выбора. ftp.us.debian.org может использоваться как резервная копия. Также важно использовать термины stable, testing, unstableи т. д., вместо squeeze, wheezy, sidи т. д., поскольку stable является движущейся мишенью, и когда наступает время для обновления до последней стабильной, apt / aptitude будет автоматически определять это.

Вы также можете добавить oldstable в sources.lists.d а также preferences.d (используйте приоритет 1), хотя этот прозвище будет стремиться к истечению и исчезнуть до следующего стабильного цикла. В подобных случаях вы можете использовать http://archive.debian.org/debian/ и «hardcode» - версия Debian (etch, lenny и т. д.).

Чтобы установить тестовую версию пакета, просто используйте aptitude install lib-foobar-package/testing, или просто перейдите в графический интерфейс aptitude и выберите версию внутри деталей пакета (нажмите Enter на интересующем вас пакете).

Если вы получаете жалобы на конфликты пакетов, сначала посмотрите на решения. В большинстве случаев первая из них будет «не устанавливать эту версию». Научитесь использовать выбор принимающего / отклоняющего решения для каждого пакета. Например, если вы устанавливаете foobar-package / testing, а первое решение - «не устанавливать foobar-package / testing», тогда отметьте этот выбор как отклоненный, а другие решения никогда не вернутся к этому пути еще раз. В таких случаях вам, вероятно, придется установить несколько других пакетов тестирования.

Если он становится слишком волосатым (например, он пытается обновить libc или ядро ​​или какую-либо другую огромную систему ядра), вы можете либо отклонить эти пути обновления, либо просто вернуться из первоначального обновления в целом. Помните, что это будет только обновление до тестирования / нестабильности, если вы позволите.


162
2018-04-23 02:38



Спасибо, использовал этот метод, и все работает так, как я ожидал! - Brad F Jacobs
Я пытаюсь использовать это, но я не могу разрешить любые зависимости вообще. Кажется, что ни apt-get, ни aptitude не будут искать зависимости в тестовых репозиториях. Есть ли способ решить это? - Tamás Szelei
Вы запустили apt-get update после создания файлов конфигурации? - Flow
ВАЖНО: автор выбрал значение привилегии для закрепления / стабильности, которое выше чем значение по умолчанию Release ... см. serverfault.com/a/653552/120130 для получения дополнительной информации - Alex Ryan
Этот ответ просто нарушил мою систему. После попытки сделать sudo apt-get update, Я получил ошибку обновления. Затем перезапустили, что дало мне Xsession error, снова перезапустился, и теперь у меня нет gui. /dev/sda1/ теперь полно. Отлично. - luchonacho


В /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

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

Вы также можете попробовать свою удачу Backports или аналогичный репозиторий.


86
2018-06-09 07:57



Вау. Это было быстро. Я отправлял сообщения, чтобы поделиться информацией, с которой я только что столкнулся! Хороший! - Gareth
Я никогда раньше не использовал метод apt.conf. Кажется более простым, что метод файлов предпочтений, но дает вам более точный контроль. - Куклы - Coops
Ответ требует модернизации; эта конфигурация полностью разрушит ситуацию, когда сжатие стало стабильным, а lenny стал старомодным. - El Yobo
Больше не использовать, пожалуйста, обновите - Lothar
в новых версиях debian нет файла apt.conf, вместо этого отредактируйте файл /etc/apt/apt.conf.d/70debconf - Hayden Thring


apt_preferences

Определите уровень по умолчанию, который система должна «безопасно обновить» в файле / etc / apt / preferences:
man apt_preferences

Вы можете многое сделать с apt_preferences, но ради простоты ...

Мне нужно было установить один пакет (autoMysqlBackup), который был доступен только в Testing. Решение заключалось в следующем: / etc / apt / preferences:

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, aptitude теперь будет только обновляться до указанной вами версии, даже если перечислены более поздние версии репозиториев (в данном случае «stable»).

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 

45
2018-06-09 08:04



Это тоже хороший метод, но не так быстро, как apt.conf, но позволяет вам управлять всеми вашими источниками относительным образом. - Coops
Это слишком сложно для задачи ... Использование APT :: Default-Release устанавливает приоритет вывода релиза на 990 (аналогично тому, как вы устанавливаете его на 900), а отрицательный пиннинг для остальных на самом деле не нужен. во время dist-upgrade стабильный пакет имеет приоритет в любом случае, и как только вы явно укажете что-то в командной строке, его отрицательный приоритет пиннинга будет в основном проигнорирован. - Raphaël Hertzog
Я не знаю, как ответить вам @ Рафаэлю. Это очень элегантный способ делать вещи. Я использовал apt pinning еще много лет назад, но я никогда не «получил» это. Примеры, которые я использовал выше, являются прямыми с man-страницы apt_preferences. - Gareth
Подтвердите, что это отлично работает при сжатии - tomfanning
@Lothar: он работает на Debian 6. Только потому, что файл не существует, это не значит, что он не работает. Просто создайте файл и добавьте настройки. Цитата из справочной страницы: «Если файл настроек отсутствует или нет записи в файле, который применяется к определенной версии, приоритет, назначенный этой версии, является приоритетом дистрибутива, к которому принадлежит эта версия». - rzetterberg


Дебианская документация обширна в предмете, и я настоятельно рекомендую копаться, так как это будет истинно раскрывать красоту дебианской системы.

Посмотри на Как сохранить смешанную систему, он объяснит все, что вам нужно знать.


12
2018-06-09 08:24



Это похоже на тот же метод, который используется в ответе @pQd, поэтому он не применяется к debian> = 6.0. Также название ссылки говорит «устаревшая документация». Также в основном ссылаются только на ответ. - dequis
Хотя @dequis прав в том, что ссылка, похоже, устарела, я просто выполнил инструкции на Debian 8 (тестирование), чтобы установить пакет из неустойчивого, и все, кажется, работает просто отлично. Кто-нибудь получил последнюю ссылку на документацию? - domsson
Скорее всего, это то, что вы ищете:debian.org/doc/manuals/debian-reference/... - tomdeb


Для чего это стоит, общий совет, который я всегда видел, - «Не смешивайте конюшню ни с чем». Большинство обучающих программ для смешанных систем предназначены для смешивания тестов и нестабильности.

Похоже, что рассуждение состоит в том, что если вы будете сочетать стабильность с тестированием, для самых простых пакетов (например, libc6) потребуются обновления (чтобы установить программное обеспечение из тестирования), и как только эти базовые пакеты перейдут на тестирование, вся система может дрейфовать таким образом.

Вот две альтернативы:

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

10
2018-06-09 13:09



Согласен. Я просто попробовал обновить libdvdread4 от тестирования из-за ошибки в версии в wheezy / stable. Тем не менее, он хочет использовать последний libc. Поэтому я просто взял исходный пакет для libdvdread4 из stable и исправил его с помощью изменения 1 строки и перестроил его. Лучше, чем вытягивать всевозможные пакеты от тестирования. Теперь все пакеты по-прежнему являются «стабильными», и у меня есть только однострочное изменение, которое мне нужно. - dgrant


Другой способ, который мог бы предотвратить установку слишком многих зависимостей от тестирования или 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 (и инструменты разработки, особенно   debhelper, devscripts и build-essential), а затем построить   пакет.

Шаг за шагом:

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 

Получающиеся debs должны быть в текущем каталоге и могут быть   установленный с dpkg -i the.deb.


7
2018-03-13 17:02





Я делаю это в течение длительного периода времени, чтобы быть уверенным в том, что он достаточно безопасен и может быть удобен. С установленной ниже стабильной версией установки будет установлено по умолчанию, однако Aptitude также позволит вам выбрать резервную или нестабильную версию, если это необходимо:

enter image description here

Есть четыре вещи, которые необходимо отредактировать, должен быть установлен выпуск пиннинга по умолчанию, источники нуждаются в резервных копиях и нестабильной добавке, снижая приоритет пиннинга для backports / unstable packages, а настройки отображения aptitude необходимо изменить для отображения пиннинга.

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

deb http://ftp.us.debian.org/debian/ сжать main
deb-src http://ftp.us.debian.org/debian/ сжать main

deb http://security.debian.org/ сжать / обновить главную
deb-src http://security.debian.org/ сжатие / обновление main

# squeeze-update, ранее известный как "volatile"
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# сжимать backports
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# неустойчивый
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

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

Пакет: *
Pin: release n = сжатие-backports
Приоритет: 400

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

4
2018-02-04 22:59



Просто обновление, в дополнение к вышесказанному, я решил запустить все свои системные пакеты из репозиториев разработки тестирования. Итак, в source.list он должен указать кодовое имя jessie вместо squeeze, Политика Debian testing почти стабильна, а пакеты стали почти такими же новыми, как и unstable репозиторий. У меня заканчивается пространство, поэтому, пожалуйста, взгляните на: wiki.debian.org/DebianReleases, wiki.debian.org/StableUpdates, а также wiki.debian.org/StableProposedUpdates; последние два являются дополнительными источниками репозитория. - Daniel Sokolowski


Если ваш выбор пакетов более активен или установка будет повторяться на нескольких машинах, вы можете подумать о создании частного репозитория, который отображает подмножество официальных репозиториев. Для этого требуется небольшая работа по настройке репозитория, но вознаграждение легко поддерживать с минимальной конфигурацией на каждом клиенте и повторяемыми результатами при выполнении десятков установок. Я нахожу это полезным даже тогда, когда устанавливаются только один или два пакета, и используйте этот метод для автоматизации и поддержки облачных установок. Один сервер на дешевой 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 job.

Чтобы настроить клиентскую машину на клиентской машине:

# 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

2
2017-07-06 18:53