テクニカルプア

備忘録と若干の補足

nspawn コンテナに対して machinectl login とかしないでホストからコマンドをたたく

TL; DR

nsenter を知りませんでした。

本題

nspawn コンテナのパッケージを更新するときにわざわざ

$ machinectl login <コンテナ>

して PolicyKit の諸々を通過した後

# pacmatic -Syu
# pacman -Scc
# pacman-optimize

などをするのが面倒で、これをなんとかする方法をずっと探していた。そしてそれをやっと見つけた。
util-linux パッケージの中に含まれている nsenter というコマンドを使えば出来る。

参考にしたサイトに掲載されていたやつをほぼマルっとパクって下記を書いた:
update packages for arch linux nspawn container

pacmatic ではなく pacman を使っているのは yes コマンドで問答を潰すにはいささか面倒な事態に陥る事が多々あるため。

余談

nsenter で調べるとこういうことやってる情報がそれなりに出てくる。
わからないことを調べるのにも背景の知識が必要ということがよくわかった。
nspawn でやりたいことを解決するのに詰まったら根底にある namespace とか cgroup まで戻るのが大事。

*1:"nspawn nsenter" でググると一番上にでてくる。言葉を知っているとすぐ見つかる。