RPM を使って Ruby 開発環境をインストール

Fedora に Ruby をインストールしようとしたとき、以前は古いバージョンのものしか用意されていませんでした。そのため、新しいバージョンの Ruby のソースをダウンロードし、コンパイルしてインストールする必要がありました。現在はそれなりに新しいバージョンのものが用意されているので、RPM を使ってインストールできます。Fedora 21 で動作確認しました。

Apache Web サーバをインストール

開発環境では主に WEBrick と呼ばれる Web Server を利用するので apache を利用する必要はありませんが、念の為にインストールしておきます。

# yum -y install httpd-devel

Apache Web サーバを開始し、また自動起動に設定します。

# systemctl start httpd
# systemctl enable httpd

ブラウザで「http://127.0.0.1/」にアクセスして Apache のテストページが表示されることを確認します。

sqlite をインストール

sqlite データベースのデータは1つのローカルファイルとして格納され、Microsoft Access の MDB ファイルのような感覚で利用できるデータベースです。 MySQL 等とほぼ同等の SQL コマンドが利用でき、またローカルファイルをコピーするだけで、データベースのデータがコピーできるので開発環境でよく利用されます。つぎのコマンドにより SQLite 3 がインストールされます。

# yum -y install sqlite sqlite-devel

MariaDB をインストール

つぎのコマンドで MariaDB をインストールします。

# yum -y install mysql-server mysql

これによって以下のようなパッケージがインストールされます。

1) boost-program-options-1.55.0-8.fc21.x86_64.rpm
2) galera-25.3.5-9.fc21.x86_64.rpm
3) mariadb-10.0.17-1.fc21.x86_64.rpm
4) mariadb-common-10.0.17-1.fc21.x86_64.rpm
5) mariadb-config-10.0.17-1.fc21.x86_64.rpm
6) mariadb-errmsg-10.0.17-1.fc21.x86_64.rpm
7) mariadb-galera-server-10.0.17-3.fc21.x86_64.rpm
8) perl-DBD-MySQL-4.027-3.fc21.x86_64.rpm
9) mariadb-libs-10.0.17-1.fc21.x86_64.rpm

インストールが完了したら MariaDB を開始し、自動起動に設定します。

# systemctl start mariadb
# systemctl enable mariadb

インストール直後に MariaDB の起動しようとして以下のエラーが表示される場合があります。

# systemctl start mariadb
Job for mariadb.service failed. See "systemctl status mariadb.service" and "journalctl -xe" for details.

その場合は、必要なファイルは保存した上で、MariaDB をアンインストールし、MariaDB 関連の設定ファイルとディレクトリを削除したことを確認した後、再度インストールしてみてください。

例)
# yum -y erase \
  boost-program-options \
  galera \
  mariadb \
  mariadb-common \
  mariadb-config \
  mariadb-errmsg \
  mariadb-galera-server \
  perl-DBD-MySQL \
  mariadb-libs

# rm /etc/my.cnf
# rm -rf /etc/my.cnf.d/
# rm -rf /usr/share/mariadb
# rm -rf /var/lib/mysql/
# rm -rf /var/log/mariadb/

MariaDB のインストール直後は、データベースの root ユーザのパスワードは空の状態です。パスワードを設定していないので、パスワード無しでデータベースに接続することが可能です。今回は開発環境なので、パスワード設定をしないでおきます。デフォルトでは MariaDB に対してのネットワークアクセスを許可していないので、パスワードを設定してなくても問題ありません。もし、MariaDB の root ユーザのパスワードを設定したい場合はつぎのコマンドを実行して設定することができます。対話的にいろいろ質問されますが、パスワード入力の部分以外はエンターキーのみを押して進めます。

# mysql_secure_installation

以下のように直接に SQL コマンドを実行して root ユーザーのパスワードを変更することもできます。

# mysql -uroot
mysql> use mysql;
mysql> update user set password=password('********') where user = 'root';
mysql> delete from user where user = '';
mysql> flush privileges;
mysql> exit;

上記の ******** の部分は任意のパスワードを設定してください。

# mysql -uroot -e "show variables like '%engine%'"

+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
| storage_engine         | InnoDB |
+------------------------+--------+

