Установка старых пакетов в Linux Debian на примере PHP

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

В данной статье будем понижать версию PHP с 5.4.x до 5.3.x

Для начала нам нужно добавить репозитории, в которых есть нужная версия пакета.
Узнать какая версия пакета в какой ветке дистрибьютива можно на сайте https://www.debian.org/distrib/packages

Мы будем ставить пакет PHP из дистрибьютива squeeze (в более новых ветках используется PHP 5.4.x)

Чтобы добавить нужные репозитории открываем /etc/apt/sources.list

И добавляем в конец репозитории:

deb http://mirror.yandex.ru/debian/ squeeze main
deb-src http://mirror.yandex.ru/debian/ squeeze main

Теперь нам нужно зафиксировать версии пакетов, чтобы не ставились более новые. Для этого мы укажем в файле /etc/apt/preferences.d/preferences из какого репозитория брать нужные нам пакеты.

Package: php5*
Pin: release a=oldstable
Pin-Priority: 700

Package: libapache2-mod-php5
Pin: release a=oldstable
Pin-Priority: 700

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

Для понижения версии PHP нам потребуются все пакеты, которые начинаются с php5, а так же libapache2-mod-php5.
Объяснение строк:

Package: php5* – пакеты, которые попадают под маску php5*
Pin: release a=oldstable – берутся из репозиториев предыдущей версии дистрибьютива (Можно зафиксировать текущую версию и запретить ее изменять. Для этого нужно написать Pin: version 5.3.3-7+squeeze19, где 5.3.3-7+squeeze19 – это версия пакета).
Pin-Priority: 700 – приоритет установки. Чем больше – тем предпочтительней правило.

Таким же образом выдаем указания для пакета (libapache2-mod-php5) и для всех остальных (*).

Теперь обновляем информацию в apt:

apt-get update

и устанавливаем наши пакеты:
apt-get install php5 libapache2-mod-php5

Теперь остается перезапустить Apache и все готово.

service apache restart

P.S.
Полезные команды:
Посмотреть версии всех пакетов, установленных в системе:

dpkg -l

Посмотреть доступные версии в репозиториях:

apt-cache showpkg имя_пакета

просто установить нужную версию:

apt-get install php5=5.3.3-7+squeeze19

где:
php5 – имя пакета
5.3.3-7+squeeze19 – версия.

Удалить пакет вместе с файлами конфигурации:

apt-get remove --purge имя_пакета

P.P.S.
По умолчанию PHP для апача состоит из пакетов:

libapache2-mod-php5
php5
php5-cgi
php5-cli
php5-common
php5-gd
php5-mcrypt
php5-mysql
php5-suhosin

Если конфигурация более сложная, то нужно проверять зависимости пакетов. Иначе они все могут не установиться.

Посмотреть зависимости пакета можно командой:

apt-cache depends имя_пакета

На этом статья заканчивается. Удачной установки нужных пакетов. Любые другие пакеты ставятся по аналогии.

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.

Please Login to Comment.