ArchのIaC化を試みるメモ
UbuntuからArchに移行するので、その目的の一つのIaC化のメモ
日本のミラー有効化
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
PGP鍵の設定
上から
- 鍵の初期化
- 鍵の更新
- 鍵の更新
- パッケージの更新
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Syy archlinux-keyring --noconfirm
sudo pacman -Syu --noconfirm
ロケールの設定
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
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
ロケールの設定(日本語の有効化)
環境変数(?)のLANG
とLC_ALL
を設定[1]する.これは,~/.config/fish/config.fish
に以下の2行を追記すれば良い.
set -gx LANG ja_JP.UTF-8
set -gx LC_ALL en_US.UTF-8
日本語版のマニュアルの指定
Archの場合は/etc/man_db.conf
に以下を追記する.
MANDATORY_MANPATH /usr/share/man/ja_JP.UTF-8/
補足:その他のディストリビューション
Debianの場合は,/etc/manpath.config
に以下を追記する.
MANDATORY_MANPATH /usr/share/man/ja
他には/etc/man.conf
などもあるらしい.(未調査)
MANPATHの無効化
環境変数(?)のMANPATH
を削除[1:1]する(空文字を設定する).これは,~/.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
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
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
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
例えば私の場合は以下のように,各自設定する.
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"
色々インストール
言語系
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
fishをデフォルトシェルにする
sudo ですると root のシェルが変更されてしまうことに注意
chsh -s /bin/fish
最後にお片付け
rm -rf setupCache/
以下追加設定
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行を行末に追加している.
[wslutilities]
Server = https://pkg.wslutiliti.es/arch/
wsluがワンライナーでインストールできない理由
https://www.asobou.co.jp/blog/web/archilinux-on-wsl2
によると、ArchLinuxではポリシー違反でAURから削除されたみたい。
その他開発関係でのインストール
webkit2gtk
sudo pacman -S --noconfirm webkit2gtk
nodejs
sudo pacman -S --noconfirm nodejs npm
sudo npm install -g n
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/
を追加する
例えば,次のような方法で追加できる.
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
を追加する
例えば,次のような方法で追加できる.
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
或いは,私のスクラップ が参考になるかも