AWSにLaravelをインストールしようとするのだが必要なphp関連モジュールがないと怒られまくる
Laravelのインストールに必要なモジュールがない!
開発環境で開発していたプロジェクトは、composerでライブラリ管理をしていました。
Laravelも、 composer.json
というファイルで必要なモジュール含めて管理していて、 composer install
すれば一気にインストールされる予定でした。
しかし、この composer install
コマンドが通らない。
というのも、依存性のあるライブラリがありません、と出てしまうのでした。 調べてみると、上でインストールしたPHPのパッケージのみならず、Laravelを動かすために必要な関連モジュールが他にもいくつかインストール必要なことがわかりました。
様々なサイトを見比べてみると、いくつもあったのですが、類似のモジュールをrepoで探してインストールして少しずつ解消して行きました。 こんな感じです。
sudo yum --enablerepo=remi-php71 --disablerepo=amzn2-core install php-pdo php-mbstring php-pecl-zip php-fpm
- yumはOSに必要なライブラリ管理ですね。
install
の後ろは、モジュール名ですね。これらのモジュールは、上記コマンドでインストールできました。--enablerepo=remi-php71
は、remi-php71
というrepoを優先的に使ってね、というオプションです。--disablerepo=amzn2-core
は、amzn2-core
というrepoは使わないでね、というオプションです。
この2つの長ったらしいオプションは、つけないと、 amzon2-core
というrepoを優先的に使ってしまうからです。
このrepoは、必要なphpのモジュールがなかったり、すごくバージョンが古いものが入っていたりすることが多かったです。
また、 --enablerepo=remi-php71
だけすればいいかと思いましたが、 --disablerepo
しないと、 amzn2-core
が優先されてしまったので、注意が必要です。
そもそも、最初は、必要なモジュールが入っているrepoを探して、repoをダウンロードするところからやりました。
頑固にインストールされてくれないモジュール
最後まで残ったのが, php-xml
と php-dom
です。
その時に使ったコマンドはこれ。
sudo yum install --enablerepo=remi-php71 --disablerepo=amzn2-core php-xml php-dom
これらをインストールしようとすると、これらが依存する libxslt.so.1
というモジュールがない! というエラーが出続けました。
こんな奴です。
Resolving Dependencies --> Running transaction check ---> Package php-xml.x86_64 0:7.1.21-1.el7.remi will be installed --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.24)(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.22)(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.18)(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.13)(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libxslt.so.1(LIBXML2_1.0.11)(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libxslt.so.1()(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Processing Dependency: libexslt.so.0()(64bit) for package: php-xml-7.1.21-1.el7.remi.x86_64 --> Finished Dependency Resolution Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1(LIBXML2_1.0.18)(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1(LIBXML2_1.0.24)(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libexslt.so.0()(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1(LIBXML2_1.0.13)(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1()(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1(LIBXML2_1.0.22)(64bit) Error: Package: php-xml-7.1.21-1.el7.remi.x86_64 (remi-php71) Requires: libxslt.so.1(LIBXML2_1.0.11)(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
libxslt.so
とかでググってもなんも出てこないんで、これはマジでハマりました。。。
詳しい方に相談したら、 sudo yum install libxml2-devel libxslt-devel
やってみて、と言われて、これでちゃんと通ったんです。
参考:CentOSにlxmlをインストールするときにlibxml/xmlversion.hがないと怒られる場合の対処法
聞くところによると、CやOSの知識がある人でないと、そのライブラリが何を指していてどんなものを入れればいいのか、感覚的にわかりにくいものなんだとか。
libxslt
を入れるのに、yum installするときは、 libxslt-devel
と読み替えないといけないけど、経験がある人にはわかるというのは、素人にはきつい話です。
環境構築を最初にやる初心者が誰しも通る道のりなのだとか・・・
勉強の仕方だけでも明らかにしてほしい・・・
その辺のOSやインフラの感覚はまだまだ勉強不足です。
この libxslt
をインストールしてから、php-xml
と php-dom
を入れ直すコマンドを打ってみると、これは通りました。
以上。