はじめに
nextcloudのセットアップにおいては,
「管理」->「概要」->「セキュリティ&セットアップ警告」において,いわゆる合格がでるように修正をすすめることとなる.ところが,
テーマ別アプリは有効ですが、PHPモジュール「imagick」が有効ではありません。ファビコン生成を正しく行うには、このモジュールをインストールし、有効化する必要があります。
を解決しようとして PHPからImageMagickを使う(AlmaLinux) を参考に
# dnf --enablerepo=epel-next install ImageMagick
をコンソール上からrootにて叩いたところ
エラー:
問題: package ImageMagick-6.9.12.93-2.el9.next.x86_64 from epel-next requires ImageMagick-libs(x86-64) = 6.9.12.93-2.el9.next, but none of the providers can be installed
- ジョブの最良アップデート候補をインストールできません
- nothing provides libraw_r.so.23()(64bit) needed by ImageMagick-libs-6.9.12.93-2.el9.next.x86_64 from epel-next
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
という応答があった.
ここでは,このエラーを解消して先述のdnf命令が通るようにしたい.
結論としては,
必要なパッケージ libraw_r.so.23()(64bit) が不足しているので,rpmリポジトリから必要なパッケージ
https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
を取得してインストールすれば,ImageMagickのインストールを進めることが可能となる.
のである.
前提条件
- OSはAlmalinuxである
- epelリポジトリまたはepel-nextリポジトリが使えるようにしていること(参考)
エラーの本質 libraw_r.so.23()(64bit)
先ほど示したエラー
エラー:
問題: package ImageMagick-6.9.12.93-2.el9.next.x86_64 from epel-next requires ImageMagick-libs(x86-64) = 6.9.12.93-2.el9.next, but none of the providers can be installed
- ジョブの最良アップデート候補をインストールできません
- nothing provides libraw_r.so.23()(64bit) needed by ImageMagick-libs-6.9.12.93-2.el9.next.x86_64 from epel-next
(インストール不可のパッケージをスキップするには、'--skip-broken' を追加してみてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
を見ると,3行目に,libraw_r.so.23()(64bit)が必要だと書かれているため,ここを解決する必要がありそうだ.
libraw_r.so.23()(64bit)を探す
「libraw_r.so.23()(64bit)」で検索すると,どれを参考にして良いのかということで混乱するため,
RPM resource libraw_r.so.23()(64bit)
から,例えばx86_64のものであれば LibRaw-0.21.1-1.el9.x86_64.rpmをダウンロードすれば良いと言うことである.
他のアーキテクチャであれば,それ相応のファイルを見つけること
libraw_r.so.23()(64bit)のダウンロード
先ほど見つけたlibraw_r.so.23()(64bit)のダウンロードURLは
https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
であることから,コンソール上でrootにて
# wget https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
としてダウンロードする.そうすれば,その後のlsコマンドによってLibRaw-0.21.1-1.el9.x86_64.rpmの存在が確認できるはずだ.
# ls
LibRaw-0.21.1-1.el9.x86_64.rpm
・・・
(利用環境によってはほかにもファイルがあるかも知れない)
libraw_r.so.23()(64bit)のインストール
先述のようにLibRaw-0.21.1-1.el9.x86_64.rpmがダウンロード出来たので,以下のようにインストールする.
# rpm -ivh LibRaw-0.21.1-1.el9.x86_64.rpm
これによって,
- nothing provides libraw_r.so.23()(64bit) needed by ImageMagick-libs-6.9.12.93-2.el9.next.x86_64 from epel-next
と表示されていたエラーを解決することができたと考えられる.
ImageMagickのインストール
PHPからImageMagickを使う(AlmaLinux)を参考にした.
ここでは,epel-nextリポジトリを用いる場合としてroot権限によるインストールの記述している.
# dnf --enablerepo=epel-next install ImageMagick-perl
# dnf --enablerepo=epel-next install ImageMagick
# dnf --enablerepo=epel-next install ImageMagick-devel
# dnf -y install php-devel
# pecl install imagick
もし,epelリポジトリを用いる場合は,上記のepel-nextをepelと読み替えれば良い.
# dnf --enablerepo=epel install ImageMagick-perl
# dnf --enablerepo=epel install ImageMagick
# dnf --enablerepo=epel install ImageMagick-devel
# dnf -y install php-devel
# pecl install imagick
php-devel のインストールは,peclでphpizeが使えないために行う.
上記が終わったら,find / -name imagick.so を入力してimagick.soが見つかるかどうかを確認する.
# find / -name imagick.so
/usr/lib64/php/modules/imagick.so
その後,/etc/php.iniに1行加える.
# 以下の1行を加える.
extension = imagick.so
あと念のため,nextcloudにおいて
「管理」->「概要」->「セキュリティ&セットアップ警告」
から,確認すれば,
テーマ別アプリは有効ですが、PHPモジュール「imagick」が有効ではありません。ファビコン生成を正しく行うには、このモジュールをインストールし、有効化する必要があります。
が消えることだろう.
私の場合はこれで上記の警告を消すことが出来た.
まとめ
AlmalinuxにおいてImageMagickをインストールする場合であれば,epelリポジトリまたはepel-nextリポジトリからインストールするが,
必要なパッケージ libraw_r.so.23()(64bit) が不足する場合には,rpmリポジトリから必要なパッケージ
https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
を取得してインストールする
ことによって,ImageMagickのインストールを進めることが可能となる.
つまり,必要なパッケージをインストールにあたり,前提となるパッケージが不足する場合,一例として,rpmリポジトリから前提となるパッケージを取得した上でインストールすれば,必要なパッケージがインストール可能となる.
参考
(1) PHPからImageMagickを使う(AlmaLinux)
(2) あらためてEPELリポジトリの使い方をまとめてみた
(3) Welcome to the RPM repository on fr2.rpmfind.net
付録:一般的なrpmの探し方
https://rpmfind.net/linux/RPM/index.html
において,
このような画面が出て来るわけだが,検索窓に必要なものを入力して「Search」ボタンをクリックすれば良い.
たとえば,ここで「libraw_r.so.23()(64bit)」を入力して「Search」をクリックすると,
が出現することから,
RPM resource libraw_r.so.23()(64bit)
にたどり着くのである.
もし,所望のrpmパッケージが,LibRaw-0.21.1-1.el9.x86_64.rpmであれば,右端 LibRaw-0.21.1-1.el9.x86_64.rpm の部分で右クリックをして「リンクをコピー」とすればURLがコピーされることとなるので,
https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
なるURLの情報を取得できる.
Almalinuxに関するものはDistributionがCentOS Stream 9 AppStreamの部類となり,この後のforからはインストールするサーバのアーキテクチャで選択すれば良い.