TrueNAS + NextcloudプラグインにDBD MySQLをインストールする

2022-10-14
  • B!

Nextcloud TrueNAS

 NextcloudのPreview Generatorにひと手間加えて、外部ストレージのファイルもサーチしてプレビュー画像が生成できるようにした。これで画面表示は軽くなり、快適に閲覧ができるようになった。

この方法を実行するには、NextcloudにPerlモジュールDBD::mysqlが必要なのであるが、TrueNASのNextcloudプラグインは動作に必要な最低限のモジュールが入っているJailで動かしているので、当然のことながらこのようなモジュールはインストールされていない。ということで、インストールする。

目次

環境の調査と作業方針の決定

プラグインのJail環境であり将来もプラグインのバージョンアップもあるだろうから、できるだけJail環境を汚さずに互換性を保つよう注意してインストールを行いたい。まずは状況を確認てみる。

今回のOS環境はTrueNAS 12.0-UB.1、プラグイン側はNextcloud 24.0.5, JailはFreeBSD 12.3-RELEASE-p7である。

pkgでDBD::mysqlがサクッとインストール可能かどうか確認する。以降はNextcloudのJail内で実施しているコマンド。

$ mysql --version
mysql Ver 8.0.29 for FreeBSD12.3 on amd64 (Source distribution)

$ pkg info | grep mysql
mysql80-client-8.0.29          Multithreaded SQL database (client)
mysql80-server-8.0.29          Multithreaded SQL database (server)
p5-DBD-mysql-4.050_1           MySQL driver for the Perl5 Database Interface (DBI)
php74-pdo_mysql-7.4.30         The pdo_mysql shared extension for php

$ pkg info | grep perl
perl5-5.32.1_1                 Practical Extraction and Report Language

$ pkg search -d p5-DBD-mysql-4.050_1
p5-DBD-mysql-4.050_1
Comment        : MySQL driver for the Perl5 Database Interface (DBI)
Depends on     :
	p5-Crypt-SSLeay-0.72_3
	perl5-5.32.1_1
	p5-DBI-1.643
	mysql57-client-5.7.38

あらら、MySQLはv8系がpkgでインストールされているが、PerlのDBD::mysqlのpkgはMySQL 5系を使用する前提で組まれている。そのため、pkgでDBD::mysqlをインストールすると、MySQL Client 5もインストールされてしまう。Perlは人気ない言語だからかなー。インストール済みのMySQL 8系とコンフリクトするかもしれないので、portsを使いDBD::mysqlを単体で現環境に合わせてビルドして導入することに決定。

インストール作業

下準備

作業に失敗しても元に戻せるようにJailのスナップショットを取っておく。

portsの環境は、以前HEIF画像対応で作っている。

portsの中から今回の作業に必要なツリーだけを展開する。Jail内なので節約コースで作業する。

DBIをインストール

先に基盤となるDBIを入れる。

ビルド時にports-mgmt/pkgのファイルも必要
$ sudo portsnap extract ports-mgmt/pkg


$ sudo portsnap extract databases/p5-DBI/
$ cd /usr/ports/databases/p5-DBI/ 
$ sudo make config
configureはデフォルトで、、DBI::Proxyなし
config
ビルドとテストする
$ sudo make -DBATCH
$ sudo make test
. . . . . .
All tests successful.
Files=202, Tests=9379, 57 wallclock secs ( 0.69 usr  0.20 sys + 43.35 cusr  7.53 csys = 51.77 CPU)
Result: PASS
テストが成功してからインストール
$ sudo make install
$ sudo make clean

DBD::mysqlのビルドに必要なライブラリを用意する

次は、p5-DBD-mysql。
SSLオプション有りでビルドする場合p5-Crypt-SSLeayも必要だが、今回使わないのでSSL無しでビルドする。SSL付きのインストールはp5-Crypt-SSLeayに必要なライブラリのインストールが面倒くさい。

ビルド時に以下が必要なのでこの順序に入れる。

  1. p5-Sub-Uplevel
  2. p5-Test-Warn
  3. p5-Parse-RecDescent
  4. p5-Inline-Files
  5. p5-Inline
  6. p5-Capture-Tiny
  7. p5-Devel-CheckLib
  8. p5-Test-Deep

※make testしないのであればこんなにインストールしなくてもよい。 make testが不要であれば、次のライブラリを先にインストールするだけでOK

  • devel/p5-Devel-CheckLib
では、先に書いた8個のライブラリを入れていく。

p5-Sub-Uplevel

$ sudo portsnap extract devel/p5-Sub-Uplevel/
$ cd /usr/ports/devel/p5-Sub-Uplevel
config無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install
$ sudo make clean

p5-Test-Warn

$ sudo portsnap extract devel/p5-Test-Warn/
$ cd /usr/ports/devel/p5-Test-Warn/
config無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

p5-Parse-RecDescent

$ sudo portsnap extract devel/p5-Parse-RecDescent/
$ cd /usr/ports/devel/p5-Parse-RecDescent/
$ sudo make config
configはデフォルトで
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

p5-Inline-Files

$ sudo portsnap extract devel/p5-Inline-Files/
$ cd /usr/ports/devel/p5-Inline-Files/
configure無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

p5-Inline

$ sudo portsnap extract devel/p5-Inline/
$ cd /usr/ports/devel/p5-Inline/
configure無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

p5-Capture-Tiny

$ sudo portsnap extract devel/p5-Capture-Tiny/
$ cd /usr/ports/devel/p5-Capture-Tiny/
configure無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clea

p5-Devel-CheckLib

$ sudo portsnap extract devel/p5-Devel-CheckLib/
$ cd /usr/ports/devel/p5-Devel-CheckLib/
$ sudo make -DBATCH
configure無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

p5-Test-Deep

$ sudo portsnap extract devel/p5-Test-Deep/
$ cd /usr/ports/devel/p5-Test-Deep/
configure無し
$ sudo make -DBATCH
$ sudo make test
$ sudo make install clean

DBD::mysqlのインストール

では準備整ったのでDBD::mysqlをインスtーるする

$ sudo portsnap extract databases/p5-DBD-mysql/
$ cd /usr/ports/databases/p5-DBD-mysql/
$ sudo make config
SSLは未使用でビルドする
SSL
ビルド&インストール
$ sudo make -DBATCH
$ sudo make test    ※前述のテスト用ライブラリのインストールを省略している場合は実行しない
$ sudo make install clean
以上で必要なPerlモジュールの導入が完了し、Peview Generator Helperスクリプトが動作するようになる。