Open14

ArchのIaC化を試みるメモ

rayfiyorayfiyo

日本のミラー有効化

sudo sed -i "1s/^/# Japan\n# Server = ftp:\/\/ftp.jaist.ac.jp\/pub\/Linux\/ArchLinux\/\$repo\/os\/\$arch\nServer = http:\/\/ftp.jaist.ac.jp\/pub\/Linux\/ArchLinux\/\$repo\/os\/\$arch\n/" /etc/pacman.d/mirrorlist
rayfiyorayfiyo

PGP鍵の設定

上から

  • 鍵の初期化
  • 鍵の更新
  • 鍵の更新
  • パッケージの更新
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Syy archlinux-keyring --noconfirm
sudo pacman -Syu --noconfirm
rayfiyorayfiyo

ロケールの設定

sudo sed -i "s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g" /etc/locale.gen
sudo sed -i "s/#ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g" /etc/locale.gen
mkdir ./setupCache
mkdir ./setupCache/glibc
cp  /var/cache/pacman/pkg/glibc-*-x86_64.pkg.tar.zst ./setupCache
tar xvf ./setupCache/glibc-*-x86_64.pkg.tar.zst -C ./setupCache/glibc
sudo cp ./setupCache/glibc/usr/share/i18n/locales/ja_JP /usr/share/i18n/locales/
sudo locale-gen
rayfiyorayfiyo

manコマンド

/etc/pacman.conf で manのエントリーを導入しないようになっている(Dockerイメージ由来かも)ので,それを無効化(コメントアウト)する.
色々インストールするよりも先にしておかないと,マニュアルが自動でインストールされない.

補足(デメリット?)

これは,manのインストールを無効化することで通信容量を削減したり,インストール時間を短縮させる狙いがあり,他の行も似たようなことをしている.
もしかすると,今後,マニュアルや英語以外の言語などのインストールで躓く原因になるかもしれない.
もし,これが原因で他に躓いた経験がある読者がいればコメントで教えて欲しい.

# sed でコメントアウトを変更する場合
sudo sed -i 's/NoExtract  = usr\/share\/man\/\* usr\/share\/info\/\*/#NoExtract  = usr\/share\/man\/\* usr\/share\/info\/\*/' /etc/pacman.conf

そしたら,manコマンドと日本語版をインストールする

sudo pacman -S  --noconfirm  man-db
yay -S --noconfirm man-pages-ja

ロケールの設定(日本語の有効化)

環境変数(?)のLANGLC_ALLを設定[1]する.これは,~/.config/fish/config.fishに以下の2行を追記すれば良い.

~/.config/fish/config.fish
set -gx LANG ja_JP.UTF-8
set -gx LC_ALL en_US.UTF-8

日本語版のマニュアルの指定

Archの場合は/etc/man_db.confに以下を追記する.

/etc/man_db.conf
MANDATORY_MANPATH                       /usr/share/man/ja_JP.UTF-8/
補足:その他のディストリビューション

Debianの場合は,/etc/manpath.configに以下を追記する.

/etc/manpath.config
MANDATORY_MANPATH                       /usr/share/man/ja

他には/etc/man.confなどもあるらしい.(未調査)

MANPATHの無効化

環境変数(?)のMANPATHを削除[1:1]する(空文字を設定する).これは,~/.config/fish/config.fishに次を記述すれば良い.

~/.config/fish/config.fish
set -gx MANPATH ""

(恐らくfishでは)デフォルトで,環境変数(?)のMANPATH/usr/share/manに設定されている.これを無効化することで/etc/man_db.confの設定を適用することができる.
恐らく/etc/man_db.confは日本語化したmanのデータを読み込むパスを含めたいくつかのパスをMANPATHに適用してくれる.

以上3つの環境変数を設定するワンライナー
sed -i 's/# Commands to run in interactive sessions can go here/# Commands to run in interactive sessions can go here\nset -gx LANG ja_JP.UTF-8\n/g' ~/.config/fish/config.fish
脚注
  1. fishのPATHに関してはこちらを参照すると幸せになれる ↩︎ ↩︎

rayfiyorayfiyo

yayインストール

stripバイナリのインストール(?)

sudo pacman -S --noconfirm base-devel

gitのインストール

sudo pacman -S --noconfirm git

本編

git clone https://aur.archlinux.org/yay-bin.git ./setupCache/yay-bin
cd ./setupCache/yay-bin
makepkg -si --noconfirm
rayfiyorayfiyo

neovim のインストール

FUSE2のインストール

AppImageの展開用

sudo pacman -S --noconfirm fuse2

本編

curl -LO https://github.com/neovim/neovim/releases/download/stable/nvim.appimage
chmod u+x nvim.appimage
sudo mv nvim.appimage /usr/bin/nvim
rayfiyorayfiyo

