Debian/Ubuntu小技: 実際にアップデートせずにアップデートに必要なパッケージを確認・ダウンロードする

package
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

disclaimer:本稿は赤帽エンジニアブログの「RHEL小技: 実際にアップデートせずにアップデートに必要なパッケージを確認・ダウンロードする」を拝見して衝動的に書かれた、いわばパロディ記事です。

 

お仕事とDebian11リリースのためのバグつぶしと幼児の相手等でヘロヘロになってるDebian developerのやまねです。

今日はDebian/Ubuntu小技ということで、実際にアップデートせずにアップデートに必要なパッケージを確認・ダウンロードする方法をご紹介します。

パッケージの確認

まずは管理者権限で apt update してパッケージデータベースを最新にしておきます。

$ sudo apt update
ヒット:1 http://security.debian.org/debian-security bullseye-security InRelease
ヒット:2 http://debian-mirror.sakura.ne.jp/debian bullseye InRelease
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 12 個あります。表示するには 'apt list --upgradable' を実行してください。

親切にも「アップグレードできるパッケージが 12 個あります。表示するには ‘apt list –upgradable’ を実行してください。」との文言が出てますね。実行してみましょう(システムへの変更は行わないので管理者権限は不要です)。

$ apt list --upgradable
一覧表示... 完了
firefox-esr-l10n-ja/testing 78.12.0esr-1 all [78.11.0esr-1 からアップグレード可]
firefox-esr/testing 78.12.0esr-1 amd64 [78.11.0esr-1 からアップグレード可]
libgtk-layer-shell0/testing 0.5.2-2 amd64 [0.5.2-1 からアップグレード可]
libnss-myhostname/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
libnss-systemd/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
libpam-systemd/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
libsystemd0/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
libudev1/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
systemd-sysv/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
systemd-timesyncd/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
systemd/testing 247.3-6 amd64 [247.3-5 からアップグレード可]
udev/testing 247.3-6 amd64 [247.3-5 からアップグレード可]

以上のように「apt list –upgradable」を使うと、「apt upgrade」でアップデートされるパッケージとそのバージョンの一覧を表示します。

 

…あれ?でも「RHEL小技」の場合はパッケージを指定していましたね?今回の場合はsystemdとfirefoxなど「アップグレード可能なパッケージ全て」を表示してしまいます。おそらく「特定パッケージのみの更新を考慮したい」ということがあるでしょう。その場合は「apt install -s <パッケージ名>」を指定します。

では、試しにsystemdだけに限って指定してみましょう。

$ apt install -s systemd
注意: これはシミュレーションにすぎません!
apt は実際の実行に root 権限を必要とします。
ロックが非アクティブであることから、今この時点の状態に妥当性が
あるとは言い切れないことに注意してください!
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libnss-systemd libpam-systemd libsystemd0 systemd-timesyncd
提案パッケージ:
systemd-container
以下のパッケージはアップグレードされます:
libnss-systemd libpam-systemd libsystemd0 systemd systemd-timesyncd
アップグレード: 5 個、新規インストール: 0 個、削除: 0 個、保留: 7 個。
Inst libnss-systemd [247.3-5] (247.3-6 Debian:testing [amd64]) []
Inst systemd-timesyncd [247.3-5] (247.3-6 Debian:testing [amd64]) []
Inst libpam-systemd [247.3-5] (247.3-6 Debian:testing [amd64]) []
Inst systemd [247.3-5] (247.3-6 Debian:testing [amd64]) []
Inst libsystemd0 [247.3-5] (247.3-6 Debian:testing [amd64])
Conf libsystemd0 (247.3-6 Debian:testing [amd64])
Conf libnss-systemd (247.3-6 Debian:testing [amd64])
Conf systemd-timesyncd (247.3-6 Debian:testing [amd64])
Conf libpam-systemd (247.3-6 Debian:testing [amd64])
Conf systemd (247.3-6 Debian:testing [amd64])

以上のように、systemd の最新パッケージをインストールしようとすると「libnss-systemd libpam-systemd libsystemd0 systemd-timesyncd」の各パッケージもアップデートが必要だということがわかりますね。

パッケージのダウンロード

$ apt download <パッケージ名> を使いましょう。

「apt download」ではパッケージのダウンロードだけを行いインストールをしません。ダウンロードされたパッケージはコマンドを実行したディレクトリ直下に保存されます。

$ apt download systemd
取得:1 http://debian-mirror.sakura.ne.jp/debian bullseye/main amd64 systemd amd64 247.3-6 [4,495 kB]
4,495 kB を 1秒 で取得しました (4,723 kB/s)

$ ls ./*.deb
./systemd_247.3-6_amd64.deb

…でも、一個一個指定していくのは面倒ですね。「『特定パッケージのアップグレード時に必要なパッケージ』をすべてダウンロードしたい」とい場合は「-d」オプションを使って「$ sudo apt install -d <パッケージ名>」としてダウンロードオンリーモードでの実行を行います。

$ sudo apt install -d systemd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libnss-systemd libpam-systemd libsystemd0 systemd-timesyncd
提案パッケージ:
systemd-container
以下のパッケージはアップグレードされます:
libnss-systemd libpam-systemd libsystemd0 systemd systemd-timesyncd
アップグレード: 5 個、新規インストール: 0 個、削除: 0 個、保留: 7 個。
5,482 kB のアーカイブを取得する必要があります。
この操作後に追加で 0 B のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://debian-mirror.sakura.ne.jp/debian bullseye/main amd64 libnss-systemd amd64 247.3-6 [198 kB]
(中略)
5,482 kB を 1秒 で取得しました (3,823 kB/s)
ダウンロードオンリーモードでパッケージのダウンロードが完了しました

ファイルは「/var/cache/apt/archives/」ディレクトリ以下に保存されています。どのリポジトリから取得したのか、というのは問いません。「$ sudo find /var/cache/apt/archives/ -type f -name "*deb"」とすればファイル一覧が取得できるでしょう。

$ sudo find /var/cache/apt/archives/ -type f -name "*deb"
/var/cache/apt/archives/libnss-systemd_247.3-6_amd64.deb
/var/cache/apt/archives/systemd_247.3-6_amd64.deb
/var/cache/apt/archives/libpam-systemd_247.3-6_amd64.deb
/var/cache/apt/archives/systemd-timesyncd_247.3-6_amd64.deb
/var/cache/apt/archives/libsystemd0_247.3-6_amd64.deb

 

apt を使わずにできるか?

yumだろうがaptだろうが、パッケージマネージャーのやることは同じですのでその答えは言わずともがな…ですね。

 

まとめ

ややこしい所はaptがやってくれるので、aptを使いましょう 🙂

アバター画像
About サイオステクノロジーの中の人 9 Articles
Debian developerを務める傍ら、猫や幼児の相手をしている(合間に仕事)。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる