MacbookProにElementaryOS(Loki)をいれたときの記録


2014年モデルのMacbookPro RetinaにUbuntu系のElmentaryOSを入れたときのログです。

この内容と関係aにけど、友人と酒飲みながら片手間でよく確認せずにインストーラー触ってたら、もともと入ってたmacOSはすべて消えてました。

#設定の退避

普段、Dotfilesは`XDG_CONFIG_HOME=~/.config`に固めるようにしてるので、このディレクトリだけ先に圧縮して退避してから作業をはじめました。

ちなみに、公開できない情報を含むのでXDG_CONFIG_HOMEをGitHubで管理してない。

#ElmentaryOSのインストール

USBに焼いたインストーラーからGUIをポチポチしてインストールを完了する。

最初の起動が完了したらOSのバージョンだけ見ておく。

```sh:ターミナル
cat /etc/lsb-release
> DISTRIB_ID="elementary"
> DISTRIB_RELEASE=0.4
> DISTRIB_CODENAME=loki
> DISTRIB_DESCRIPTION="elementary OS 0.4 Loki"
```

ElementaryOSとベースのUbuntuのバージョンは下記の対応になっているようだ。

| バージョン | コードネーム | リリース日 | ベース |
| --- | --- | --- | --- |
| 0.1 | Jupiter | 2011年3月31日 | Ubuntu 10.10 |
| 0.2 | Luna | 2013年8月10日 | Ubuntu 12.04 LTS |
| 0.3 | Freya | 2015年8月11日 | Ubuntu 14.04 LTS |
| 0.3.1 | Freya | 2015年9月3日 | Ubuntu 14.04 LTS |
| 0.3.2 | Freya | 2015年12月9日 | Ubuntu 14.04 LTS |
| 0.4 | Loki | 2016年9月9日 | Ubuntu 16.04 LTS |

#aptの更新

いろいろとツールのインストールし始める前に、aptを更新して、とりあえず再起動する

```sh:ターミナル
sudo apt-get update
sudo apt-get upgrade
reboot
```

#aptに非公式リポジトリを追加できるようにする

`apt-get add-apt-repository`を使えるようにします。

```sh:ターミナル
sudo apt-get install software-properties-common
```

#AppCenter

デスクトップ左上のアプリケーションからAppCenterを起動します。いろいろアプリケーションが配信されていたりインストール済みアプリケーションの更新ができます。

自分はElementaryOSの更新をしてから、パッケージアップデーターを入れました。

#ログインシェルの変更

zshを使ってるのでインストールします。

```sh:ターミナル
sudo apt-get install zsh
```

ログインシェルに反映します。

```sh:ターミナル
chsh
> kaizoa のログインシェルを変更中
> 新しい値を入力してください。標準設定値を使うならリターンを押してください
>        ログインシェル [/bin/bash]: /bin/zsh
```

#XDG_CONFIG_HOME（個人設定）を復元する

退避してたXDG_CONFIG_HOMEを落としてきて復元しました。

```sh:ターミナル
tar zxvf ~/Downloads/config.tar.gz
ln -fns ~/.config/zsh/zshenv ~/.zshenv
ln -fns ~/.config/ssh ~/.ssh
ln -fns ~/.config/git/config ~/.gitconfig
```

あとよく使うツールもついでにここで入れます。

```sh:ターミナル
sudo apt-get install \
  apt-transport-https \
  ca-certificates \
  curl git tmux direnv jq awscli tig ranger
```

#ファンクションキーの入れ替え

Macbook Pro の F1〜12 のファンクションキーがデフォルトだとFnキーと組み合わせないと押せないので、キーコンビネーションなしで認識されるようにします。

```sh:ターミナル
sudo sh -c 'echo options hid-apple fnmode=2 >| /etc/modprobe.d/hid-apple.conf'
sudo update-initramfs -u
```

#スクラッチパッドの設定

```sh:ターミナル
sudo mkdir -m 755 /etc/X11/xorg.conf.d
sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
sudo chmod 644 /etc/X11/xorg.conf.d/50-synaptics.conf
sudo vi /etc/X11/xorg.conf.d/50-synaptics.conf
```

