Chromebook (Crostini) CLI開発環境のセットアップ

Chromebook (Crostini) CLI開発環境のセットアップ
目次

前回の記事に引き続き、今度はChromebookに CLI開発環境としてAlacritty + Zsh + oh-my-zsh + Neovim の環境をセットアップする手順をまとめました。

なぜそのようなことをしているのかは前回の記事に書いたので、 本記事は本題の環境構築手順をメインに書いていきます。

今回用いたChromebookについて

私が持っているChromebookはこちらです。
作業用サブPC兼読書デバイスとして購入しました。

このChromebookはキーボード着脱式のため、 キーボードを外せば手軽に持ち出せるタブレット端末として扱えます。
この形態は読書にピッタリで、電車の中やカフェなどで本を読むのに便利です。
AmazonのKindleも楽天Koboもアプリとして利用できるのが個人的にはポイント。

加えて、本記事で解説するように本格的なLinux環境も簡単にセットアップでき、 プログラミングもこなせます。
Chromebookはサブ機としてとても優秀なマシンだと思います。

ということで、以降ではChromebook開発環境のセットアップについて解説していきます。

Crostiniの有効化と依存ライブラリのインストール

ChromebookでLinux環境を使う設定は、単に設定から有効化のボタンを押すだけです。
詳細な方法はChromebookのヘルプページを参照してください。

ChromebookでLinuxをセットアップする

ちなみにChromebook上のLinux環境はCrostiniとも呼ばれるので、本記事ではCrostiniの名称を使っていきます。

次にgitを使えるようにしておきます。
今回の作業中、gitを多用するので必須です。 ついでにリポジトリのアップデート、ライブラリのアップグレードもしておきました。

sudo apt update
sudo apt upgrade
sudo apt install git

Alacrittyのインストールとセットアップ

AlacrittyのLinux系へのインストール方法は以下で説明されています。

alacritty / INSALL.md

上記リンク先に記載のコマンドをCrostiniで実行してAlacrittyをインストールします。

前回のWindowsと異なり、Linux版はRustのパッケージマネージャであるCargoを通してインストールします。
そのため、単にインストールするだけではコマンドラインから起動するしかなく、 デスクトップから起動できなくなってしまいます。
そこで、上記リンク先の Manual Installation の項目を順に実施し、 最終的にChromebookのデスクトップ(というかLauncher)から起動できるようにします。

まずはAlacrittyのリポジトリをクローンします。

git clone https://github.com/alacritty/alacritty.git
cd alacritty

次にRustとCargoをインストールします。
インストール方法は下記に記載されています。

The Rust Programming Language日本語版 インストール

記載の通り、以下のコマンドを実行します。

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

多少時間がかかります。
Rust is installed now, Great! という表示が出たらOKです。
一度Crostiniを閉じて再起動し、Cargoが使えることを確認します。

cargo --version
cargo 1.98.0 ... # <-バージョン番号が表示されればOK

以下2つのコマンドを実行します。

rustup override set stable
rustup update stable

次にAlacrittyをビルドするための依存ライブラリをCrostiniにインストールします。
CrostiniはDebianベースなので、

apt install cmake g++ pkg-config libfontconfig1-dev libxcb-xfixes0-dev libxkbcommon-dev python3

を実行します。インストールが完了したらAlacrittyのビルドです。

cargo build --release

こちらもしばらく時間がかかります。
ビルドが終わったらAlacrittyをデスクトップから使えるようにするための設定です。
ここで少しマニュアルの記載事項と違うことをします。

カレントディレクトリがクローンしたリポジトリの中であることを確認してください。

cd <alacrittyリポジトリへのパス>

リポジトリの中の extra/linux/Alacritty.desktop ファイルを以下のように書き換えます。
元ファイルとの差分は、以下の Exec の部分で、 env WAYLAND_DISPLAY= を追記しています。

[Desktop Entry]
Type=Application
TryExec=alacritty
Exec=env WAYLAND_DISPLAY= alacritty
Icon=Alacritty
Terminal=false
Categories=System;TerminalEmulator;

