2024年7月10日水曜日

apt snapshot を使ってみる

apt snapshot を使ってみる

概要

apt の snapshot は特定の日付における最新版のパッケージをインストールすることができる昨日です

環境

  • Ubuntu 22.04
  • apt 2.4.12

スナップショットの有効化

  • sudo vim /etc/apt/sources.list

deb のあとに [snapshot=yes] を追記します
すべての定義に追加して OK です

deb [snapshot=yes] http://jp.archive.ubuntu.com/ubuntu jammy main restricted

スナップショットリポジトリの準備

  • sudo apt update --snapshot 20230703T012345Z

こんな感じで実行すると snapshot.ubuntu.com のリポジトリを更新しているのが確認できると思います
snapshot ID は YYYYMMDDThhmmddZ 形式でしていします

参照先のスナップショットがない場合

日付が apt update 時にない場合には 404 NOT FOUND エラーが発生します

スナップショットリポジトリを使ってインストールする

  • sudo apt -y install hello --snapshot 20230703T012345Z

この時刻での最新のパッケージがインストールされます

注意事項

esm パッケージリポジトリでは [snapshot=yes] が効かないのでもし esm 側に最新のパッケージがある場合は esm を優先してインストールしてしまいます

なので esm を無効化してから apt install しましょう

  • sudo mv /etc/apt/sources.list.d/ubuntu-esm-apps.list{,.back}
  • sudo mv /etc/apt/sources.list.d/ubuntu-esm-infra.list{,.back}
  • sudo apt update --snapshot 20230703T012345Z
  • sudo apt remove hello
  • sudo apt -y install hello --snapshot 20230703T012345Z

esm 以外にも snapshot が使えないリポジトリがある場合そちらに最新のパッケージがあればそれを優先してしまうようなので注意しましょう

最後に

複数の環境がある場合に常に apt update & apt upgrade だと実行する時期によってバージョンが異なることがあります
そんな場合に snapshot を使って日付を指定することでその日付における最新をインストールすることができるので環境ごとにバージョンの差異が発生することがなくなります

参考サイト

0 件のコメント:

コメントを投稿