CentOS Software Collections

Чаще всего, в ситуациях когда требуется обновить версию того или иного ПО на сервере с 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 можно получить актуальные версии ПО без сборки софта из исходников и без подключения сторонних репозиториев.

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

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