人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

centos6.4 php5.4の環境でyum --enablerepo=epel install zabbix-web-mysqlを行って
zabbixをインストールしようとしたところ、以下のエラーになってしまいます。
php5.3にダウングレードしないとzabbixはいらないのでしょうか。。インストールするための対応方法を教えていただきたいです。
--> Finished Dependency Resolution
Error: Package: php-gd-5.3.3-23.el6_4.i686 (updates)
Requires: php-common(x86-32) = 5.3.3-23.el6_4
Installed: php-common-5.4.20-1.el6.remi.i686 (@remi)
php-common(x86-32) = 5.4.20-1.el6.remi
Available: php-common-5.3.3-22.el6.i686 (base)
php-common(x86-32) = 5.3.3-22.el6
Available: php-common-5.3.3-23.el6_4.i686 (updates)
php-common(x86-32) = 5.3.3-23.el6_4

●質問者: FujiiRock
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

エラーの続きです。
Error: Package: php-xml-5.3.3-23.el6_4.i686 (updates)
Requires: php-common(x86-32) = 5.3.3-23.el6_4
Installed: php-common-5.4.20-1.el6.remi.i686 (@remi)
php-common(x86-32) = 5.4.20-1.el6.remi
Available: php-common-5.3.3-22.el6.i686 (base)
php-common(x86-32) = 5.3.3-22.el6
Available: php-common-5.3.3-23.el6_4.i686 (updates)
php-common(x86-32) = 5.3.3-23.el6_4
Error: Package: php-bcmath-5.3.3-23.el6_4.i686 (updates)
Requires: php-common(x86-32) = 5.3.3-23.el6_4
Installed: php-common-5.4.20-1.el6.remi.i686 (@remi)
php-common(x86-32) = 5.4.20-1.el6.remi
Available: php-common-5.3.3-22.el6.i686 (base)
php-common(x86-32) = 5.3.3-22.el6
Available: php-common-5.3.3-23.el6_4.i686 (updates)
php-common(x86-32) = 5.3.3-23.el6_4
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest


1 ● Y.Namikawa / id:rx7
●0ポイント

未確認なので、うまくいくかわかりませんが、

  1. 一時的に、php5.4をアンインストール
  2. Zabbixをインストール(多分、php5.3がインストールされる?)
  3. php5.4を再度インストール

の流れで、うまく依存解決が行われないでしょうか。お試しください。
(的外れな回答だったら、すみません。。。)


2 ● JULY
●200ポイント ベストアンサー

おそらく、zabbix-web が php を要求していると思いますが、zabbix-web 自体は、5.0 以降のバージョンであれば問題ないようです。

$ rpm -qRp zabbix-web-2.0.9-1.el6.noarch.rpm
警告: zabbix-web-2.0.9-1.el6.noarch.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
/bin/bash
/bin/sh
/bin/sh
/usr/sbin/update-alternatives
/usr/sbin/update-alternatives
config(zabbix-web) = 2.0.9-1.el6
dejavu-sans-fonts
httpd
php >= 5.0
php-bcmath
php-gd
php-mbstring
php-xml
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
zabbix-web-database = 2.0.9-1.el6
rpmlib(PayloadIsXz) <= 5.2-1

エラーメッセージからすると、php-gd を CentOS のリポジトリからインストールしようとして、すでに remi リポジトリからインストールしている php のバージョンと合わない、という状況だと思います。

登録している yum リポジトリの設定がどうなっているか分かりませんが、もし、remi リポジトリの設定では有効になっていない(--enablerepo=remi として php を remi リポジトリから入れた)のであれば、remi リポジトリを有効にした状態にすれば、成功するかもしれません。

あと、zabbix パッケージが要求している php 関連のパッケージ(php-bcmatch、php-gd、php-mbstring、php-xml)を、あらかじめ remi リポジトリからインストールしておく、というのが手があります。こうしておけば、少なくとも zabbix-web パッケージが要求するパッケージはインストール済みで、条件を見たしている事になります。

どちらかというと、後者の方法(あらかじめ php-gd などを remi リポジトリからインストールしておく)を試してみて、それでもさらなる依存性の問題が解決できないようなら、remi リポジトリを有効の状態で zabbix パッケージをインストールする、とか、remi リポジトリや epel などの priority や除外設定等を工夫する、という事になると思います。


FujiiRockさんのコメント
ありがとうございます!大変勉強になりました。 試してみたところ、--enablerepo=remiとしてzabbix-web-mysqlをしましたが、zabbix-web-mysqlがないとのことなので、それではということでphp-bcmatchをremiからインストールしようとしたのですが、こちらもno packageでした。 remiからphpをインストールしているがため、php-bcmatchがremiにないので、zabbix-web-mysqlもインストールできなくなっている気がするので、remiのphpではなく、remi以外のレポジトリがよさそうかと思いました。。

JULYさんのコメント
あっ、私が間違えて書いていました。php-bcmatch ではなく、php-bcmath ですね。 php-bcmath であれば remi にもあります。 http://rpms.famillecollet.com/enterprise/6/remi/x86_64/repoview/php-bcmath.html

FujiiRockさんのコメント
ありがとうございます! 改めてphp-bcmathでやったのですが、結果は補足欄のphp-commonのエラーとなりました。phpを複数バージョンインストールした方が楽すかね。。