MariaDB のエンジンが InnoDB に設定されていることを確認します。InnoDB エンジンは Transaction 処理をサポートします。上記の出力結果より default_storage_engine が InnoDB になっているいることがわかります。default_storage_engine の他に storage_engine という項目も表示されていますが、これは互換性のために残しているもので現在は使用されていません。

(参考)
https://mariadb.com/kb/en/mariadb/server-system-variables/#default_storage_engine
https://mariadb.com/kb/en/mariadb/server-system-variables/#storage_engine

つぎのコマンドでエンジンの種類を確認することもできます。

# mysql -uroot -e "show engines"

参考までに、エンジンは起動後も変更することができます。テーブル毎に異なるエンジンを指定できます。以下の例は、test データベース内に、 t1 テーブルを MyISAM エンジンで作成し、t2 テーブルを InnoDB エンジンで作成します。

例)
# mysql -u root
> use test;
> set storage_engine=MYISAM;
> create table t1 (i int);
> set storage_engine=INNODB;
> create table t2 (i int);
> show tables;
> show table status from test;
> drop tables t1, t2;
> exit
#

MariaDB の設定ファイルのトップは「/etc/my.cnf」であり、その中から「/etc/my.cnf.d/」ディレクトリ内の各ファイルが読み込まれます。今回は変更部分だけを「/etc/my.cnf.d/customize.cnf」ファイルに設定します。これは以下の手順でおこないます。

特に MariaDB のキャラクターセットを「utf8mb4」でなく「utf8」に設定してしまうと、UTF-8 の 4バイト文字、例えば「𠮷野家(よしのや)」の「𠮷」が DB に格納されず欠落するので注意が必要です。

# cat << "EOF" > /etc/my.cnf.d/customize.cnf
[mysqld]
default_storage_engine=InnoDB

innodb_file_format=barracuda
innodb_file_per_table=true
innodb_large_prefix=true

collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
skip_character_set_client_handshake

[mysql]
default_character_set=utf8mb4

[client]
default_character_set=utf8mb4
EOF

設定を有効にするために MariaDB を再起動し、設定が反映されたことを確認します。

# systemctl restart mariadb

# mysql -uroot -e "show variables like 'character_set%'"

+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8mb4                      |
| character_set_connection | utf8mb4                      |
| character_set_database   | utf8mb4                      |
| character_set_filesystem | binary                       |
| character_set_results    | utf8mb4                      |
| character_set_server     | utf8mb4                      |
| character_set_system     | utf8                         |
| character_sets_dir       | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+

# mysql -uroot -e "show variables like 'collation%'"

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_unicode_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+----------------------+--------------------+

Ruby のインストールに必要なツールをインストール

# yum -y install git gcc-c++ patch make bzip2 autoconf automake libtool bison openssl-devel readline-devel zlib-devel curl-devel libyaml-devel libffi-devel libxml2-devel libxslt-devel

Ruby 本体のインストール

# yum -y install ruby-devel rubygem-bundler ruby-RMagick

ruby-devel のインストールにより、依存関係によって ruby 本体もインストールされます。

JavaScript エンジンをインストール

# yum -y install nodejs

ImageMagick、IPA Font をインストール

# yum -y install ImageMagick ImageMagick-devel
# yum -y install ipa-*-fonts

Rails のインストール

# yum -y install rubygem-rails rubygem-railties

インストールされた ruby, gem, bundle, rails のバージョンを確認

ruby のバージョンを確認します。

# ruby -v
ruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux]

rubygems のバージョンを確認します。

# gem --version
2.2.2

bundle のバージョンを確認します。

# bundle -v
Bundler version 1.7.6

rails のバージョンを確認します。

# rails -v
Rails 4.1.5

irb インタプリタで ruby を使ってみる

ちょっとした対話的な操作で Ruby を使用したい場合は、 irb が利用できます。

例)
$ irb
irb(main):001:0> def t(a,b)
irb(main):002:1> (a*b)/2.0
irb(main):003:1> end
=> :t
irb(main):004:0> t(10,20)
=> 100.0
irb(main):005:0> quit
$

以上で Ruby 開発の環境がインストールできました。すぐにでも Rails アプリの開発にとりかかることができます。