こんにちは、mabuiです。
タイトルの通り、DockerでCentOS7のコンテナを作成して、Linuxbrewをインストールするまでの作業を書いていきます。
Linuxbrewを入れると、homebrewのようにパッケージの依存関係をきにすることなくインストールが実行できるようになるので、Dockerで使い捨ての環境を用意する際にも手順を押さえておくと便利かと思います。
Dockerfile用意
まず最低限のDockerfileを用意していきます。
やること
- ユーザー用意
- Linuxbrewの依存パッケージインストール
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
FROM centos:7 # ユーザー追加 RUN adduser mabui # パスワード設定 RUN echo 'mabui:mabui' |chpasswd # wheelグループ(root権限持ち)に追加 RUN usermod -G wheel mabui # 必要なコマンドインストール RUN yum -y install sudo vim # ユーザー変更 RUN su - mabui # Linuxbrew依存パッケージインストール RUN sudo yum -y groupinstall 'Development Tools' && sudo yum -y install curl git m4 ruby texinfo bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel RUN sudo yum -y install openssl-devel |
パスワード:mabui のmabuiユーザー(名前は任意に変えてください)を作成して、そのユーザーでLinuxbrew依存パッケージのインストールまでやっています。
コンテナのビルド、Linuxbrewインストール
centos7というタグ名でコンテナをビルド。
1 2 |
docker build -t centos7 . |
コンテナ起動してterminalにログインします。
1 2 |
docker run -it centos7 |
ログインしたらmabuiユーザーに切り替えて、
1 2 |
$ su - mabui |
Linuxbrewの公式通りにインストール
1 2 |
$ sh -c "$(echo mabui | sudo -S curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)" |
パスワード聞かれるので、echoで記述してパイプで渡しちゃってます。
インストールもDockerfileに纏めたかったのですが、途中でEnterを押す動作を求められ、そこの自動入力が上手くいかず断念しましたw
expectコマンドを上手く使えばいけそうです。
Linuxの対話がめんどくさい?そんな時こそ自動化だ!-expect編-
DockerfileでExpectスクリプトを使うと複雑になる例
インストール後、コマンドのパスを通します。
1 2 3 4 5 |
$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv) $ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv) $ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile $ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile |
ここまででLinuxbrewが使用できるようになります、お疲れ様でした!
ex) gitのインストール
1 2 |
brew install git |
おまけ:AnacondaでPython3のインストール
1 2 3 4 5 6 7 8 9 |
# pyenvインストール $ brew install pyenv $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l # Python (Anaconda) のインストール $ pyenv install anaconda3-4.0.0 $ pyenv global anaconda3-4.0.0 |