LoginSignup
1
0

Almalinux 9 で ImageMagickをインストールする

Last updated at Posted at 2023-12-09

はじめに

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行加える.

/etc/php.ini
# 以下の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
において,
スクリーンショット 2023-12-09 122906.png
このような画面が出て来るわけだが,検索窓に必要なものを入力して「Search」ボタンをクリックすれば良い.
 たとえば,ここで「libraw_r.so.23()(64bit)」を入力して「Search」をクリックすると,
スクリーンショット 2023-12-09 123458.png

が出現することから,
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からはインストールするサーバのアーキテクチャで選択すれば良い.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0