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環境はCrostiniとも呼ばれるので、本記事ではCrostiniの名称を使っていきます。
次にgitを使えるようにしておきます。
今回の作業中、gitを多用するので必須です。
ついでにリポジトリのアップデート、ライブラリのアップグレードもしておきました。
sudo apt update
sudo apt upgrade
sudo apt install git
Alacrittyのインストールとセットアップ
AlacrittyのLinux系へのインストール方法は以下で説明されています。
上記リンク先に記載のコマンドを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をインストールします。
こちらは以下に記載してあるコマンドのコピペで完了しました。
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
~/.zshrcのpluginセクションを以下のように書き換えます。
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)もほぼ同じなのでまとめて次回の記事にします。