OS アップデート

乃村です.世間では Windows 10 から 11 への移行が話題のようですね.

私も少し重い腰を上げて連休中にメイン PC の Ubuntu を 24.04LTS に更新しました.

私の場合,OS アップデートは Ubuntu なら do-release-upgrade せずにゼロから入れなおすことにしています (Debian なら testing を使い続けるというのがオススメです).

  1. 旧ファイルシステムをバックアップ
  2. クリーンインストール
  3. /home を復元 (dot ファイルは全部消して git から復元)
  4. apt-get で必要なパッケージを導入
  5. 自前でビルドしたツール類をインストールしなおす

このとき 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/ にもあって,それを使うとインストール時の気持も残せるようになってるのですが,これを書くまで存在を忘れていました.



Comment

No comment