|||||||||||||||||||||

なんぶ電子

- 更新: 

Debian11(bullseye)から12(bookworm)へアップグレード

Debian12(bookworm)

この間Debian10(buster)から11(bullseye)にアップデートしたばかりのような気もしましたが、あれから1年と9カ月もたったようで、Debian12(bookworm)が登場しました。

そこで今回も、アップグレードをしてみたいと思います。

事前確認

毎回似たような内容になっていますが、それでも変更点が存在します。第4章 Debian 11 (bullseye) からのアップグレードを一度読んでおくのがおすすめです。

ここでは筆者そこに記述のある作業のうち筆者が重要だと思う部分をピックアップして紹介します。

  • 接続環境

    リモート接続では作業中に接続が途切れることが考えられます。tmuxなどでそれに備えましょう。

  • バックアップ
  • 最新の状態までアップグレード
  • 不要なパッケージを除去

    dpkg -l でインストールされているパッケージの一覧を見ることができます。また、APTのフラグを管理する apt-mark コマンドを使い「 apt-mark showmanual 」とすることで手動でインストールのフラグがついたパッケージだけのリストを表示することができます。

  • 不要な残存設定の除去

    先のページでは次のように残存設定を見つけるように提案されていました。

    # find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'

    APT でアップグレードした際に残した元の設定ファイルなどを、退避用のプレフィックスで検索しています。

    残存設定があると、アップグレードによる生成される残存設定と混在し、リカバリが必要な際に混乱が生じる可能性があります。

  • Debian由来ではないパッケージの削除

    apt-forktracerをインストールして、現在サポートされていなかったり、自身でインストールしたパッケージ当を探して除去します。

    これらは自動でアップグレードされないので、あとから再設定する必要があります。また残しておくと自動で削除されることがあるようです。

    (たとえば、由来ではないパッケージが別の由来パッケージに依存していた場合、その管理はできていない為、apt autoremoveは利用しているパッケージを消してしまうことがあります)

    また非公式にバックポートされたようなパッケージも同様です。

  • hold状態のパッケージがあれば解除

    アップグレードに必要なパッケージがホールドされていると、更新は失敗します。

    # apt-mark showhold

    でホールドされているパッケージを確認できます。

  • /etc/apt/sources.listの編集

    筆者の場合はコードネームを指定していましたので、 bullseye の部分を新しいコードネーム bookworm に変更しました。

    今バージョンから、従来 non-free に所属していたファームウェアパッケージは専用のアーカイブエリア 「 non-free-firmware 」に移動したそうです。

    筆者は設定していませんが、bullseye-backports を設定していたらそれを消して bookworm-backports を加えるようにも案内されていました。

    sources.list

    deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
    
    deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
    

    ちなみに、bookworm をクリーンインストールする場合は次のようなリストになっていました。

    sources.list

      deb http://deb.debian.org/debian/ bookworm main non-free-firmware
      # -src はソースコードを必要とする際のレポジトリです
      deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
    
      deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
      deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
      
      # -updates は小規模なバクフィックスや、更新用です
      deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
      deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware
    
    

    記述を変更したら、「 apt update 」で更新します。

  • セッションの記録

    /usr/bin/script を使ってアップグレードセッションの記録をすることが推奨されています。

    -t はメッセージが表示されたタイミングの出力を指定するもので、これは標準エラーに出力されるので、2>として標準エラーをリダイレクトして保存します。

    -a ではシェルのセッションの入出力をアペンド出力します。

    -t が標準エラーにデータを出力するのは、通常のメッセージが標準出力に出力されるためそれとタイミングデータを分ける為です。

    タイミングデータの取得は必須ではありませんが、これがあると scriptreplay を使ってあとからセッションをリプレイできます。

    すべてのログをとり終えたら、exit コマンドで終了させます。

    # script -t 2>~/test.time -a ~/script.log
    Script started, output log file is '/root/script.log', timing file is '/dev/stderr'.
    root@debian-doc:~# aaa
    bash: aaa: コマンドが見つかりません
    root@debian-doc:~# ls -l
    合計 0
    -rw-r--r-- 1 root root 0  9月 20 20:38 script.log
    -rw-r--r-- 1 root root 0  9月 20 20:38 test.time
    root@debian-doc:~# exit
    

    このあと、次のようにscriptreplayコマンドを使うと、入出力があったタイミングを再現されます。

    # scriptreplay /root/test.time /root/script.log
    # aaa
    ...
    # exit
    
  • 最小のアップグレード

    アップグレードを直接行った場合、残しておきたいパッケージが大量に削除されてしまうことがあります。このため2段階のアップグレードが推奨されています。

    このコマンドでは、他のパッケージをインストール・削除する必要がないパッケージだけをアップグレードします。

    # apt upgrade --without-new-pkgs
  • ディスク領域のチェック

    最小アップグレードを行った後、次のようにすることで、必要なディスク領域や削除されるパッケージを確認できます。

    このコマンドは最小のアップグレードをおこなってからでないとエラーで終了する事があります。

    # apt -o APT::Get::Trivial-Only=true full-upgrade

    必要な領域や削除されるパッケージが表示されたとしても、--trivial-only オプションを付けているので、既存のパッケージを削除やアップグレードする場合はエラーとなります。

    この仕組みを使って、実際の full-upgrade の実行を止めています。

  • フルアップグレード

    問題がなければフルアップグレードをします。

    # apt full-upgrade

