Php55とAmazon PHP sdkを使用して新しいAmazonLinux EC2インスタンスを起動するスクリプトを機能させようとしています。しかし、=が原因と思われる問題が発生しています。 PHPバージョンが競合しています。この場合、yumがどのように機能するかについて、私が見逃していることがあると思います。
私が実行した場合、それを最も単純なケースに要約するには:
yum install -y httpd24 php55 php-Amazon-sdk2
「エラー:php55-php-commonとの競合がphp-common-5.3.29-1.7.amzn1.x86_64 "と表示されます
ただし、実行すると:
yum install -y httpd24 php55
そして、個別に実行します。
yum install -y php-Amazon-sdk2
正常に動作します。明確にするために、これらのコマンドを実行しているとき、システムにはPHPのバージョンがまったく存在しないため、すでに存在するものと競合しません。
Yumの依存関係がどのように機能するかについてはよくわかりませんが、これはphp-Amazon-sdk2がphp55で問題ないことを示しているようですが、何らかの理由で、すべてを同時にインストールするとphp53を強制しようとします。 適切なこれを修正する方法は何ですか(つまり、依存関係を無視して、強制的にインストールする必要はありませんが、これらを別々の手順で実行する必要もありません)?
これは、Amazon LinuxでのRPM/YUMの制限と、phpの複数のバージョンがパッケージ化される方法が原因です。 Amazon Linuxの機能の1つは、いくつかの言語の複数のバージョンと他のオープンソースソフトウェアパッケージがあることです。ソフトウェアは同時にインストールされるように設計されていないため、多くの場合、これらのパッケージは互いに競合する必要があります。
この場合、起こっているのは、各phpパッケージに一般的な提供物があることです(つまり、php php54とphp55はすべてPHPを提供します)。 php-Amazon-sdk2にはphpが必要です。これは、yumコマンドラインでphp55パッケージを指定することで満たされます。競合エラーは、php-commonを必要とするphp-guzzle-Guzzleパッケージから発生しています。この場合、php-Amazon-sdk2パッケージのインストール時にphp55-commonをyumコマンドに追加すると、成功します。
yum install -y httpd24 php55 php55-common php-Amazon-sdk2
一般に、Amazon Linux AMIでは、phpとの競合エラーが発生した場合、回避策は正しいバージョンのパッケージをyumコマンドラインに追加することです。この場合、報告された競合はphp-commonでした。 php55をインストールしたいと思っていたので、yumに必要なものを正確に伝えるだけでした(つまり、php-commonではなくphp55-commonが欲しい)。 phpを必要とするパッケージをインストールし、他のphpパッケージを指定しない場合、yumは汎用phpパッケージを選択し、PHP 5.3がインストールされます。これらの競合エラーは通常、 php54およびphp55パッケージの問題。
この回避策は直感的ではなく、この問題はAmazon LinuxAMIチームによって指摘されていることに同意します。彼らはこの問題に対するいくつかの異なる解決策を模索しています。彼らは、PHPのパッケージングと一般的なAmazon Linux AMIに関するフィードバックを非常に受け入れています。彼らはawsフォーラムを監視しているので、問題を投稿するのに最適な場所です。 AWSプレミアムサポートをご利用の場合は、ケースをオープンしてAmazon Linux AMIチームに転送することができます。
ありがとう、ヒース
パッケージphp-mbstringに関連する同様の問題がありました。グーグルによってここに送られるあなたのそれらのために、私のための解決策はphp 55-mbstringをインストールすることでした(私は私のEC2インスタンスにphp5.5を持っていました)。マシンにインストールされているphpのバージョン(コマンドphp -v)を確認し、上記のようにPHP pacakgeの横にそのバージョンを追加します。