```txt:vi
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Option "PalmDetect"            "0"
        Option "PalmMinWidth"          "10"
        Option "PalmMinZ"              "200"
        Option "TapButton2"            "3" # two-finger tap
        Option "TapButton3"            "0" # three-finger tap
        Option "VertScrollDelta"       "-110"
        Option "HorizScrollDelta"      "-90"
        Option "HorizTwoFingerScroll"  "1"
        Option "FingerLow"             "10"
        Option "FingerHigh"            "85"
        Option "FingerPress"           "255"
        Option "MinSpeed"              "0.8"
        Option "MaxSpeed"              "1.2"
        Option "AccelFactor"           "0.012"
        Option "MaxTapTime"            "220"
        Option "MaxDoubleTapTime"      "180"
        Option "MaxTapMove"            "100"
        Option "HorizHysteresis"       "75"
        Option "VertHysteresis"        "75"
        Option "AreaLeftEdge"          "-4720" # x-min: 4750
        Option "AreaRightEdge"         "4300" # x-max: 5280
        Option "SHMConfig"             "on"
        Option "VertResolution"        "70"
        Option "HorizResolution"       "45"
EndSection
```

#日本語入力 - fcitx-mozc

```sh:ターミナル
sudo apt-get install fcitx-mozc
```

念の為、im-configで設定ダイアログから、fcitxを有効にして再ログインします。

```sh:ターミナル
im-config
```

ログインしたら、fcitx-configtoolで設定ダイアログを表示して、

- Input Methodにmozcを追加
- 切り替えのキーコンビネーションを設定

```sh:ターミナル
fcitx-configtool
```

デスクトップ上部のwingpanelに表示されるmozcアイコンは、バーと高さがあってないので24x24にGimpでリサイズしました。

（GimpはAppCenterから入れると楽）

```sh:ターミナル
sudo gimp /usr/share/fcitx/mozc/icon/mozc.png
```

#elementary-tweaks

システム設定からPantheonの見た目を変えられる、elementary-tweaksを入れます。

リポジトリはOSのバージョンに合わせたものを選ぶ必要があります。例はLokiに対応したリポジトリです。

```sh:ターミナル
sudo add-apt-repository ppa:philip.scott/elementary-tweaks
sudo apt-get update
sudo apt-get install elementary-tweaks
```

インストールするとシステム設定にtweaksのアイコンが表示されます。

わたしはアニメーションをOffにして、デスクトップのテーマを暗いやつにしました。

#ブラウザのインストール - Chrome

```sh:ターミナル
cd ~/Downloads
sudo dpkg -i google-chrome-stable_current_amd64.deb
```

#エディタのインストール - NeoVim

NeoVim

```sh:ターミナル
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt-get update
sudo apt-get install neovim
sudo apt-get install python-dev python-pip python3-dev python3-pip
```

NeoVimをシステム標準のエディタにします。

```sh:ターミナル
sudo update-alternatives --install /usr/bin/vi vi /usr/bin/nvim 60
sudo update-alternatives --config vi
sudo update-alternatives --install /usr/bin/vim vim /usr/bin/nvim 60
sudo update-alternatives --config vim
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/nvim 60
sudo update-alternatives --config editor
```

#プログラミングフォント

