it-swarm-ru.tech

Как запустить стабильную версию Debian, но установить некоторые пакеты из тестирования?

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

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

210
Gareth

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

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 
49
Gareth

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

"Тестирование довольно стабильное ??" , спросите вы. Да. Для того чтобы пакет мог перейти от нестабильного к тестируемому, он должен иметь ноль открытых ошибок в течение 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/ и ​​"hardcode" версии Debian (etch, lenny и т. д.).

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

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

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

Правка: Исправлены некоторые приоритетные булавки и обновлен список.

187
Brendan Byrd

В /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 или аналогичном репозитории.

102
pQd

Что бы это ни стоило, общий совет, который я всегда видел, это "Не смешивайте стабильно ни с чем". Большинство учебников по смешанным системам предназначены для смешанного тестирования и нестабильно.

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

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

  1. Используйте Backports .
  2. Установите исходную строку из тестирования и попробуйте соберите более позднюю версию из исходного кода .
13
Telemachus

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

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

12
tomdeb

Другой способ, который может помешать установке слишком большого количества зависимостей от 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 (и инструменты разработки, особенно 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
gerlos

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

enter image description here

Есть четыре вещи, которые нужно отредактировать, нужно установить релиз пиннинга по умолчанию, добавить источники обратного порта и нестабильно добавленные, понизив приоритет пиннинга пакетов backports/unstable, и настройки отображения 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/ squeeze main 
 deb-src http://ftp.us.debian.org/debian/ squeeze main 
 
 deb http://security.debian.org/ squeeze/updates main 
 deb-src http://security.debian.org/ squeeze/updates 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 
 
 # squeeze backports 
 # http://backports.debian.org/Instructions/
deb http: // backports. debian.org/debian-backports squeeze-backports main 
 
 # unstable 
 # 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/ squeeze non free 
 # 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 
 # 
 # В гайке Shell самый высокий PIN устанавливается 
 # 
 # Следующие настройки по умолчанию следующие, в дополнение к нашему настройки: 
 # 990 - для версии, которая не установлена, но ДО принадлежит нашей настройке `APT :: Default-Relase" stable "`. 
 # 500 - для версий, которые не установлены и работают не относится к целевой версии 
 # 100 - для пакетов, которые уже установлены, это также означает, что другие версии того же пакета 
 # 1 - для экспериментальных пакетов; пакеты с "NotAutomatic: yes" 
 # 
 # Наши ссылки 
 # 400 - бэкпорты, которые можно безопасно устанавливать без необходимости обновления других пакетов 
 # 50 - нестабильные пакеты, принудительная установка на экране сведений, может привести к конфликтам 
 
 Пакет: * 
 Pin: release n = squeeze-backports 
 Pin-P Rioity: 400 
 
 Упаковка: * 
 Пин: выпуск a = нестабильный 
  • Создать '/ etc/apt/apt.conf.d/100guiconf' и настроить Aptitude таким образом, чтобы он отображал информацию закрепления.
 Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i"; 
4
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.

Чтобы настроить клиентский компьютер, на своем клиентском компьютере:

# 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:[email protected]/ 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
Monica For CEO

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

Чтобы настроить APT для загрузки исходных пакетов из тестирования, просто добавьте:

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

Если вы просто хотите следовать текущему тестированию, а не будущему, замените "тестирование" текущим кодовым именем (на момент написания статьи это "бастер")

1
temy