#AWS EC2 の amazon-linux-extras の話

amazon-linux-extras とは、Amazon Linux 2 インスタンスにある PHP、Python、Golang、MariaDB などのパッケージをより新しいバージョンで利用できるようマネジメント管理するコマンド。
パッケージを最新にアップグレードする時に使える便利なコマンドです。例えば、php のバージョンアップなどで活躍できます。

Extras Library からソフトウェアパッケージをインストールするには、まず amazon-linux-extras リポジトリがインスタンスにインストールされていることを確認します。次に、利用可能なソフトウェアパッケージを一覧表示し、探しているものを有効にして、yum を使ってパッケージをインストールします。

注意: この解決方法は Amazon Linux 2 用です。これらの手順は、Amazon Linux 1 2018.03 には適用されません

#Extras Library インストール

which コマンドを使用して、amazon-linux-extras パッケージがインストールされていることを確認

which amazon-linux-extras

/usr/bin/amazon-linux-extras

デフォルトで入っているはずですが、なければインストール

sudo yum install -y amazon-linux-extras

#amazon-linux-extras 使い方

コマンド

  • help (コマンドリスト表示)
  • info (特定のパッケージ詳細表示)
  • install (特定のトピックを有効化&インストール)
  • list (有効化できるトピック一覧 省略可能)
  • enable (特定のトピック有効化 レポジトリに追加だけ)
  • disable (特定のトピック無効化 パッケージ削除ではない)
  • remove

#list 利用可能なトピックのリストを表示

list は省略可能

amazon-linux-extras list
amazon-linux-extras

#info 特定のパッケージ詳細表示

$ amazon-linux-extras info php7.4
php7.4 recommends php-cli                    # yum install php-cli
php7.4 recommends php-pdo                    # yum install php-pdo
php7.4 recommends php-fpm                    # yum install php-fpm
php7.4 recommends php-json                   # yum install php-json
php7.4 recommends php-mysqlnd                # yum install php-mysqlnd

#install 特定のトピックインストール

バージョンを指定しない場合は、デフォルトのバージョンでインストールされます。

$ sudo amazon-linux-extras install php7.4
Package php-cli-7.4.0-3.amzn2.1.x86_64 already installed and latest version
Package php-fpm-7.4.0-3.amzn2.1.x86_64 already installed and latest version
Package php-json-7.4.0-3.amzn2.1.x86_64 already installed and latest version
Package php-mysqlnd-7.4.0-3.amzn2.1.x86_64 already installed and latest version
Package php-pdo-7.4.0-3.amzn2.1.x86_64 already installed and latest version
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]

$ which php
/usr/bin/php

$ php -v
PHP 7.4.0 (cli) (built: Dec 13 2017 00:38:30) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

#enable 目的のトピックを有効化

レポジトリに追加して有効化するだけでインストールしない時もあるでしょう。その時はenable使います。

有効化したトピックは/etc/yum.repos.d/amzn2-extras.repoファイルが追加・更新されます。

$ sudo amazon-linux-extras  enable php7.4
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]
Now you can install:
 # yum install php-cli php-pdo php-fpm php-json php-mysqlnd

#disable トピック無効化

$ sudo amazon-linux-extras disable php7.4
Beware that disabling topics is not supported after they are installed.
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]

$ php -v
PHP 7.4.9 (cli) (built: Aug 21 2020 00:38:30) ( NTS )php
Copyright (c) The PHP Group

#トピックをアンインストール

amazon-linux-extras はremoveコマンドがありません
自己責任で要らなくなったパッケージを削除してねってことですね。確かに依存性わからなくて、取り敢えずアンインストしようとパッケージ削除したらエラー出る時あります。だからですね。

削除する時はsudo yum removeでどうぞ

sudo yum remove $(yum list installed | grep amzn2extra-topic | awk '{ print $1 }')

#amazon-linux-extras 深堀

amazon-linux-extras はどうやって動いてるだろうの時にソースが/usr/lib/python2.7/site-packages/amazon_linux_extras/cli.pyにあります。

#参考

Extras library (Amazon Linux 2)(opens new window)
Amazon Linux 2 の Extras Library(amazon-linux-extras)を使ってみた(opens new window)

2020-10-29
  • server
  • aws