Amazon Linux2にいつものようEPEL/remiリポジトリを使って、AnsibleでPHPをインストールすると以下のようにエラーが出た。
1 2 3 4 |
TASK [php : php72 install] ************************************************************************************************************ failed: [test-server01] (item=php) => {"changed": false, "item": "php", "msg": "Error accessing repos: Error getting repository data for amzn-main, repository not found"} failed: [test-server01] (item=php-fpm) => {"changed": false, "item": "php-fpm", "msg": "Error accessing repos: Error getting repository data for amzn-main, repository not found"} failed: [test-server01] (item=php-gd) => {"changed": false, "item": "php-gd", "msg": "Error accessing repos: Error getting repository data for amzn-main, repository not found"} |
ちなみにAnsibleのコードは以下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
- name: install remi epel yum: name={{ item }} state=present loop: - "{{ PHP_VERSION_EPEL }}" - "{{ PHP_VERSION_REMI }}" - name: php72 install yum: name={{ item }} state=present disablerepo=amzn-main enablerepo=remi,remi-php72 loop: - php - php-fpm - php-gd - php-bcmath - php-mbstring - php-xml - php-ldap - php-mysqlnd - php-opcache |
1 2 3 4 5 6 7 8 |
# ls -al /etc/yum.repos.d/ total 28 drwxr-xr-x 1 root root 4096 Oct 19 09:15 . drwxr-xr-x 1 root root 4096 Oct 19 09:15 .. -rw-r--r-- 1 root root 985 Jun 24 21:10 amzn2-core.repo -rw-r--r-- 1 root root 1114 Oct 19 09:15 amzn2-extras.repo -rw-r--r-- 1 root root 472 Jan 4 2018 nodesource-el7.repo -rw-r--r-- 1 root root 130 Oct 15 08:55 yarn.repo |
そもそもamzn-mainリポジトリをdisableしているのにも関わらず、そんなリポジトリはないと言われる。もちろんamazon linux2のリポジトリは amzn2-core.repo
を参照しているので、 disablerepo=amzn2-core
と指定してもインストールにエラーが出ます。今回Amazon Linux2の仕様やその対処方法をブログします。
■amazon-linux-extras list
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html
Amazon Linux2にはExtras Libraryと呼ばれるパッケージが存在し、特定のパッケージをより新しいバージョンで利用することが出来ます。 Extra Packages for Enterprise Linux (EPEL) のような位置づけのようで、通常はディストリビューション標準のパッケージを利用する一方で、特定のパッケージではより新しいバージョンを使うことができるみたい。
が!!
使用できるパッケージが限られるため、EPEL/remiリポジトリを使ってインストールするのが好ましいでしょう。
ちなみに
・Scripting amazon-linux-extras?
1 2 3 4 |
name: Enable amazon-linux-extras packages shell: "amazon-linux-extras enable {{item.name}}" become: yes with_items: "{{ amazon_linux_extras_packages }}" |
Ansibleでamazon-linux-extrasコマンドを使ってインストールするにはまだモジュールがないため、shellモジュールを使ってインストールするしかないようです。(まだ使わなくても良さそう?)
■CentOS、RHEL、または Amazon Linux が実行されている Amazon EC2 インスタンスに対して EPEL リポジトリを有効にする方法を教えてください。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-enable-epel/
EPEL/remiリポジトリを使ってPHP7.2をインストールしてみます。
・RHEL 7 および Amazon Linux 2 で EPEL/remi rpmパッケージをインストールして有効にする
1 2 |
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm |
・amzn2リポジトリの優先度を下げる
1 2 3 4 5 6 7 |
$ sudo vim /etc/yum.repos.d/amzn2-core.repo -priority=10 +priority=99 $ sudo vim /etc/yum.repos.d/amzn2-extras.repo -priority=10 +priority=99 |
amzn2の優先度をデフォルトの99に変更すると、–enablerepoオプションで指定のリポジトリを参照するようになります。
・install php7.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ sudo yum install --enablerepo=remi,remi-php72 php Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amzn2-core | 2.4 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package php.x86_64 0:7.2.12-1.el7.remi will be installed --> Processing Dependency: php-cli(x86-64) = 7.2.12-1.el7.remi for package: php-7.2.12-1.el7.remi.x86_64 --> Processing Dependency: php-common(x86-64) = 7.2.12-1.el7.remi for package: php-7.2.12-1.el7.remi.x86_64 --> Running transaction check ---> Package php-cli.x86_64 0:7.2.12-1.el7.remi will be installed ---> Package php-common.x86_64 0:7.2.12-1.el7.remi will be installed --> Processing Dependency: php-json(x86-64) = 7.2.12-1.el7.remi for package: php-common-7.2.12-1.el7.remi.x86_64 --> Running transaction check ---> Package php-json.x86_64 0:7.2.12-1.el7.remi will be installed --> Finished Dependency Resolution Dependencies Resolved ====================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================== Installing: php x86_64 7.2.12-1.el7.remi remi-php72 3.2 M Installing for dependencies: php-cli x86_64 7.2.12-1.el7.remi remi-php72 4.8 M php-common x86_64 7.2.12-1.el7.remi remi-php72 1.1 M php-json x86_64 7.2.12-1.el7.remi remi-php72 62 k Transaction Summary ====================================================================================================================================== Install 1 Package (+3 Dependent packages) |
・yum info php/installed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
$ sudo yum info php Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Installed Packages Name : php Arch : x86_64 Version : 7.2.12 Release : 1.el7.remi Size : 10 M Repo : installed From repo : remi-php72 Summary : PHP scripting language for creating dynamic web sites URL : http://www.php.net/ License : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA Description : PHP is an HTML-embedded scripting language. PHP attempts to make it : easy for developers to write dynamically generated web pages. PHP also : offers built-in database integration for several commercial and : non-commercial database management systems, so writing a : database-enabled webpage with PHP is fairly simple. The most common : use of PHP coding is probably as a replacement for CGI scripts. : : The php package contains the module (often referred to as mod_php) : which adds support for the PHP language to Apache HTTP Server. $ sudo yum list installed |grep php php.x86_64 7.2.12-1.el7.remi @remi-php72 php-bcmath.x86_64 7.2.12-1.el7.remi @remi-php72 php-cli.x86_64 7.2.12-1.el7.remi @remi-php72 php-common.x86_64 7.2.12-1.el7.remi @remi-php72 php-fpm.x86_64 7.2.12-1.el7.remi @remi-php72 php-gd.x86_64 7.2.12-1.el7.remi @remi-php72 php-json.x86_64 7.2.12-1.el7.remi @remi-php72 php-ldap.x86_64 7.2.12-1.el7.remi @remi-php72 php-mbstring.x86_64 7.2.12-1.el7.remi @remi-php72 php-mysqlnd.x86_64 7.2.12-1.el7.remi @remi-php72 php-opcache.x86_64 7.2.12-1.el7.remi @remi-php72 php-pdo.x86_64 7.2.12-1.el7.remi @remi-php72 php-xml.x86_64 7.2.12-1.el7.remi @remi-php72 |
ansibleは以下のようにすると確実!
■use Ansible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
- name: amzn2-core.repo priority down replace: path: /etc/yum.repos.d/amzn2-core.repo regexp: 'priority=10' replace: 'priority=99' - name: amzn2-extras.repo priority down replace: path: /etc/yum.repos.d/amzn2-extras.repo regexp: 'priority = 10' replace: 'priority=99' - name: install epel/remi yum: name={{ item }} state=present loop: - "{{ PHP_VERSION_EPEL }}" - "{{ PHP_VERSION_REMI }}" - name: php72 install yum: name={{ item }} state=present enablerepo=remi,remi-php72 loop: - php - php-fpm - php-gd - php-bcmath - php-mbstring - php-xml - php-ldap - php-mysqlnd - php-opcache |
■まとめ
Amazon Linux2はいろいろと変わってることに注意!!systemctlサイコー!!
0件のコメント