As I discussed in an article entitled Red Enterprise Linux Release Speed, developers sometimes have a problem with how slow Red Hat's Enterprise Linux releases new versions of software. Well, the good news is, Software Collections are here. Software Collections provide Red Hat Enterprise Linux users with newer versions of programming languages and server daemons like python, perl, ruby, php, mysql, mariadb, etc.

This is a quick start guide to help you get comfortable with both programming languages and server daemons provided as software collections.

Installation

First, add the right channel to your system

rhn-channel -u fatherlinux --add --channel=rhel-x86_64-server-6-rhscl-1-beta

To discover what packages are available, do a quick list, and grep for rhscl.

yum list available | grep rhscl
mariadb55.x86_64                      1-6.el6               rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb.x86_64              5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb-bench.x86_64        5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb-devel.x86_64        5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb-libs.x86_64         5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb-server.x86_64       5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
mariadb55-mariadb-test.x86_64         5.5.30-9.el6          rhel-x86_64-server-6-rhscl-1-beta
....

Now, let's install a few interesting packages

yum install python33-*
yum install python27-*
yum install mariadb55-mariadb-server

Basic Usage & Testing

To test python 3.3, let's fire up Idle, the built in editor

scl enable python33 idle

It's also easy to enable a software collection, for the duration of a shell session

scl enable python27 bash

Enabling Servers

Servers provided by Software Collections are configured and used similar to normal system daemons. One important thing to note, is that with Software Collections, multiple servers that require the same port may be installed side by side, so care must be taken to determine which one is started by default. Historically, this is something that systems administrators did not have to frequently worry about.

Before starting MariaDB, make sure that the system version of MySQL 5.1 is not installed or has been disabled.

chkconfig --list mysqld
mysqld         	0:off	1:off	2:off	3:off	4:off	5:off	6:off

Now, start MariaDB. As things start, you will notice that everything happens in /opt. All of the MariaDB system tables are created in /opt and do not interfere with the system version of mysqld.

chkconfig mariadb55-mysqld on
/etc/init.d/mariadb55-mysqld start

A few other important thing to note are; the logs and socket are placed in the system directories, so a standard MySQL client can and will connect by default.

/var/lib/mysql/mysql.sock
/var/log/mariadb55-mysqld.log

Also, notice that the normal MySQL port is used and looks like a standard MySQL server daemon.

netstat -anp | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      21104/mysqld

Integration

Now, we are going to put Python 2.7 and MariaDb in action using SQLAlchemy. Enable both at the same time.

scl enable python33 mariadb55 bash

Notice that the binary is in /opt/rh. Also, notice that the version is correct.

which mysql
/opt/rh/mariadb55/root/usr/bin/mysql
mysql --version
mysql  Ver 15.1 Distrib 5.5.30-MariaDB, for Linux (x86_64) using readline 5.1

A little bit of SQL Alchemy, and you can create a new database.

>>> import sqlalchemy
>>> print(sqlalchemy.__version__)
0.7.9
>>> engine = sqlalchemy.create_engine('mysql://root@localhost')
>>> engine.execute("CREATE DATABASE test5")

Finally, check that the database was created.

mysql
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 11
Server version: 5.5.30-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| test5              |
+--------------------+
5 rows in set (0.00 sec)
Last updated: November 2, 2023