phpのSSH2をCentOS 6で使えるようにする
別なサーバーにファイルをコピーし無くてはならない処理があって、もとのファイルが php だったので ssh2_scp_send を使ってコピーしようと思ったんですが、最近まっさらな状態から作ったばかりのサーバーで SSH2系の関数が使えない。
ならインストールすれば使えるだろうっと、簡単に考えていたら結構手間取ったので、一応書いておきます。
が、結論から書くと epel 使って yum でインストールすれば何も考えずに使えますってお話。
どういうポリシーでサーバーのセットアップをするかは人それぞれだと思うのですが、私の場合、最近は yum でセットアップするほうが多いです。
php をコンパイルして使っても良いと思いますが、結局メンテナンスが面倒になるので、ほとんど rpm から。
で、出来ればサードパーティのリポジトリは使わずに済めばそれがベストかなぁっと、そんな感じで epel 使わずにセットアップしようと思ったら面倒な事になりました。
まず、PEAR がインストールされていなかったのでインストールします。
yum install php-pear
で、次に pecl を使って ssh2 をインストールしようとしますがエラー。
pecl install ssh2 Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install install failed
どうやら channel://pecl.php.net/ssh2-0.12 を使ってインストールしろって事らしいのでやり直し。
pecl install channel://pecl.php.net/ssh2-0.12 WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading ssh2-0.12.tgz ... Starting to download ssh2-0.12.tgz (26,223 bytes) .........done: 26,223 bytes 6 source files, building running: phpize sh: phpize: command not found ERROR: `phpize' failed
またエラーが出てますが、
sh: phpize: command not found
ということなので、phpize が無くてエラーになっているみたいです。
ということで、phpize を使えるようにするために、php-devel をインストールします。
yum install php-devel
では、気を取りなおして再度実行。
pecl install channel://pecl.php.net/ssh2-0.12 downloading ssh2-0.12.tgz ... Starting to download ssh2-0.12.tgz (26,223 bytes) .........done: 26,223 bytes 6 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 libssh2 prefix? [autodetect] : building in /var/tmp/pear-build-rootJxu7Cc/ssh2-0.12 running: /var/tmp/ssh2/configure --with-ssh2 checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... no checking for gcc... no configure: error: in `/var/tmp/pear-build-rootJxu7Cc/ssh2-0.12': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details. ERROR: `/var/tmp/ssh2/configure --with-ssh2' failed
今度は、何か別な所でエラーが出てしまいました。
configure: error: in `/var/tmp/pear-build-rootJxu7Cc/ssh2-0.12':
configure: error: no acceptable C compiler found in $PATH
で、config.log を見ろとのことなんですが、config.log 自体発見できずコンパイルに使ってるテンポラリファイルもエラー後に消えてしまうので、これ以上追うのが難しくなってしまいました。
この時点では単純に gcc とかが入っていないからかもしれない(っと言うか、この時点のエラーの原因はこれ)のですが、他にも make とか必須っぽいものが全く入っていないという状態でした・・・
で、エラーの度に必要な物を入れていっても良いし、それが正解だとは思いますが、いい加減面倒になってしまったので、これ以上は調査せず別な方法を探すことに。
で、検索したら epel に php-pecl-ssh2 ってパッケージがあるじゃん・・・と。
まぁ、なんとも言えないところなんですけどね・・・
個人的には、この手の拡張ライブラリっぽいのは pecl とか pear コマンド使って入れたほうが良いと思います。
が、yum で入るならそっちの方が圧倒的に作業は楽。
なので、今回は yum で入れてみました。
まずは、epel リポジトリを追加しておきます。
私はサードパーティのリポジトリを使う場合には yum-priorities を使うようにしてますが、CentOS 6 だと yum-plugin-priorities って名前になった(戻った)んですね。
まぁ、どっちでもいいですが。
cd /tmp/ wget http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm rpm -Uvh epel-rel*
使う rpm はOS毎に違うので、この辺りを見て確認して下さい。
で、php-pecl-ssh2 をインストールします。
yum install php-pecl-ssh2
以上。
軽くテストした感じ、普通に使えてます。
まぁ、今回はまっさらに近い状態の OS だったので、面倒だったのかも知れませんが、圧倒的に yum でインストールしたほうが楽ですね。。。
(2013-02-01 追記)
その後、問題が発覚したので入れなおしました。
その際のエントリーはコチラ→「phpのSSH2をCentOS 6で使えるようにする - 続編」
コメント