Допустим, у вас запущен сервер, и вы не хотите переходить на Testing (Squeeze) из Stable (Lenny), чтобы просто установить необходимый пакет или два.
Каков наилучший способ установки только определенных пакетов из Testing?
Допустим, у вас запущен сервер, и вы не хотите переходить на Testing (Squeeze) из Stable (Lenny), чтобы просто установить необходимый пакет или два.
Каков наилучший способ установки только определенных пакетов из Testing?
Ответы:
Многие люди, похоже, боятся смешивать стабильное с тестированием, но, честно говоря, тестирование само по себе довольно стабильно, и с правильными настройками и проверкой решений вы можете избежать «дрейфа стабильности», который ставит ваши основные пакеты на нестабильный путь.
"Тестирование довольно стабильно ??" , ты спрашиваешь. Да. Для того чтобы пакет мог перейти от нестабильного к тестируемому, он должен иметь ноль открытых ошибок в течение 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
in sources.lists.d
и preferences.d
(используйте приоритет 1), хотя этот моникер будет иметь тенденцию истекать и исчезать до следующего стабильного цикла. В таких случаях вы можете использовать http://archive.debian.org/debian/
и «жестко закодировать» версию Debian (etch, lenny и т. Д.).
Чтобы установить тестовую версию пакета, просто используйте aptitude install lib-foobar-package/testing
или просто перейдите в графический интерфейс aptitude и выберите версию в деталях пакета (нажмите enter в пакете, который вы просматриваете).
Если вы получаете жалобы на конфликты пакетов, сначала посмотрите на решения. В большинстве случаев первым будет «не устанавливать эту версию». Научитесь использовать варианты разрешения и разрешения для каждого пакета. Например, если вы устанавливаете foobar-package / testing, а первое решение - «не устанавливать foobar-package / testing», то пометьте этот выбор как отклоненный, и другие решения больше никогда не повернут по этому пути. В таких случаях вам, вероятно, придется установить несколько других пакетов тестирования.
Если он становится слишком проблематичным (например, пытается обновить libc или ядро или какую-то другую огромную базовую систему), то вы можете либо отклонить эти пути обновления, либо просто полностью отказаться от первоначального обновления. Помните, что обновление будет происходить только до тестирования / нестабильности, если вы разрешите это.
РЕДАКТИРОВАТЬ: Исправлены некоторые приоритетные булавки и обновлен список.
apt-get update
после того, как создали файлы конфигурации?
sudo apt-get update
, я получил ошибку обновления. Затем перезапустил, который дал мне Xsession error
, перезапустил снова, и теперь у меня нет графического интерфейса. /dev/sda1/
теперь полон. Отлично.
В /etc/apt/apt.conf.d
добавить следующий файл
99defaultrelease
:
APT::Default-Release "stable";
in /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
Будьте очень осторожны, если вы устанавливаете вещи, которые имеют много зависимостей. Желательно не делать этого на производстве.
Вы также можете попытать счастья в бэкпорте или подобном репозитории.
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
Что бы это ни стоило, общий совет, который я всегда видел, это «Не смешивайте стабильно ни с чем». Большинство учебников по смешанным системам предназначены для смешанного тестирования и нестабильно.
Кажется, что причина в том, что если вы смешиваете стабильное с тестированием, для самых базовых пакетов (таких как libc6) потребуются обновления (чтобы установить программное обеспечение из тестирования), и как только эти базовые пакеты перейдут к тестированию, вся система может дрейфовать таким образом.
Вот две альтернативы:
Документация по Debian обширна в этой теме, и я настоятельно советую углубиться в это, так как она действительно раскроет всю прелесть системы Debian.
Посмотрите, как сохранить смешанную систему , она объяснит все, что вам нужно знать.
Другой способ, который может помешать установке слишком большого количества зависимостей от 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.
Я делал это в течение длительного периода времени, чтобы быть уверенным в том, что это достаточно безопасно и может быть удобно. При нижеуказанной настройке стабильная версия будет установлена по умолчанию, однако Aptitude также позволит вам выбрать резервную версию или нестабильную версию, если это необходимо:
Есть четыре вещи, которые нужно отредактировать, нужно установить релиз пиннинга по умолчанию, добавить источники обратного порта и нестабильно добавленные, понизив приоритет пиннинга пакетов backports / unstable, и настройки отображения aptitude необходимо изменить, чтобы отобразить пиннинг.
Apt :: default-Release "стабильный";
# 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 # сожмите 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 # не бесплатно отл. Sun Java #deb http://ftp.us.debian.org/debian/ squeeze non free # deb-src http://ftp.us.debian.org/debian/ squeeze non free
etc/apt/preferences
файл закрепления - если файл не существует, создайте его.# Прикрепление пакетов приоритетов # См. Http://wiki.debian.org/AptPreferences и http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences # # В скорлупе гайки устанавливается самый высокий PIN-код # # Пайнинг по умолчанию, как в дополнение к нашим настройкам: # 990 - для версии, которая не установлена, но ДОЛЖНА принадлежать нашему параметру `APT :: Default-Relase" stable "`. # 500 - для версий, которые не установлены и не относятся к целевому выпуску # 100 - для пакетов, которые уже установлены, это также означает, что другие версии того же пакета № 1 - для экспериментальных пакетов; пакеты с "NotAutomatic: да" # # Наши пиннинги # 400 - бэкпорты, которые можно безопасно устанавливать без необходимости обновления других пакетов # 50 - нестабильные пакеты, принудительная установка на экране сведений, может привести к конфликтам Пакет: * Pin: релиз n = squeeze-backports Приоритет булавки: 400 Пакет: * Пин: выпуск а = нестабильный
Aptitude :: UI :: Package-Display-Format "% c% a% M% p% Z% v% V% i";
source.list
нем должно быть указано кодовое имя jessie
вместо squeeze
. Политика Debian testing
близка к стабильной, и пакеты были почти такими же новыми, как и из unstable
репозитория. У меня заканчивается свободное место, поэтому, пожалуйста, посмотрите на: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates и wiki.debian.org/StableProposedUpdates ; последние два являются дополнительными источниками репозитория.
Если ваш выбор пакетов более сложен или установка будет повторяться на нескольких машинах, вы можете рассмотреть возможность создания частного репозитория, который отражает подмножество официальных репозиториев. Это требует небольшой работы по настройке репозитория, но вознаграждение легко поддерживать с минимальным количеством настроек на каждом клиенте и повторяемыми результатами при выполнении десятков установок. Я считаю это полезным, даже когда устанавливаются только один или два пакета, и использую этот метод для автоматизации и поддержки облачных установок. Один сервер на дешевом 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
Другой вариант - загрузить исходный пакет из тестирования. APT может автоматически собрать исходный пакет после его загрузки. Таким образом, ваши стабильные пакеты не будут затронуты тестированием обновлений. Единственный компромисс в том, что это займет больше времени, чем просто загрузка и установка бинарного пакета.
Чтобы настроить APT для загрузки исходных пакетов из тестирования, просто добавьте:
deb-src http://<your debian mirror here> testing main
Если вы просто хотите следовать текущему тестированию, а не будущему, замените «тестирование» текущим кодовым именем (на момент написания статьи это «бастер»)