[mzyy94/RictyDiminished-for-Powerline](https://github.com/mzyy94/RictyDiminished-for-Powerline)をダウンロードします。

```sh:ターミナル
cd ~/Downloads
unzip RictyDiminished-for-Powerline-master.zip
cd RictyDiminished-for-Powerline-master
mkdir ~/.fonts
cp RictyDiminishedDiscord-Regular-Powerline.ttf RictyDiminishedDiscord-Regular.ttf RictyDiminished-Regular-Powerline.ttf RictyDiminished-Regular.ttf ~/.fonts
fc-cache -vf
```

#Goのビルド環境

anyenv+goenvで最新バージョンを追えるようにしときます。

```sh:ターミナル
git clone https://github.com/riywo/anyenv ~/.anyenv
```

```zshrc:zshrcに追記する
export ANY_ENV_HOME=$HOME/.anyenv'
export PATH=$PATH:$ANY_ENV_HOME/bin; eval "$(anyenv init -)"
```

zshrcをsourceするかzshに再ログインします。

```sh:ターミナル
mkdir -p $ANY_ENV_HOME/plugins
git clone https://github.com/znz/anyenv-update.git $ANY_ENV_HOME/plugins/anyenv-update
git clone https://github.com/znz/anyenv-git.git $ANY_ENV_HOME/plugins/anyenv-git
anyenv update
```

goenvとgoをインストール

```sh:ターミナル
anyenv install goenv
goenv install 1.8.1
goenv global 1.8.1
goenv rehash
go version
> go version go1.8.1 linux/amd64
```

#Docker

最新のce-edgeを[Docker公式の方法](https://docs.docker.com/engine/installation/linux/ubuntu/#install-docker)を参考にインストールします。

```sh:ターミナル
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge"
sudo apt-get update
sudo apt-get install docker-ce
```

通常add-apt-repositoryの行の`xenial`のところは`lsb_release -cs`の結果をディストリビューションのIDとして指定しますが、ElementaryOSの場合、それだと`loki`になってしまってパッケージがないため手打ちでベースのディストリである`xenial`を指定しています。

また、`edge`と指定しているところを`stable`にすればチャンネルを変えることができます。

docker-composeもインストールします。

```sh:ターミナル
VER="1.12.0"
sudo sh -c "curl -L https://github.com/docker/compose/releases/download/$VER/docker-compose-`uname -s`-`uname -m` >| /usr/local/bin/docker-compose"
sudo chmod +x /usr/local/bin/docker-compose
```

次にdockerコマンドをsudoなしで起動できるようにます。

```sh:ターミナル
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker
```

再ログインすると反映されます。

#IntellijIDEA

使うのでインストールします。

```sh:ターミナル
cd ~/Downloads #先にダウンロードしておく
tar zxvf ideaIU-2017.1.1.tar.gz
sudo mv idea-IU-171.4073.35 /usr/local
cd /usr/local/idea-IU-171.4073.35
./bin/idea.sh
```

#ターミナル

標準のpantheon-terminalの完成度高いです。

ですが自分はドロップダウン型（quake型とかトップダウン型と呼ばれる）のターミナルが好きなので、xfce4-terminalに`--drop-down`オプションをつけて使用しています。

ドロップダウン型のターミナルには他にGuake、Tildaがあるようです。今後も最適な端末エミュレーターの模索は続きそう。

#諸々の感想

これで久々のLinux作業環境がてにはいりました。

##はまった

IntellijIDEAのインストール後にDeskctop Entryを作成してから、展開したディレクトリの場所を移動したらwingpanelが起動不能になり、最終的にデスクトップマネージャも起動できなくなりました。

きっとDesktop Entryを消せば問題は解決したのだろうけど面倒でOSインストールからやり直しました。

そもそもXを立ち上げないで起動する方法がわからないので近いうちに調べないと・・・

##省電したい

macOSのときより、Chromeの電力消費が気になります。

Chromeがのo電力消費はともかく、powertopというものを使って省電力化できるらしいのでやりたい。

##パッケージ管理とアプリケーションのインストール

ほとんどの場合、`apt-get install`では入れたいアプリケーションが入らない、または入れたいバージョンが入らないのは普通に考えると面倒です。

最新を追っかけたいgoやdockerはapt使いたくないし、webサイトからdebファイルを落としてdpkg使うとかadd-apt-repositoryしないと入らないなど、初心者におすすめできない。けど嫌いじゃないです。

##ドライバーまわりで一切てこづらなかったのは嬉しい

ElmentaryOS自体はMacbookProに普通にインストールしてドライバーまわりの調整を一切せずに使えてるので最高でした。きっとmacOSと相性のいいディストリなんだと思います。

##LinuxでDockerが使えるのが嬉しい

仕事の開発環境はほぼDockerのため、Volume共有まわりのストレスが解消されるのはでかいです。

#参考

https://ja.wikipedia.org/wiki/Elementary_OS

http://netbuffalo.doorblog.jp/archives/5031859.html

なんかいろいろ他にも参考にした気がします