変更点

Debian Bullseye から Bookworm にアップグレードした際の変更点で、で筆者の気になったものを紹介しておきます。

  • ntpsec

    ntp パッケージが ntpsecパッケージに変わりました。systemd-timesynct chrony と openntpd は引き続きサポートするようです。

  • DNS

    DNSでは、systemd-resolved が使われますがデフォルトではインストールされていないようです。明示的にインストールしないと DNS や mDNS が使えません。

  • MariaDBのパッケージ名

    MariaDBのサーバークライアントのパッケージ名にはこれまでバージョンがついていましたが、バージョン部分が除去されました。

    mariadb-server-10.5→mariadb-server

  • rsyslogのデフォルトインストール廃止

    bookworm からは rsyslogはデフォルトでインストールされません。journalctlに置き換えられます。

    なので、通常存在する/var/log/syslogは生成されません。データは/var/log/journal にバイナリの形状で保存されます。これを確認したい時は次のようにします。

    # journalctl -n

    nオプションは行数指定で、数を与えない場合は10行の最新ログを表示します。また-eオプションは最新の1000行を取得します。-fオプションは最新のログだけの表示と、新しいログの追加を待機して表示ます。

    ただし、アップグレードではbullseye上にrsyslogが存在してるので、rsyslogはアップグレード後も残ります。

    このrsyslogや、意図的にインストールした rsyslog の時刻の精度が上がっています。

  • Nonfreeファームウェアの警告

    もし、aptによるnon-free-firmwareの警告を消したい場合は次のようにファイルを作成すると警告は消えるそうです。

    /etc/apt/apt.conf.d/no-bookworm-firmware.conf

    APT::Get::Update::SourceListWarnings::NonFreeFirmware "false";

アップグレード後の apt update で 「 xxxx Key is stored in legacy trusted.gpg keyring 」エラーがでる場合は、リンク先のように修正すると改善されます。

筆者紹介


自分の写真
がーふぁ、とか、ふぃんてっく、とか世の中すっかりハイテクになってしまいました。プログラムのコーディングに触れることもある筆者ですが、自分の作業は硯と筆で文字をかいているみたいな古臭いものだと思っています。 今やこんな風にブログを書くことすらAIにとって代わられそうなほど技術は進んでいます。 生活やビジネスでPCを活用しようとするとき、そんな第一線の技術と比べてしまうとやる気が失せてしまいがちですが、おいしいお惣菜をネットで注文できる時代でも、手作りの味はすたれていません。 提示されたもの(アプリ)に自分を合わせるのでなく、自分の活動にあったアプリを作る。それがPC活用の基本なんじゃなかと思います。 そんな意見に同調していただける方向けにLinuxのDebianOSをはじめとした基本無料のアプリの使い方を紹介できたらなと考えています。

広告