Чаще всего, в ситуациях когда требуется обновить версию того или иного ПО на сервере с CentOS, администратор добавляет в систему сторонние репозитории и ставит софт оттуда. Это простой и удобный путь, но только в случае если к репозиториям есть доверие и если в систему допустимо ставить что-то со стороны. Однако иногда есть ситуации, в которых сторонние репозитории ставить запрещено, а софт при этом обновить нужно. Да, можно пойти по пути сборки из исходников, но к счастью, есть куда более простой путь — воспользоваться Software Collections.
Software Collections — это репозиторий со свежими версиями Python, PHP, Perl, Ruby, MySQL, MariaDB, PostgreSQL, MongoDB, Maven, Passenger, Apache httpd, Nginx, Node.js, Git, Common Java Packages. При использовании этого репозитория, у администратора есть возможность установить альтернативную версию ПО, работать с основной и альтернативной версией одновременно, либо настроить окружение так, что свежеустановленная программа будет работать основной на сервере.
Ставим Software Collections следующим образом:
yum install centos-release-scl scl-utils
Просмотреть полный список пакетов из «коллекции» можно так:
yum --disablerepo='*' --enablerepo='centos-sclo-rh' --enablerepo='centos-sclo-sclo' list available
Теперь попробуем перевести сервер с CentOS 6 на работу с PHP 5.3 на PHP 7.0. Вот наша текущая версия PHP:
# php -v PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Ставим PHP 7.0 из Software Collections:
# yum install rh-php70
После установки, мы можем либо просто на время перейти в отдельное окружение, где нам будет доступна 7 версия PHP:
# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin # scl enable rh-php70 bash # echo $PATH /opt/rh/rh-php70/root/usr/bin:/opt/rh/rh-php70/root/usr/sbin:/opt/rh/rh-php70/root/usr/bin:/opt/rh/rh-php70/root/usr/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin # exit
Либо сделать PHP 7.0 основной версией:
# source /opt/rh/rh-php70/enable # php -v PHP 7.0.10 (cli) (built: Nov 3 2016 08:05:22) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
Таким образом, мы очень просто перешли с версии PHP 5.3 на 7.0, при этом не собирая ничего вручную и не добавляя сторонних репозиториев.
Дополнительным удобством Software Collections является то, что у администратора есть возможность поставить несколько версий софта вместе и переключаться между ними при необходимости. Например, если мы хотим протестировать наш python скрипт на разных версиях интерпретатора…
Ставим нужные нам версии python:
# yum install rh-python34 rh-python35
И просто переключаемся между ними:
# source /opt/rh/rh-python35/enable # python --version Python 3.5.1 # source /opt/rh/rh-python34/enable # python --version Python 3.4.2
А для того что бы наши изменения не терялись при перезагрузке, создаём файл /etc/profile.d/python35.sh со следующим содержимым:
#!/bin/bash source /opt/rh/rh-python35/enable
Теперь, даже после перезагрузки, для работы сразу же будет доступна нужная версия питона. Для просмотра списка установленных коллекций, используем команду:
# scl --list rh-php70 rh-python34 rh-python35
Вот так, достаточно просто, на CentOS можно получить актуальные версии ПО без сборки софта из исходников и без подключения сторонних репозиториев.