サイトアイコン 協栄情報ブログ

Amazon Linux 2でPython2削除について

Amazon Linux 2でPython2削除について

はじめに

先日、調査用のAmazon Linux 2 EC2インスタンスでPython環境を整理していたとき、「Python2ってまだ必要なのかな?」と疑問に思いました。セキュリティ面を考えると古いバージョンは削除したいところですが、いきなり削除してシステムが壊れるのは避けたいので、まずは影響範囲を調べることにしました。

調査方法

Python2に明示的に依存しているスクリプトがあるかどうか確認するため、以下のコマンドで検索してみました。

まず、念のためPython2がどこにインストールされているか確認しました。

which python2

実行結果:

/usr/bin/python2

Python2が/usr/bin/python2に存在することを確認できたので、次にこのパスを明示的に指定しているスクリプトを探しました。

grep -r "/usr/bin/python2" /etc /usr /opt 2>/dev/null

このコマンドの詳細な意味は以下の通りです。

コマンドの構成要素

grep
テキスト検索コマンド。ファイル内の文字列を検索します。

-r(recursive)
指定したディレクトリ内のすべてのファイルを再帰的に検索します。サブディレクトリも含めて、階層構造をたどって検索対象とします。

"/usr/bin/python2"
検索対象の文字列。シェルスクリプトの先頭行(shebang行)で#!/usr/bin/python2と書かれているファイルを探すためです。

/etc /usr /opt
検索対象のディレクトリ。それぞれの意味は以下の通りです:

2>/dev/null
標準エラー出力(stderr)を/dev/nullにリダイレクトします。これにより、権限がないディレクトリへのアクセスエラーなどが画面に表示されなくなります。

実行される処理

このコマンドを実行すると、/etc/usr/optの各ディレクトリ以下のすべてのファイルを対象に、/usr/bin/python2という文字列を含む行を検索します。主にPython2インタープリターを明示的に指定しているスクリプトファイルを発見することが目的です。

予想外の発見

実行結果を見て驚きました。

/usr/bin/cloud-init
/usr/bin/cloud-init-per
/usr/libexec/cloud-init/ds-identify
/usr/bin/cloud-config
/usr/bin/cloud-schema

cloud-init関連のスクリプトがずらっと出てきたんです。他にもpyrsa系のスクリプトなど、いくつかのシステムユーティリティがPython2を使っていることがわかりました。

cloud-initの重要性

cloud-initがどんな処理をしているか改めて確認してみると、EC2インスタンスの初期化には欠かせない機能ばかりでした。

これらの処理がすべてPython2に依存しているとなると、Python2を削除するわけにはいきません。

Amazon Linux 2の事情

調べてみると、Amazon Linux 2には固有の事情がありました。

まず、yumパッケージマネージャー自体がPython 2.7に依存しています。これはパッケージ管理の根幹部分なので、削除すると大変なことになりそうです。

また、AWSはAmazon Linux 2のコアパッケージの一部として、Python 2.7を2025年6月まで長期サポートすると公表しています。上流のPythonコミュニティが2020年1月にサポート終了を宣言した後も、AWSが独自にサポートを継続している形です。

まとめ

今回の調査で、システムの依存関係は表面的に見えるより複雑だということを改めて実感しました。特にcloud-initのような基盤部分の重要性を軽視していたかもしれません。

何かを削除する前の事前調査の大切さを身をもって体験した次第です。同じような環境で作業されている方の参考になれば幸いです。

参考情報

Amazon Linux 2023について

根本的な解決策として、Amazon Linux 2023への移行が挙げられます。Amazon Linux 2023では以下の改善がされています。

ただし、移行には既存アプリケーションの互換性確認など、慎重な準備が必要です。

まとめ

今回の調査で、システムの依存関係は表面的に見えるより複雑だということを改めて実感しました。特にcloud-initのような基盤部分の重要性を軽視していたかもしれません。

何かを削除する前の事前調査の大切さを身をもって体験した次第です。同じような環境で作業されている方の参考になれば幸いです。

参考

モバイルバージョンを終了