Возможно ли установить один пакет из ветки jessie в wheezy без обновления и изменения дистрибутива?

У меня получилось немного по другому. Возможно кому нибудь поможет.
Использовал документацию с:
Debian AptPreferences.
DotDeb repo Instructions
Install Java from Webupd8
Debian JavaPackage

Напомню, задача была такая.
Установить версии пакетов из разных репозитариев на несколько серверов с сохранением стандартной процедуры обновления пакетов
sudo apt-get update && sudo apt-get upgrade.
Требуется nginx v.1.4.+, потому что стандартный из дистрибутива не подходит по причине HTTP 1.0 в режиме реверсивного прокси (websocket не получится).
Используемый репозитарий DotDeb.Org для установки nginx содержит также пакеты php5-*, которые устанавливать не нужно, необходимо оставить php5-* из стабильной ветки wheezy.
Установить на серверы Java 1.7.0 JDK с сохранением стандартной процедуры замен версий update-alternatives --config java
Установить на серверы платформу Racket из testing ветки Debian которая будет обновляться до заморозки версий перед выпуском стабильного Debian Jessie.

Итак, для установки:

nginx 1.4.+ выбран репозитарий dotdeb.org
Java выбран репозитарий webupd8.org
Racket выбран репозитарий Debian Jessie (testing)

Установка ключа подписи пакетов от webupd8.org
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

Добавление репозитария webupd.org. Предпочитаемым редактором создайте файл webupd8team-java.list в каталоге /etc/apt/sources.list.d/ с таким содержимым:
Код: [Выделить]

# Oracle Java from ubuntu ppa repo
deb ppa.launchpad.net/webupd8team/java/ubuntu precise main
deb-src ppa.launchpad.net/webupd8team/java/ubuntu precise main

Установка ключа подписи пакетов от dotdeb.org
wget -O www.dotdeb.org/dotdeb.gpg | sudo apt-key add — Добавление репозитария dotdeb.org. Cоздайте файл dotdeb-nginx.list в каталоге /etc/apt/sources.list.d/ с таким содержимым:
Код: [Выделить]

# Dotdeb repository
deb packages.dotdeb.org wheezy all
deb-src packages.dotdeb.org wheezy all

Добавление репозитария Debian Jessie (testing). Cоздайте файл debian-testing.jessie.list в каталоге /etc/apt/sources.list.d/ с таким содержимым:
Код: [Выделить]

# Debian Jessie repo
deb debian.netcologne.de/debian/ jessie main non-free contrib

Теперь можно сделать обновление списка пакетов
sudo apt-get update #примечание! upgrade делать рано.
Поглядим как выглядит политика установки
sudo apt-cache policy
из вывода в консоль интересны следующие строчки

500 ppa.launchpad.net/webupd8team/java/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-webupd8team-java,a=precise,n=precise,l=Oracle Java (JDK) 6 / 7 / 8 Installer PPA,c=main
500 packages.dotdeb.org/ wheezy/all i386 Packages
release o=packages.dotdeb.org,a=stable,n=wheezy,l=packages.dotdeb.org,c=all
origin packages.dotdeb.org
500 debian.netcologne.de/debian/ jessie/main i386 Packages
release o=Debian,a=testing,n=jessie,l=Debian,c=main
origin debian.netcologne.de
500 debian.netcologne.de/debian/ wheezy/main i386 Packages
release v=7.1,o=Debian,a=stable,n=wheezy,l=Debian,c=main
origin debian.netcologne.de

Обратите внимание на число 500, в данном выводе оно указывает на приоритет репозитария в политике установки, который рекомендуется изменять в пределах 100-900. Чем меньше число, тем ниже приоритет. Красным, отмечен параметр который понадобится в тонкой настройке политик.

Добавление конфигурационного файла тонкой настройки политик пакетного менеджера.
Cоздайте файл 13FineTuning в каталоге /etc/apt/preferences.d/ с таким содержимым:
Код: [Выделить]

Package: *
Pin: release o=Debian,a=testing,n=jessie
Pin-Priority: 400

Package: php5-*
Pin: release o=Debian,a=stable,n=wheezy
Pin-Priority: 600

Package: nginx*
Pin: release o=packages.dotdeb.org,a=stable,n=wheezy
Pin-Priority: 620

Package: racket*
Pin: release o=Debian,a=testing,n=jessie
Pin-Priority: 600

Package: libffi6
Pin: release o=Debian,a=testing,n=jessie
Pin-Priority: 600

Пояснение к содержимому файла.
Package: имя_пакета_или_маска #описание целевого пакета или группы по маске
Pin: release идентификатор #отношение к определённому репозитарию
Priority: Число #Вес приоритета. Рекомендуемый диапазон 100-900
Взглянем на изменение политики для платформы Racket
sudo apt-cache policy racket
Выглядит примерно так
racket:
Installed: (none) ## Эта строка говорит, что пакет ещё не установлен
Candidate: 5.3.4+r2+dfsg1-2
Package pin: 5.3.4+r2+dfsg1-2
Version table:
5.3.4+r2+dfsg1-2 600## Здесь видно, что пакет имеет вес 600
## и будет установлен вместо стандартного с весом 500,
## тогда как остальные пакеты из репозитария имеют вес 400
400 debian.netcologne.de/debian/ jessie/main i386 Packages
5.2.1+g6~92c8784+dfsg2-2+deb7u1 600
500 debian.netcologne.de/debian/ wheezy/main i386 Packages

Теперь можно посмотреть что произойдёт в случае upgrade системы.!!! Важно!!! Не забудьте флаг -s. Он означает симуляцию процесса установки, -s (Simulation.No-act.)
sudo apt-get dist-upgrade -s
Или установки конкретного пакета.
sudo apt-get install -s racket

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

Если всё так, как вы задумывали, тогда запустите предыдущую команду без флага -s.

0 комментариев

Оставить комментарий