Name=Alacritty
GenericName=Terminal
Comment=A fast, cross-platform, OpenGL terminal emulator
StartupNotify=true
StartupWMClass=Alacritty
Actions=New;

[Desktop Action New]
Name=New Terminal
Exec=alacritty

こうしないと自分の環境ではAlacritty画面右上の画面最小化、最大化、閉じるボタンが使えませんでした。
以降はマニュアル通りにコマンドを実行していきます。

sudo cp target/release/alacritty /usr/local/bin
sudo cp extra/logo/alacritty-term.svg /usr/share/pixmaps/Alacritty.svg
sudo desktop-file-install extra/linux/Alacritty.desktop
sudo update-desktop-database

これでChromebookのLauncherからAlacrityを実行することが出来るようになりました。

zshとoh-my-zshのインストール

zshはaptでインストールしました。
ただ、 .zshrc などの設定ファイルが無い場合、zshを起動するとエラーが出てしまいます。
zshをインストールする直前に.zshrcを空ファイルとして作っておいた方が良さそうです。
(どうせ後でoh-my-zshに内容書き換えられます。)

touch ~/.zshrc
suto apt install zsh

zshをデフォルトシェルにします。

sudo chsh -s /usr/bin/zsh ${USER}

ターミナルを閉じて再起動するとzshが起動しているはずです。
次にoh-my-zshをインストールします。
こちらは以下に記載してあるコマンドのコピペで完了しました。

oh-my-zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

ここまででzshのセットアップは基本完了ですが、 Windowsと環境を同じにするために以下2つの拡張機能をoh-my-zshを通してインストールします。

インストール方法は以下です。

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

~/.zshrcpluginセクションを以下のように書き換えます。

plugins = (
  git
  zsh-autosuggestions
  zsh-syntax-highlighting
)

これでzshの環境構築も一段落です。

Neovimとlazy.nvimのインストール

Neovimとlazy.nvimのインストール方法はそれぞれ以下で説明されています。

まずはNeovimからです。Windowsの時と同様、AppImageを使ってインストールします。
私の環境はARMのCPUなので、arm64版とすることに注意します。

curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-arm64.appimage
chmod u+x nvim-linux-arm64.appimage

# 動作確認
./nvim-linux-arm64.appimage

上記でNeovimが起動すればOKです。
適当な場所にAppImageを移動してパスを通しておきます。

mkdir ~/opt/nvim
mv nvim-linux-arm64.appimage  ~/opt/nvim/nvim

~/.zshrcに以下を追記します。

export PATH="$PATH:$HOME/opt/nvim/"

これでNeovimのインストールは完了です。
続いてlazy.nvimをインストールします。 内容は前回のWindowsの時と全く同じなので、作成するファイル名とその内容のみ記載します。

~/.config/nvim/lua/config/lazy.lua

require("config.lazy")

~/.confing/nvim/lua/config/lazy.lua

-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  local lazyrepo = "https://github.com/folke/lazy.nvim.git"
  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
  if vim.v.shell_error ~= 0 then

    vim.api.nvim_echo({
      { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
      { out, "WarningMsg" },
      { "\nPress any key to exit..." },
    }, true, {})
    vim.fn.getchar()
    os.exit(1)
  end
end
vim.opt.rtp:prepend(lazypath)


-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
  spec = {
    -- import your plugins
    { import = "plugins" },
  },
  -- Configure any other settings here. See the documentation for more details.
  -- colorscheme that will be used when installing plugins.
  install = { colorscheme = { "habamax" } },
  -- automatically check for plugin updates
  checker = { enabled = true },
})

lualine.nvimの追加。
~/.config/nvim/lua/plugins/lualine.lua

return {
  'nvim-lualine/lualine.nvim',
  dependencies = { 'nvim-tree/nvim-web-devicons' },
  opts = {},
}

これでChromebookにもCLI開発環境が整いました。
これからはNeovimでPython開発環境を構築していくことになりますが、 手順はWindows (WSL)もChromebook (Crostini)もほぼ同じなのでまとめて次回の記事にします。