質問: 環境 -- * Amazon Linux:1 * PHP: version - 7.1.29 remiリポジトリを利用しています。 Amazon Linux1なので、 リポジトリは、`http://rpms.famillecollet.com/enterprise/remi-release-6.rpm`から取得しています 発生しているエラー --------- ``` $ yum check-update --enablerepo=remi-php71 php 読み込んだプラグイン:priorities, update-motd, upgrade-helper エラー: requested datatype primary not available ``` インターネットをあさっていると、[1]にて、次のようなコマンドを利用することで、解決できるとありました。 ``` # cache削除 $ yum --enablerepo=remi-php71 clean all (enable無しもやった) $ sudo rpm --rebuilddb ``` しかし、上記コマンドを実行しても変わらずでした。 そこで [2]のやり方を試してみました。 ``` $ rm -rf /var/cache/yum/x86_64/latest/extras/mirrorlist.txt $ sudo yum makecache $ sudo yum --enablerepo=remi-php71 update php エラー: requested datatype primary not available ``` 構成自体はAnsibleで管理しており、あとから追加したインスタンスのみこのような状態になりました。 差異があるとしたら、Amazon LInuxのバージョンくらいです。 よろしくお願いいたします。 参考にしたサイト -------- * 1]: [解决yum错误Error: requested datatype primary not available * 2]: [yum Error: requested datatype primary not available
回答: 下記はレポジトリがない時や、レポジトリ設定が壊れている場合に表示されます。うまくいかない場合は知らない間にレポジトリパッケージ自体が更新された可能性もあります。 ``` エラー: requested datatype primary not available ``` 念のため最初にインストール済み`remi`phpパッケージを確認してください。本当にきちんとremiのphpがインストールされているかやx64など。 ``` # インストール済みphp関連パッケージ一覧 yum list installed "php*" # インストール済みphp71の情報 yum info php ``` たぶん、php7.1の依存関係にあるパッケージが`amazon-main`と`remi`で、パッケージが混じっているのだと思います。 ですので、先に`amazon-main`をアップデートしてから`php71`をアップデートしてみてはいかがでしょうか。 また、質問に参考にあった「2」は、YUMのキャッシュを削除する方法でして、これだけだと不十分です。 ``` # キャッシュ削除 sudo yum clean all # amazon-main アップデート sudo yum update # remi-php71 アップデート sudo yum update --enablerepo=remi-php71 php ``` 無難な方法としては、PHP関連の設定をバックアップしてから、パッケージを入れなおすと良いです。 ``` # php.ini バックアップ cp -f /etc/php.ini ~/ # php71 削除 sudo yum remove php71 # php71 再インストール sudo yum install --enablerepo=remi-php71 php ``` `php71`をインストールする時に依存関係を無視してインストールした場合は、アップデートも強制的に行う必要があります。ただし、他の依存関係が壊れてしまうはずなのでお勧めはしません。最後の手段だと思ってください。 ``` # 強制アップデート sudo yum update --enablerepo=remi-php71 --force php ```