CentOS7で標準で入るPHPは5.6くらいで古いので、最新のPHP7.4を入れるにはremi-php74レポジトリから突っ込めという記事がいくらでも出てきます。
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi-php74 php
こんな感じ。
インフラ更改のためにPHP5.xで動いてたソースをこれでPHP7.4を入れた環境に持ってきて動かしてみたら、php-gdを必要としていたので、まあ入れてみようと。
yum install --enablerepo=remi-php74 php-gd
これでいけると思いますよね? ところがどすこい!
# yum install --enablerepo=remi-php74 php-gd
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 5.2 kB 00:00:00
* epel: ftp.jaist.ac.jp
* nux-dextop: mirror.li.nux.ro
* remi-php74: ftp.riken.jp
* remi-safe: ftp.riken.jp
epel | 4.7 kB 00:00:00
ius | 1.3 kB 00:00:00
mariadb-main | 2.9 kB 00:00:00
mariadb-maxscale | 2.4 kB 00:00:00
mariadb-tools | 2.9 kB 00:00:00
mediainfra | 2.9 kB 00:00:00
nux-dextop | 2.9 kB 00:00:00
puppet | 2.9 kB 00:00:00
remi-php74 | 3.0 kB 00:00:00
remi-safe | 3.0 kB 00:00:00
zabbix | 2.9 kB 00:00:00
(1/4): remi-php74/primary_db | 212 kB 00:00:00
(2/4): remi-safe/primary_db | 1.7 MB 00:00:00
(3/4): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(4/4): epel/x86_64/primary_db | 6.8 MB 00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php-gd.x86_64 0:7.4.6-1.el7.remi を インストール
--> 依存性の処理をしています: php-common(x86-64) = 7.4.6-1.el7.remi のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> 依存性の処理をしています: gd-last(x86-64) >= 2.1.1 のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> 依存性の処理をしています: libgd.so.3()(64bit) のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ gd-last.x86_64 0:2.3.0-1.el7.remi を インストール
--> 依存性の処理をしています: libtiff.so.5(LIBTIFF_4.0)(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libXpm.so.4()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libraqm.so.0()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libtiff.so.5()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libwebp.so.7()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
---> パッケージ php-common.x86_64 0:7.4.4-1.el7.remi を 更新
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-pdo-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-mbstring-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-sodium-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-json-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-cli-7.4.4-1.el7.remi.x86_64
---> パッケージ php-common.x86_64 0:7.4.6-1.el7.remi を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ gd-last.x86_64 0:2.3.0-1.el7.remi を インストール
--> 依存性の処理をしています: libtiff.so.5(LIBTIFF_4.0)(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libXpm.so.4()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libtiff.so.5()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
---> パッケージ libraqm.x86_64 0:0.7.0-4.el7 を インストール
---> パッケージ libwebp7.x86_64 0:1.0.3-1.el7.remi を インストール
---> パッケージ php.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-cli.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-cli.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-json.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-json.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-mbstring.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-mbstring.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-pdo.x86_64 0:7.4.4-1.el7.remi を 更新
--> 依存性の処理をしています: php-pdo(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-mysqlnd-7.4.4-1.el7.remi.x86_64
---> パッケージ php-pdo.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-sodium.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-sodium.x86_64 0:7.4.6-1.el7.remi を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ gd-last.x86_64 0:2.3.0-1.el7.remi を インストール
--> 依存性の処理をしています: libtiff.so.5(LIBTIFF_4.0)(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libXpm.so.4()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libtiff.so.5()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
---> パッケージ php-mysqlnd.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-mysqlnd.x86_64 0:7.4.6-1.el7.remi を アップデート
--> 依存性解決を終了しました。
エラー: パッケージ: gd-last-2.3.0-1.el7.remi.x86_64 (remi-safe)
要求: libXpm.so.4()(64bit)
エラー: パッケージ: gd-last-2.3.0-1.el7.remi.x86_64 (remi-safe)
要求: libtiff.so.5()(64bit)
エラー: パッケージ: gd-last-2.3.0-1.el7.remi.x86_64 (remi-safe)
要求: libtiff.so.5(LIBTIFF_4.0)(64bit)
問題を回避するために --skip-broken を用いることができます。
これらを試行できます: rpm -Va --nofiles --nodigest
エエエ工エエェェ(´д`)ェェエエ工
php-gdが依存しているgd-lastってパッケージがなんかのライブラリを求めているのですが、そんなのシステム内に無いしレポジトリに登録されてねーよ! クソして寝ろ!
とか言われちゃってますね。
なんか他のパッケージ入れれば勝手に入りそうな感じもしますが、トライアンドエラーするのめんどくさいので、rpmで突っ込むことにします。
こういうケースで役に立つというか、これ見るしか無いのが下記ページです。
https://centos.pkgs.org/7/centos-x86_64
ここから、無いと言われた下記のrpmパッケージを探します。
libXpm.so
libtiff.so
右上の検索ボックスから検索すると、それぞれ下記のURLからゲットできる事が分かります。
http://mirror.centos.org/centos/7/os/x86_64/Packages/libXpm-3.5.12-1.el7.x86_64.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/libtiff-4.0.3-32.el7.x86_64.rpm
じゃあ早速…
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libXpm-3.5.12-1.el7.x86_64.rpm
rpm -ivh libXpm-3.5.12-1.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libtiff-4.0.3-32.el7.x86_64.rpm
rpm -ivh libtiff-4.0.3-32.el7.x86_64.rpm
最後でまたエラー!
# rpm -ivh libtiff-4.0.3-32.el7.x86_64.rpm
エラー: 依存性の欠如:
libjbig.so.2.0()(64bit) は libtiff-4.0.3-32.el7.x86_64 に必要とされています
libtiffちゃんはlibjbig.soちゃん無しでは生きていけないんだって。仕方ないね。
同じようにlibjbig.soをさっきのページから検索してきます。
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/jbigkit-libs-2.0-11.el7.x86_64.rpm
rpm -ivh jbigkit-libs-2.0-11.el7.x86_64.rpm
今度は何も文句言われずにインストールが終わるので、おもむろにもっかい
rpm -ivh libtiff-4.0.3-32.el7.x86_64.rpm
を実行して再度インストールを試み、無事クリア!
最後に厳かかつ紳士的にphp-gdを入れてみる。
# yum install --enablerepo=remi-php74 php-gd
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.jaist.ac.jp
* nux-dextop: mirror.li.nux.ro
* remi-php74: ftp.riken.jp
* remi-safe: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php-gd.x86_64 0:7.4.6-1.el7.remi を インストール
--> 依存性の処理をしています: php-common(x86-64) = 7.4.6-1.el7.remi のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> 依存性の処理をしています: gd-last(x86-64) >= 2.1.1 のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> 依存性の処理をしています: libgd.so.3()(64bit) のパッケージ: php-gd-7.4.6-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ gd-last.x86_64 0:2.3.0-1.el7.remi を インストール
--> 依存性の処理をしています: libraqm.so.0()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libwebp.so.7()(64bit) のパッケージ: gd-last-2.3.0-1.el7.remi.x86_64
---> パッケージ php-common.x86_64 0:7.4.4-1.el7.remi を 更新
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-pdo-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-mbstring-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-sodium-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-json-7.4.4-1.el7.remi.x86_64
--> 依存性の処理をしています: php-common(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-cli-7.4.4-1.el7.remi.x86_64
---> パッケージ php-common.x86_64 0:7.4.6-1.el7.remi を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ libraqm.x86_64 0:0.7.0-4.el7 を インストール
---> パッケージ libwebp7.x86_64 0:1.0.3-1.el7.remi を インストール
---> パッケージ php.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-cli.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-cli.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-json.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-json.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-mbstring.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-mbstring.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-pdo.x86_64 0:7.4.4-1.el7.remi を 更新
--> 依存性の処理をしています: php-pdo(x86-64) = 7.4.4-1.el7.remi のパッケージ: php-mysqlnd-7.4.4-1.el7.remi.x86_64
---> パッケージ php-pdo.x86_64 0:7.4.6-1.el7.remi を アップデート
---> パッケージ php-sodium.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-sodium.x86_64 0:7.4.6-1.el7.remi を アップデート
--> トランザクションの確認を実行しています。
---> パッケージ php-mysqlnd.x86_64 0:7.4.4-1.el7.remi を 更新
---> パッケージ php-mysqlnd.x86_64 0:7.4.6-1.el7.remi を アップデート
--> 依存性解決を終了しました。
依存性を解決しました
=============================================================================================================================================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=============================================================================================================================================================================================================================================================================================
インストール中:
php-gd x86_64 7.4.6-1.el7.remi remi-php74 84 k
依存性関連でのインストールをします:
gd-last x86_64 2.3.0-1.el7.remi remi-safe 135 k
libraqm x86_64 0.7.0-4.el7 epel 15 k
libwebp7 x86_64 1.0.3-1.el7.remi remi-safe 266 k
依存性関連での更新をします:
php x86_64 7.4.6-1.el7.remi remi-php74 3.4 M
php-cli x86_64 7.4.6-1.el7.remi remi-php74 5.1 M
php-common x86_64 7.4.6-1.el7.remi remi-php74 1.2 M
php-json x86_64 7.4.6-1.el7.remi remi-php74 69 k
php-mbstring x86_64 7.4.6-1.el7.remi remi-php74 521 k
php-mysqlnd x86_64 7.4.6-1.el7.remi remi-php74 250 k
php-pdo x86_64 7.4.6-1.el7.remi remi-php74 134 k
php-sodium x86_64 7.4.6-1.el7.remi remi-php74 81 k
トランザクションの要約
=============================================================================================================================================================================================================================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)
更新 ( 8 個の依存関係のパッケージ)
総ダウンロード容量: 11 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/12): gd-last-2.3.0-1.el7.remi.x86_64.rpm | 135 kB 00:00:00
(2/12): libwebp7-1.0.3-1.el7.remi.x86_64.rpm | 266 kB 00:00:00
(3/12): php-7.4.6-1.el7.remi.x86_64.rpm | 3.4 MB 00:00:00
(4/12): libraqm-0.7.0-4.el7.x86_64.rpm | 15 kB 00:00:00
(5/12): php-cli-7.4.6-1.el7.remi.x86_64.rpm | 5.1 MB 00:00:00
(6/12): php-gd-7.4.6-1.el7.remi.x86_64.rpm | 84 kB 00:00:00
(7/12): php-json-7.4.6-1.el7.remi.x86_64.rpm | 69 kB 00:00:00
(8/12): php-common-7.4.6-1.el7.remi.x86_64.rpm | 1.2 MB 00:00:00
(9/12): php-mysqlnd-7.4.6-1.el7.remi.x86_64.rpm | 250 kB 00:00:00
(10/12): php-pdo-7.4.6-1.el7.remi.x86_64.rpm | 134 kB 00:00:00
(11/12): php-sodium-7.4.6-1.el7.remi.x86_64.rpm | 81 kB 00:00:00
(12/12): php-mbstring-7.4.6-1.el7.remi.x86_64.rpm | 521 kB 00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計 21 MB/s | 11 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
更新します : php-json-7.4.6-1.el7.remi.x86_64 1/20
更新します : php-common-7.4.6-1.el7.remi.x86_64 2/20
warning: /etc/php.ini created as /etc/php.ini.rpmnew
更新します : php-sodium-7.4.6-1.el7.remi.x86_64 3/20
更新します : php-pdo-7.4.6-1.el7.remi.x86_64 4/20
更新します : php-cli-7.4.6-1.el7.remi.x86_64 5/20
インストール中 : libraqm-0.7.0-4.el7.x86_64 6/20
インストール中 : libwebp7-1.0.3-1.el7.remi.x86_64 7/20
インストール中 : gd-last-2.3.0-1.el7.remi.x86_64 8/20
インストール中 : php-gd-7.4.6-1.el7.remi.x86_64 9/20
更新します : php-7.4.6-1.el7.remi.x86_64 10/20
更新します : php-mysqlnd-7.4.6-1.el7.remi.x86_64 11/20
更新します : php-mbstring-7.4.6-1.el7.remi.x86_64 12/20
整理中 : php-7.4.4-1.el7.remi.x86_64 13/20
整理中 : php-cli-7.4.4-1.el7.remi.x86_64 14/20
整理中 : php-sodium-7.4.4-1.el7.remi.x86_64 15/20
整理中 : php-mbstring-7.4.4-1.el7.remi.x86_64 16/20
整理中 : php-mysqlnd-7.4.4-1.el7.remi.x86_64 17/20
整理中 : php-pdo-7.4.4-1.el7.remi.x86_64 18/20
整理中 : php-json-7.4.4-1.el7.remi.x86_64 19/20
整理中 : php-common-7.4.4-1.el7.remi.x86_64 20/20
検証中 : php-common-7.4.6-1.el7.remi.x86_64 1/20
検証中 : php-gd-7.4.6-1.el7.remi.x86_64 2/20
検証中 : php-mysqlnd-7.4.6-1.el7.remi.x86_64 3/20
検証中 : php-7.4.6-1.el7.remi.x86_64 4/20
検証中 : php-sodium-7.4.6-1.el7.remi.x86_64 5/20
検証中 : php-json-7.4.6-1.el7.remi.x86_64 6/20
検証中 : php-pdo-7.4.6-1.el7.remi.x86_64 7/20
検証中 : libwebp7-1.0.3-1.el7.remi.x86_64 8/20
検証中 : php-cli-7.4.6-1.el7.remi.x86_64 9/20
検証中 : php-mbstring-7.4.6-1.el7.remi.x86_64 10/20
検証中 : libraqm-0.7.0-4.el7.x86_64 11/20
検証中 : gd-last-2.3.0-1.el7.remi.x86_64 12/20
検証中 : php-7.4.4-1.el7.remi.x86_64 13/20
検証中 : php-sodium-7.4.4-1.el7.remi.x86_64 14/20
検証中 : php-common-7.4.4-1.el7.remi.x86_64 15/20
検証中 : php-json-7.4.4-1.el7.remi.x86_64 16/20
検証中 : php-pdo-7.4.4-1.el7.remi.x86_64 17/20
検証中 : php-mysqlnd-7.4.4-1.el7.remi.x86_64 18/20
検証中 : php-cli-7.4.4-1.el7.remi.x86_64 19/20
検証中 : php-mbstring-7.4.4-1.el7.remi.x86_64 20/20
インストール:
php-gd.x86_64 0:7.4.6-1.el7.remi
依存性関連をインストールしました:
gd-last.x86_64 0:2.3.0-1.el7.remi libraqm.x86_64 0:0.7.0-4.el7 libwebp7.x86_64 0:1.0.3-1.el7.remi
依存性を更新しました:
php.x86_64 0:7.4.6-1.el7.remi php-cli.x86_64 0:7.4.6-1.el7.remi php-common.x86_64 0:7.4.6-1.el7.remi php-json.x86_64 0:7.4.6-1.el7.remi php-mbstring.x86_64 0:7.4.6-1.el7.remi php-mysqlnd.x86_64 0:7.4.6-1.el7.remi php-pdo.x86_64 0:7.4.6-1.el7.remi
php-sodium.x86_64 0:7.4.6-1.el7.remi
完了しました!
入りましたー!
ここまで書いておいてなんなんですけど、上記ライブラリ、remi-safeレポジトリにあるので、yumでもインストールできるみたい。
でもまあ、なんか足んねぇよなぁ、って時はとりあえずrpmから入れた方が余計なパッケージとか入らなくていいのかも。