Ubuntu 22.04 環境構築 (Rails+Node)

## 環境

- Ubuntu Desktop 22.04 LTS
  - 日本語Remix ではない
- VMware Workstation 16 Player
  - ディスクサイズ、プロセッサ数、メモリ等はお好みで

## Ubuntu のインストール

- Keyboard layout は環境にあったものを選択
  - 自分の環境では `Japanese (PC-98)` または `Japanese (OADG 109A)` が良さそうでした。

## お約束

```bash
sudo apt update
sudo apt upgrade
```

## IME（日本語入力）

https://novicengineering.com/ubuntu_mozc_install/

```bash
sudo apt install ibus-mozc
ibus restart
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'jp'), ('ibus', 'mozc-jp')]"
```

反映されないのでここで Ubuntu を再起動

## VMWare Tools

https://linuxconfig.org/install-vmware-tools-on-ubuntu-22-04-jammy-jellyfish-linux

```bash
sudo apt install open-vm-tools-desktop open-vm-tools
```

ゲストホスト間でテキストのコピー・ペーストが出来ることを確認。（ファイル転送はホスト(Windows)→ゲスト(Ubuntu)でエラーになってしまったがSMBで代用できるので一旦保留）

## 日付と時刻の設定

タイムゾーンが Japan, Tokyo になっていることを確認しておく
（設定を忘れると後々面倒なため）

## Google Chrome
ブラウザから.deb形式でダウンロードしてインストール

## vim

```bash
sudo apt install vim
```

vimrc はお好みで。

```~/.vimrc
scriptencoding utf-8
set encoding=utf-8

filetype plugin indent on
:set tabstop=2
:set shiftwidth=2
:set expandtab

cnoremap w!! w !sudo tee > /dev/null %<CR> :e!<CR>

set list
set listchars=tab:»-,trail:-,extends:»,precedes:«,nbsp:%
```

参考記事：

https://qiita.com/yuu_ta/items/30c69798b00560de3b06

https://qiita.com/pollenjp/items/459a08a2cc59485fa08b

## bash

```~/.bashrc
HISTSIZE=20000
HISTFILESIZE=20000
alias be='bundle exec'
```

```bash
source ~/.bashrc
```

## curl

```bash
sudo apt install curl
```

## ifconfig

`ip a` で事足りますが一応入れました

```bash
sudo apt install net-tools
```

## locate

```bash
sudo apt install plocate
```

## git

```bash
sudo apt install git
sudo apt install tig
git config --global user.email "YOURMAIL@YOURDOMAIN"
git config --global user.name "YOURNAME"
git config --global core.editor "$(which vim)"
```

## ssh

```~/.ssh/config
Host http://github.com
  HostName http://github.com
  User git
  IdentityFile "/home/YOUR_USERNAME/.ssh/id_rsa"

Host MY_SERVER
  HostName 999.999.999.999
  User YOUR_USERNAME
  Port 99999999
  IdentityFile "/home/YOUR_USERNAME/.ssh/id_rsa"
```

秘密鍵 `~/.ssh/id_rsa` （と公開鍵 `~/.ssh/id_rsa.pub` ）を用意する。なければ新規作成。

秘密鍵のパーミッションを適当に設定します。

```bash
chmod 600 ~/.ssh/id_rsa
```

## ruby (rbenv, bundler)

```bash
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv -v
 
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt install -y build-essential libssl-dev zlib1g-dev
rbenv install --list
rbenv install 3.1.2
rbenv global 3.1.2
ruby -v
```

```bash
gem update
gem install bundler
bundle -v
```

### 備考
~~Ubuntu22.04 では Ruby3.0 以下は通常の方法ではインストールできないそうです。~~

https://www.hsbt.org/diary/20220512.html

~~近いうちに何らかの対応がされると良いのですが、一旦、OpenSSL1.1 をビルドして --with-openssl-dir でパス指定して対応する方法を載せておきます。~~

解決されたようです。

https://twitter.com/__gfx__/status/1546306294113800192

```bash
mkdir -p ~/projects
cd ~/projects/
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1n.tar.gz
tar -zxf openssl-1.1.1n.tar.gz
cd openssl-1.1.1n/
./config 
make
make install
/usr/local/bin/openssl version
# -> OpenSSL 1.1.1n  15 Mar 2022

RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/bin/" rbenv install 3.0.3

ruby -v
# => ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]
```

## RMagick

```bash
sudo apt install libmagickcore-dev
```

## mysql

```bash
sudo apt install -y libmysqlclient-dev
sudo apt install mysql-server
```

パスワードなしで mysql にログイン出来るようにするため、 `/etc/mysql/my.cnf` の末尾に以下を追記

```/etc/mysql/my.cnf
[mysqld]
skip-grant-tables
```

```bash
sudo systemctl restart mysql
mysql -u root
```

## node (nodenv + yarn)

```bash
git clone https://github.com/nodenv/nodenv.git ~/.nodenv
echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(nodenv init -)"' >> ~/.bashrc
source ~/.bashrc
nodenv -v
```

nodenv-yarn-install を導入して、 nodenv install コマンドの実行と同時に yarn もインストールします。

```bash
git clone https://github.com/nodenv/node-build.git $(nodenv root)/plugins/node-build
git clone https://github.com/pine/nodenv-yarn-install.git "$(nodenv root)/plugins/nodenv-yarn-install"
nodenv install --list
nodenv install 16.15.0
nodenv global 16.15.0
curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
nodenv versions
nodenv version
yarn -v
```

## java

```bash
sudo apt install openjdk-17-jdk
java --version
```

## Python3

```bash
python3 --version
sudo apt install python3-pip
pip3 install numpy
pip3 install scipy
```

## pyonpyon

かわいい。

```bash
mkdir -p ~/projects
cd ~/projects/
git clone https://github.com/sgymtic/sl.git pyonpyon
cd pyonpyon/
git checkout pyonpyon
make
./pyonpyon
sudo cp pyonpyon /usr/local/bin
echo 'alias sl="pyonpyon"' >> ~/.bashrc
source ~/.bashrc
sl
```