Как установить старые пакеты в debian, ubuntu, centos на примере php

Обновлено 25.05.2019

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

В данной статье будем понижать версию 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 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
или в более новых версиях
service apache2 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.S.
По умолчанию PHP для апача состоит из пакетов:

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

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

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

Автор - Сёмин Иван

One Response to Как установить старые пакеты в debian, ubuntu, centos на примере php

  1. segorGaT:

    Спасибо, что рассказали как устанавливать пакеты в debian

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *