[Решено]apt, тонкая настройка. Один пакет из jessie установить в wheezy.

Автор GRAY_BW, 03 июля 2013, 02:36:00

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

GRAY_BW

Здравствуйте.
Прошу прощения за лень, возможно получу ответ быстрее чем от google.

Возможно ли установить один пакет из ветки jessie в wheezy без обновления и изменения дистрибутива? (dist-upgrade очень не хочется)
Возникла необходимость в racket_5.3.4+r2+dfsg1-2_i386.deb, версия 5.2.1 (wheezy) не подходит. На первый взгляд, зависимые библиотеки совместимы.
http://packages.debian.org/jessie/racket
Обстоятельства такие: проект в "альфе" и пока не требует заморозки платформы (racket); пока проект не добрался до релиз кандидата, нужно чтоб несколько машин, у участвующих в проекте, обновлялись автоматически, не изменяя пакетной базы стабильного дистрибутива (wheezy).
Есть ли в source.list какая нибудь возможность указать на конкретный пакет другой ветки? Если предложите более адекватное решение, буду весьма признателен.

Заранее спасибо.

qupl

GRAY_BW,  если нет проблем с зависимостями, то установить пакет и потом через aptitude указать, что он не будет обновляться (hold).

GRAY_BW

#2

Решено. Большое спасибо за помощь участникам форума qupl и Tammy!


У меня получилось немного по другому. Возможно кому нибудь поможет.
Использовал документацию с:
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 http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main


Установка ключа подписи пакетов от dotdeb.org
wget -O http://www.dotdeb.org/dotdeb.gpg | sudo apt-key add -


Добавление репозитария dotdeb.org. Cоздайте файл dotdeb-nginx.list в каталоге /etc/apt/sources.list.d/ с таким содержимым:
# Dotdeb repository
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all


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

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


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

500 http://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 http://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 http://debian.netcologne.de/debian/ jessie/main i386 Packages
     release o=Debian,a=testing,n=jessie,l=Debian,c=main
     origin debian.netcologne.de
500 http://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 http://debian.netcologne.de/debian/ jessie/main i386 Packages
     5.2.1+g6~92c8784+dfsg2-2+deb7u1 600
        500 http://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.
Успехов вам в использовании Debian!

Tammy

Цитата: GRAY_BW от 03 июля 2013, 02:36:00Возможно ли установить один пакет из ветки jessie в wheezy без обновления и изменения дистрибутива? (dist-upgrade очень не хочется)
Создай /etc/apt/apt.conf
Содержащий APT::Default-Release "stable";

И добавь в sorce.list или в /etc/apt/sources.list.d/какое_нибудь_название.list
deb http://ftp.ru.debian.org/debian stable main contrib non-free
deb http://ftp.ru.debian.org/debian testing main contrib non-free

Пакеты из Wheezy ставить как обычно, а из Jessie
apt-get -t testing install имя_требуемого_пакета
Или в synaptic можно выбрать требуемую версию