Иногда бывает нужно установить старую версию какого-либо пакета. Самый простой (хоть и неправильный) путь это скачать нужную версию и установить ее вручную, но тогда придется самостоятельно разбираться с огромным количеством зависимостей. Поэтому самый правильный путь – это прописать дополнительные репозитории и настроить исключения для нужных пакетов.
В данной статье будем понижать версию 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-инфраструктуре – это быть уверенным в завтрашнем дне. Для того, чтобы сделать заказ:
|