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を単体で現環境に合わせてビルドして導入することに決定。
インストール作業
下準備
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
$ 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に必要なライブラリのインストールが面倒くさい。
ビルド時に以下が必要なのでこの順序に入れる。
- p5-Sub-Uplevel
- p5-Test-Warn
- p5-Parse-RecDescent
- p5-Inline-Files
- p5-Inline
- p5-Capture-Tiny
- p5-Devel-CheckLib
- p5-Test-Deep
※make testしないのであればこんなにインストールしなくてもよい。 make testが不要であれば、次のライブラリを先にインストールするだけでOK
- devel/p5-Devel-CheckLib
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をインストールする
$ sudo portsnap extract databases/p5-DBD-mysql/ $ cd /usr/ports/databases/p5-DBD-mysql/ $ sudo make config
$ sudo make -DBATCH $ sudo make test ※前述のテスト用ライブラリのインストールを省略している場合は実行しない $ sudo make install clean
0 件のコメント:
コメントを投稿