fishの設定

基本、自分の記事にお世話になる

sudo pacman -S --noconfirm fish
sudo pacman -S --noconfirm unzip
yay -S --noconfirm fzf

以下は fish で実行

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

fisher install jorgebucaran/fisher
fisher install edc/bass
fisher install jethrokuan/fzf
fisher install 0rax/fish-bd
fisher install jethrokuan/z

curl -s https://ohmyposh.dev/install.sh | sudo bash -s

~/.config/fish/config.fish

例えば私の場合は以下のように,各自設定する.

~/.config/fish/config.fish
bash -c "cat << EOF > ~/.config/fish/config.fish
if status is-interactive
	# Commands to run in interactive sessions can go here
	oh-my-posh init fish --config "$HOME/raygit/oh-my-posh/fishBased.json" | source
	set -U FZF_LEGACY_KEYBINDINGS 0

	set -gx GPG_TTY $(tty) # WSLのArchのみ?GPG署名付き git commit 用
	set -gx LANG ja_JP.UTF-8 # manとかを日本語化
end
EOF"
rayfiyorayfiyo

色々インストール

言語系

sudo pacman -S --noconfirm python go

ほか

sudo pacman -S --noconfirm axel ffmpeg jq keychain lsof nmap openssh openbsd-netcat pv sl tree wget xsel
yay -S --noconfirm ttf-ricty
yay -S --noconfirm firebase-tools
rayfiyorayfiyo

fishをデフォルトシェルにする

sudo ですると root のシェルが変更されてしまうことに注意

chsh -s /bin/fish

最後にお片付け

rm -rf setupCache/
rayfiyorayfiyo

wsluをインストール

https://wslutiliti.es/wslu/install.htmlを参照

wget https://pkg.wslutiliti.es/public.key
sudo pacman-key --add public.key
sudo pacman-key --lsign-key 2D4C887EB08424F157151C493DD50AA7E055D853
sudo sed -i '$s/$/\n\n[wslutilities]\nServer = https:\/\/pkg.wslutiliti.es\/arch\//g' /etc/pacman.conf
sudo pacman -Sy && sudo  pacman -S wslu

余談

sedの動き

sedでは,以下の2行を行末に追加している.

/etc/pacman.conf
[wslutilities]
Server = https://pkg.wslutiliti.es/arch/

wsluがワンライナーでインストールできない理由

https://www.asobou.co.jp/blog/web/archilinux-on-wsl2
によると、ArchLinuxではポリシー違反でAURから削除されたみたい。

rayfiyorayfiyo

その他開発関係でのインストール

webkit2gtk

sudo pacman -S --noconfirm webkit2gtk

nodejs

sudo pacman -S --noconfirm nodejs npm
sudo npm install -g n
rayfiyorayfiyo

flutterインストール

yay -S --noconfirm flutter
WSLとWindows11をうまく使う構成

詳しくはこのスクラップに記述

各種インストール

sudo pacman -S  --noconfirm clang cmake dart ninja gtk3
git config --global --add safe.directory /opt/flutter
yay -S --noconfirm android-sdk-platform-tools

PATHを通す

~/.config/fish/config.fish
fish_add_path /opt/flutter/bin
fish_add_path /opt/android-sdk/platform-tools/を追加する
例えば,次のような方法で追加できる.

~/.config/fish/config.fish
sed -i 's/# Commands to run in interactive sessions can go here/# Commands to run in interactive sessions can go here\nfish_add_path \/opt\/flutter\/bin\nfish_add_path \/opt\/android-sdk\/platform-tools\/\n/g' ~/.config/fish/config.fish
WSLで完結する全部乗せ構成

理論上できると思う.adb関係で躓くかも(特に実機デバックの場合).

各種インストール

sudo pacman -S  --noconfirm clang cmake dart ninja gtk3
git config --global --add safe.directory /opt/flutter
yay -S --noconfirm android-sdk android-sdk-platform-tools android-studio
flutter config --android-sdk /opt/android-sdk
cd /opt/android-studio && sudo ln -s jbr jre

PATHを通す

~/.config/fish/config.fish
fish_add_path /opt/flutter/bin
fish_add_path /opt/android-sdk/platform-tools/
set -gx CHROME_EXECUTABLE /opt/google/chrome/chromeを追加する
例えば,次のような方法で追加できる.

~/.config/fish/config.fish
sed -i 's/# Commands to run in interactive sessions can go here/# Commands to run in interactive sessions can go here\nfish_add_path \/opt\/flutter\/bin\nfish_add_path \/opt\/android-sdk\/platform-tools\/\nset -gx CHROME_EXECUTABLE \/opt\/google\/chrome\/chrome\n/g' ~/.config/fish/config.fish

或いは,私のスクラップ が参考になるかも