33
nom
2025/10/13
0
乃村です.世間では Windows 10 から 11 への移行が話題のようですね.
私も少し重い腰を上げて連休中にメイン PC の Ubuntu を 24.04LTS に更新しました.
私の場合,OS アップデートは Ubuntu なら do-release-upgrade せずにゼロから入れなおすことにしています (Debian なら testing を使い続けるというのがオススメです).
- 旧ファイルシステムをバックアップ
- クリーンインストール
- /home を復元 (dot ファイルは全部消して git から復元)
- apt-get で必要なパッケージを導入
- 自前でビルドしたツール類をインストールしなおす
このとき apt-get で何入れたっけ? と思い出す必要があるのですが,旧システムで apt-mark showmanual
というコマンドを叩いて一覧を保存しておくと,(依存とかではなく) 自分でインストールしたパッケージ一覧が分かって便利です.
ただしクリーンインストールした直後に apt-mark showmanual
を叩いてもなぜかそこそこ出てくるので,OS インストール直後に一度叩いて初期一覧を作っておき,それとの差分で確認するのがオススメです.
私は,以下のエイリアスを設定しておいて,OS インストール直後や何かをインストールした節目に am
と叩いて一覧を保存するようにしています.
alias am='apt-mark showmanual > $HOME/var/log/apt-mark-showmanual-$(hostname --short)-$(date +%Y%m%d-%H%M%S).log'
そして時々,以下のコマンド am-list
で自身のパッケージインストールの歴史を鑑賞するのでした.
#!/bin/bash
LOG_DIR=$(echo "$HOME/var/log/$1" | sed 's!/$!!')
HOST_NAME=$(hostname --short)
cd "$LOG_DIR"
echo "* $LOG_DIR"
function find_additions() {
local old="$1" new="$2"
diff -u "$old" "$new" | sed -n '1,/^@@/d; s/^+/ + /p'
}
for log in apt-mark-showmanual-$HOST_NAME-*.log
do
if [ -n "$prev_log" ]; then
echo "** $log"
find_additions "$prev_log" "$log"
fi
prev_log="$log"
done
echo "** Installed but not in log"
find_additions "$prev_log" <(apt-mark showmanual)
am
コマンドは,もう少し豪華なシェルスクリプト版が ~/bin/
にもあって,それを使うとインストール時の気持も残せるようになってるのですが,これを書くまで存在を忘れていました.
No comment