概要
elixirを始めるにあたって、依存するアプリケーションやerlang
のインストール、erlenv
とexenv
を用いたバージョン管理をするのが大変そうだと思ったので対話形式のスクリプトを作ってみました
環境
- macOS
- brewはインストール済み
- anyenvを使うのでない人はスクリプト内で入れる
スクリプト
#!/bin/bash# brewで必要なファイルを入れるTARGETS=(
openssl@1.1
unixodbc
wxmac
fop
)echo"Install dependencies. If you don't have applications, enter 'y' key."for target in${TARGETS[@]}do
echo""read-p"Do you want install ${target}? (y/n): " check
if[$check="y"];then
brew install$targetif[$target="openssl@1.1"];then
export PATH="$PATH:/usr/local/opt/openssl@1.1/bin"echo'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"'>>$HOME/.zshrc # zshfi
fi
done# anyenvいれるif!(type"anyenv"> /dev/null 2>&1);then
echo-e"\nanyenv is installing..."
git clone https://github.com/anyenv/anyenv $HOME/.anyenv
$HOME/.anyenv/bin/anyenv init
export PATH="$PATH:$HOME/./anyenv/bin"
anyenv install--initelse
echo-e"\nanyenv is already setuped."fi# erlenv, exenvいれるarr=(erlenv exenv)for lang in${arr[@]}do
if!(type"$lang"> /dev/null 2>&1);then
echo-e"\n${lang} is installing..."
anyenv install$langexport PATH="$PATH:$HOME/./anyenv/envs/${lang}/bin"else
echo-e"\n${lang} is already setuped."fi
done# erlangインストールecho""read-p"Enter erlang version (version or n [ex: 23.1]): " erlang_version
if[$erlang_version!="n"];then
echo-p"\nDownload from here: http://www.erlang.org/download/otp_src_${erlang_version}.tar.gz"
curl -OL http://erlang.org/download/otp_src_${erlang_version}.tar.gz > otp_src_${erlang_version}.tar.gz
# 解凍, インストールtar zxf otp_src_${erlang_version}.tar.gz
cd otp_src_${erlang_version}
./configure \--prefix=$HOME/.anyenv/envs/erlenv/releases/$erlang_version\--enable-dynamic-ssl-lib\--with-ssl=/usr/local/opt/openssl@1.1 \--enable-smp-support\--enable-threads\--enable-darwin-64bit\--enable-kernel-poll\--enable-hipe\--without-javac\--enable-dirty-schedulers\--enable-sharing-preserving\--enable-lock-counter\--disable-sctp\--without-obdc
make -j 4
make install# global設定
erlenv global ${erlang_version}
erlenv rehash
# 不要なファイル削除echo""read-p"remove erlang file? (y/n): " remove_erlang
if[$remove_erlang="y"];then
cd ..
rm-rf otp_src_${erlang_version} otp_src_${erlang_version}.tar.gz
fi
fi# elixerインストールecho""
exenv install--listecho""read-p"Choose elixir version (version or n [ex: 1.10.0]): " elixir_version
if[$elixir_version!="n"];then
exenv install${elixir_version}# global設定
exenv global ${elixir_version}fi
configure
のオプションはあまりわからないのでコチラの記事を参考にさせていただきました