Linux RHEL8+PHP7.1+SSH2(extension)に苦労した話

linux

CentOS8の開発が終わってしまって、今後のOSどうするの?という話がうちの会社でも話題沸騰中です。なので最近はRHEL8でのサーバ構築依頼が増えてきたのですが、思った以上にググっても情報が出てこないんですよね。躓いたものはやっぱり備忘として残しておくことにします。※OSのセキュリティがんばってるのにMWのセキュリティおかしくない?ってのは是非突っ込まないでいただきたいです(笑)

結論

自分の力不足が全ての元凶で苦労したということ。。。反省。結論以下でいける。

# dnf install --disablerepo=rhel-8-for-x86_64-appstream-rpms libssh2
# dnf install --disablerepo=rhel-8-for-x86_64-appstream-rpms libssh2-devel
# dnf install php71-php-pecl-ssh2

経緯

最初にしたこと

# pecl install ssh2
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
pecl/ssh2 requires PHP (version >= 4.0.0, version <= 6.0.0), installed version is 7.1.33
No valid packages found
install failed

今回の対応は旧環境からの移行で元々のサーバはphp5系で動いてたんですね。なので同じようにやると上記のような感じで拒否られました。とりあえず指示どおり以下をやってみる。

# pecl channel-update pecl.php.net

# pecl install ssh2
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
pecl/ssh2 requires PHP (version >= 4.0.0, version <= 6.0.0), installed version is 7.1.33
No valid packages found
install failed

が、何も変わらず。調べていると「php-pecl-ssh2」をインストールすればよいと。

# dnf install php71-php-pecl-ssh2

 問題: package php71-php-pecl-ssh2-1.3.1-1.el8.remi.x86_64 requires libssh2(x86-64) >= 1.9.0, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package libssh2-1.9.0-5.el8.x86_64 is filtered out by modular filtering

んー?libssh2入れてたはずだけど。ただ何故かlibssh2-develが入らなかったのが気になったので調べてみる。redhatの公式ページは既に削除されていました(調べが足りないか?)が、こちらの方のブログでRHEL8ではlibssh2は無いと書いてある。。。他のページでもdevelが無いという情報があり、develを入れるなら下記のように「virt-devel」を有効化にして入れる必要があると。(のちに調査すべきところを間違えてるとこにきづく)devel入れたら動くのかな?と思い入れてみる。

# subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms
# dnf module enable virt-devel

# dnf install libssh2-devel
=====================================================================================================================
 パッケージ      Arch     バージョン                                リポジトリー                               サイズ
=====================================================================================================================
インストール:
 libssh2-devel   x86_64   1.8.0-8.module+el8.0.0+4084+cceb9f44.1    codeready-builder-for-rhel-8-x86_64-rpms    66 k

おー入ったー。リトライ

# dnf install php71-php-pecl-ssh2

 問題: package php71-php-pecl-ssh2-1.3.1-1.el8.remi.x86_64 requires libssh2(x86-64) >= 1.9.0, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package libssh2-1.9.0-5.el8.x86_64 is filtered out by modular filtering

変化なし。。。ん?(ここでようやく気付く)1.9.0以上。。。RHEL8公式レポジトリだと1.8みたい。公開サイト( http://www.libssh2.org/ )に行くと普通に1.9がある。調べると普通にepelにあるってよ。

# dnf info --enablerepo=epel libssh2

名前         : libssh2
バージョン   : 1.8.0
リリース     : 8.module+el8.0.0+4084+cceb9f44.1
Arch         : x86_64
サイズ       : 99 k
ソース       : libssh2-1.8.0-8.module+el8.0.0+4084+cceb9f44.1.src.rpm
リポジトリー : rhel-8-for-x86_64-appstream-rpms
概要         : A library implementing the SSH2 protocol
URL          : http://www.libssh2.org/

ん?epelにあるんじゃないの?もう少し調べてみると、rhel8をdisableしないといけないと。。。

# dnf info --enablerepo=epel --disablerepo=rhel-8-for-x86_64-appstream-rpms libssh2

名前         : libssh2
バージョン   : 1.9.0
リリース     : 5.el8
Arch         : x86_64
サイズ       : 325 k
ソース       : libssh2-1.9.0-5.el8.src.rpm
リポジトリー : @System
repo から    : epel
概要         : A library implementing the SSH2 protocol
URL          : https://www.libssh2.org/

オーキターーーー!!随分調査させられました。pecl-ssh2はこの後すんなりインストールすることができました。初歩的なことですが、centosもこんな仕様だったっけ?忘れましたが、だいぶ回り道した結果、無事入れることができました。

コメント

  1. Jonathan Yen より:

    Thank you for your help! I was stuck on this issue for quite some time!