[XOOPS Cube] Protectorモジュールに初Pull Requestした話

XOOPS Cubeの定番モジュールである「Protector」に、これまた定番のALTSYSがインストールされていないときにメニューの「一般設定」リンクがXOOPS2のSystemモジュールを指してしまうバグを見つけたので、修正してPull Request、すぐにマージされました。
管理メニューのリンクは正しく生成されているので、管理メニューから移動している限り見つけにくいバグです。

コードについてはhttps://github.com/xoopscube/protector/pull/3をご覧ください。

発生条件

ALTSYSがインストールされていないという1点だけです。
ALTSYSがインストールされている場合、Protector自身のadmin/index.phpを指すようにリンクが生成されます。
しかしALTSYSがインストールされていない場合、Systemモジュールのadmin.phpを指すリンクとなります。
Protector自身はALTSYSのインストールが必須ではないので、これではXOOPS CubeでALTSYSを使わずにProtectorを使いにくくなってしまいます。

修正

ALTSYSの有無を判定している部分で、ALTSYSがインストールされていない場合にlegacyモジュールの有無を判定し、インストールされていればlegacy/admin/index.phpを指すリンクを生成するようにしました。

蛇足

今回Pull Requestを出したのはXOOPS Cubeのリポジトリでしたが、よく見たらXoopsXのProtectorにも同様のバグがありました。
XoopsXは確かALTSYSが必須になっていたような気がするので、ほとんど気づけないですね。
最近のXOOPS Cubeコミュニティは、XoopsXとXOOPS Cubeで別のリポジトリを持ってしまっているせいで外から構造がよくわからなくなっている気がします。


Image By: Barbara DieuCC BY-NC-SA 2.0

[CentOS 7] MariaDB Serverのインストールとsystemdによる操作

RHEL7からMySQLの代わりにMariaDBが提供されるようになりましたね。
MySQLと互換性があるようなので、これからはMariaDBの時代が来るのでしょうか。
また、SysV Initに代わってsystemdが新しいinitプロセスとして採用されました。
操作方法が微妙に異なるので、ここで簡単にまとめておきます。

インストール

mysql, mysql-serverパッケージの代わりにmariadb, mariadb-serverパッケージが提供されています。

# yum install mariadb  # クライアント
# yum install mariadb-server  # サーバー

コマンドやUNIXソケットはMySQLと同じですが、バージョン情報を見るとちゃんとMariaDBになっています。

$ mysql --version
mysql  Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
$ mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.0 Distrib 5.5.37-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Server version          5.5.37-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 2 min 49 sec

systemdの操作

RHEL7ではSysV initがsystemdで置き換えられました。基本的な操作はコマンドと引数の順番が違うだけなので覚えやすいと思います。
systemdではサービスやデバイスをUnitと言う単位で管理します。systemctlコマンドではこのUnitの名前を操作対象として指定します。
MariaDBのUnit名はmariadb.serviceです。

# systemctl アクション Unit名で基本的な操作ができます。
# ここで示したほかにもアクションがあるので、詳しくはsystemctl(1)のManページを見ましょう。
systemctl [enable|disable|start|stop|restart] mariadb.service

MariaDB Serverをインストールした後は、MySQLと同じように初期設定を行います。

# systemctl start mariadb.service
# mysql_secure_installation
()

システム起動時にMariaDB Serverが立ち上がるように設定します。

# systemctl enable mariadb.service

Image By: Giuseppe MoscatoCC BY-NC-SA 2.0