JULYさんのコメント
> phpを複数バージョンインストールした方が楽すかね。 基本的に、rpm パッケージで複数のバージョンを入れる方が難しいです。というか、依存性を無視して入れると、あとあと面倒です。 基本的に、php は remi のパッケージを使う、という方針であれば、/etc/yum.repos.d/CentOS-Base.repo を編集して、php に関するパッケージを CentOS のリポジトリから除外してやる方法があります。 /etc/yum.repos.d/CentOS-Base.repo に [base]と「updates」というセクションがありますが、それぞれのセクションで、 exclude=php php-* という行を書き加えれば、以降、php 関連パッケージは CentOS オリジナルのリポジトリからインストールする事は無くなります。設定を書き加えたら yum clean all と yum check-update をした方がベターです。 この状態で remi のリポジトリを有効にしてインストールすれば、CentOS と remi との間でのバージョン問題は解決できると思います。remi のリポジトリをぱっと見た感じだと、php のサブパッケージ(php-なんちゃら というパッケージ)の構成は、オリジナルと同じ構成になっているので、たぶん大丈夫じゃないかなぁ、と。 もう一つ、リポジトリ間の priority を設定する方法があって、yum-plugin-priorities をインストールした上で、remi リポジトリの優先順位を上げる、という手もあるのですが、こうすると、php 以外のパッケージも、remi のパッケージのバージョン番号が大きい値だと remi からインストールする事になるので、影響範囲が広がってしまいます。

FujiiRockさんのコメント
おお〜!! 素晴らしい!!! php-bcmathが入らない所からzabbixまで、問題全て解決されました! 非常に勉強になりました。ありがとうございました!!_ (_ _)_ すみません!! 向学の為にこれまで教えていただいたことをoutputしますと以下矢印のような訳でよいでしょうか。 Error: Package: php-gd-5.3.3-23.el6_4.i686 (updates) →CentOSオリジナルレポジトリ(update)からphp-gdを取得しようとした Requires: php-common(x86-32) = 5.3.3-23.el6_4 →php-gdは5.3.3-23.el6_4のphp-commonを必要としている Installed: php-common-5.4.20-1.el6.remi.i686 (@remi) →インストールされているのは、remiのphp5.4 =>remiとCentOSオリジナルの両方から異なるバージョンをインストールしようとしていてエラーになっている。phpは、remiでやっていく方針でいますので、CentOSオリジナルからphpを参照しないようにexclude=php php-*とする。 php-common(x86-32) = 5.4.20-1.el6.remi →php-commonは5.4のremiである。 Available: php-common-5.3.3-22.el6.i686 (base) →yumからの取得されるのは、CentOSオリジナルレポジトリ(base)でphp-common-5.3です。 あと以下のところなのですが >設定を書き加えたら yum clean all と yum check-update をした方がベターです。 すみません。初歩的質問で失礼なのですが、 yum clean all したほうがベターなのは、もしかしたらキャッシュが残ってしまうからってことでしょうか。 同様に、yum check-update をすると以下が出力されていたのですが、 どのような効果がありますでしょうか。 base | 3.7 kB 00:00 base/primary_db | 3.4 MB 00:07 contrib | 2.9 kB 00:00 contrib/primary_db | 1.2 kB 00:00 extras | 3.5 kB 00:00 extras/primary_db | 19 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 4.6 MB 00:07

JULYさんのコメント
今回のケースだと yum は次のような判断をしたと思います。 zabbix-web が php-gd を要求している ↓ php-gd は CentOS リポジトリに見つかった。 ↓ CentOS リポジトリにある php-gd はバージョン 5.3.3-23.el6_4 で、このパッケージが php-common の バージョン 5.3.3-23.el6_4 を要求している。 ↓ php-common は 5.4.20-1.el6.remi というバージョンのが既に入っている。 ↓ 同じパッケージで複数のバージョンはインストールできないから、ダメ。 ポイントは、php-gd が要求する php-common は、バージョンを指定して要求している点です。一つのソースファイルから、機能毎に分割した複数のパッケージになっているケースの場合、関連するパッケージ同士は、同じバージョン番号を要求するのが通常です。 しかし、zabbix 自体は、特定の php のバージョンを要求している訳ではなく、ざっくりとバージョン 5 以上、ということしか要求していません。 そこで、最初から Zabbix が要求している php-gd やら php-bcmath やらを先にインストールしてしまえば、Zabbix には文句がないだろう、ということです。 > すみません。初歩的質問で失礼なのですが、 > yum clean all したほうがベターなのは、もしかしたらキャッシュが > 残ってしまうからってことでしょうか そうです。そのキャッシュをクリアして、改めて yum check-update をすれば、有効になっているリポジトリのパッケージ情報をダウンロードしてきます。リポジトリの設定等を変更した場合、キャッシュが邪魔する事があるので、「あれ? 反映されてない?」と思ったら、yum clean、yum check-update を実行します。

FujiiRockさんのコメント
ありがとうございます?? お陰様で知識が深めることができました! また、別で何かありました際には何卒よろしくお願い致します! 本件これにてクローズします! かなり良回答いただいたので、お礼の気持ちとして、二倍ポイントをつけさせていただきます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