概要
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 件のコメント:
コメントを投稿