AWS EC2の初期環境構築:Emacs, zsh, Python3(Miniconda)


TL; DR

まっさらなEC2インスタンスにログインして作業環境を構築した際のメモ

  • emacs-noxをリポジトリから導入
  • zshをリポジトリから導入
    • /etc/passwdを編集しシェルを変更
  • /etc/locale.confを編集し文字化けを解消
    • .zshrcを編集し変更を適用
  • Miniconda3をインストーラから導入
    • /path/to/conda init zshを実行

はじめに

本記事ではAmazon Linux 2を使っているが,Ubuntu Serverを使う場合もあるため,以下に注意する.

  • Amazon Linux 2のデフォルトユーザ名はec2-userになる.Ubuntu Serverではubuntuになる.

  • Amazon Linux 2はRedHat系なので,パッケージマネージャにはaptではなくyumを使う.

リポジトリの初期化

$ sudo yum update

Debian系のsudo apt updatesudo apt upgradeに相当する.なお,-yオプションを追加すれば確認をスキップすることができる.

開発ツールのインストール

sudo yum groupinstall "Development Tools"

Debian系のsudo apt install build-essentialに相当する.

インストールされるパッケージはgccやmake,gitなど.1

Emacsのセットアップ

$ sudo yum install emacs-nox

yumを使ってインストールしたら,自分好みの.emacs.dを用意する.

use-packageやleafを導入したいけどしてない人は注意(私です)
バイトコンパイルされたパッケージやログファイルなどはそのまま移行すると不具合を起こすので,init.elやリポジトリにないパッケージだけをコピーし,残りをM-x package-list-packagesで用意した方が楽である.そのあと--debug-initでデバッグを行う.

zshのセットアップ

Amazon Linux 2のデフォルト環境では,chshが使えないため少し面倒.

インストール

$ sudo yum install zsh

デフォルトのシェルをzshに

方法は2通りある.

  • util-linux-userをインストールしてchshを使う方法 2

  • /etc/passwdを直接編集する方法3

今回は/etc/passwdを直接編集する方法を取った.

/etc/passwdの編集

まず,該当するファイルを開く.

$ sudo emacs /etc/passwd
/etc/passwd
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash

以下のようにして末尾のみ編集する.
※ユーザ名などは適宜読み替えること

/etc/passwd
#ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/zsh

変更の適用

/etc/passwdを編集する方法は,編集内容を間違えた場合にログインできなくなる可能性があるため,変更を行ったら別の端末を開いてログインすることを推奨する.

別の端末で$ ssh -i [ダウンロードしたキー] ec2-user@[アドレス]を実行し,新たにログインを行う.

zshの初期設定

新しい端末でログインに成功し,zshに切り替わっていれば,おそらくzshの初期設定を促す画面に到達する.

私は以下のように設定した.

  • (1) Continue to the menuを選択
  • (2) Use the new completion system.を実行
    • (1) Turn on completion with the default options.を実行,メニューに戻る
  • (0) Exit, saving the new settings. They will take effect immediately.を実行して設定を完了

設定が終われば,通常の画面に戻る.上の画面で設定した内容が反映された.zshrcなどが作成されていることが確認できる.

あとは.zshrcを加えて編集するなどして,zshを自由にカスタマイズする.

日本語の文字化けを解消

デフォルトでは,ログインしてyum install hogeなどと実行すると,日本語が????のように文字化けしてしまう.これを直すには,以下の操作が必要である.4

/etc/locale.confの編集

$ sudo emacs /etc/locale.conf
/etc/locale.conf
LANG=en_US.UTF-8

以下のようにして編集する.

/etc/locale.conf
#LANG=en_US.UTF-8
LANG=ja_JP.UTF-8
LC_CTYPE=ja_JP.UTF-8

ロケール設定の有効化

$ emacs .zshrc

.zshrcに以下の行を追加する.

zshrc
source /etc/locale.conf

これで次のログインから文字化けが解消される.

Python (Miniconda3)のインストール

condaを使った環境に慣れているため,大きな容量を必要としないMinicondaをインストールした.以下の方法で導入できる.5

インストーラの入手

以下の公式サイトからインストーラのURLを取得する.

Miniconda - Conda documentation

URLをコピーしたら,インスタンス上で目的のインストーラを取得する.

$ wget [コピーした最新のインストーラのURL]

Minicondaのインストール

$ zsh Miniconda3-latest-Linux-x86_64.sh

インストーラを実行する.
※ファイル名は適宜読み替えること

Welcome to Miniconda3 4.8.2

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>

以上のような画面に移り変わるため,まずは指示通りにENTERを入力する.

ソフトウェア利用許諾契約が表示されるので,lessと同じようにしてqで終了する.

[省略]

Last updated February 25, 2020


Do you accept the license terms? [yes|no]
[no] >>>

以上のように同意するかを尋ねられるので,yesと答える.

Miniconda3 will now be installed into this location:
/home/ec2-user/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/ec2-user/miniconda3] >>>

続けて以上のようにインストールする場所を尋ねられるので,/home/ec2-user/miniconda3で良い場合はENTERを入力する.

Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>>

さらに初期化の有無を尋ねられるが,ここでの初期化はbashにしか反映されないため,noと答える.

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:

eval "$(/home/ec2-user/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)"

To install conda's shell functions for easier access, first activate, then:

conda init

If you'd prefer that conda's base environment not be activated on startup,
   set the auto_activate_base parameter to false:

conda config --set auto_activate_base false

Thank you for installing Miniconda3!

以上のようにしてインストールが完了する.しかし,加えて初期化を行う必要がある.

$ /home/ec2-user/miniconda3/bin/conda init zsh

以上のように対象をzshに指定して初期化を行うと,以下のようなメッセージが表示される.

no change     /home/ec2-user/miniconda3/condabin/conda
no change     /home/ec2-user/miniconda3/bin/conda
no change     /home/ec2-user/miniconda3/bin/conda-env
no change     /home/ec2-user/miniconda3/bin/activate
no change     /home/ec2-user/miniconda3/bin/deactivate
no change     /home/ec2-user/miniconda3/etc/profile.d/conda.sh
no change     /home/ec2-user/miniconda3/etc/fish/conf.d/conda.fish
no change     /home/ec2-user/miniconda3/shell/condabin/Conda.psm1
no change     /home/ec2-user/miniconda3/shell/condabin/conda-hook.ps1
no change     /home/ec2-user/miniconda3/lib/python3.7/site-packages/xontrib/conda.xsh
no change     /home/ec2-user/miniconda3/etc/profile.d/conda.csh
modified      /home/ec2-user/.zshrc

==> For changes to take effect, close and re-open your current shell. <==

再度ログインし直すことで,condaの各種コマンドが使用可能になる.