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 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 not 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)