0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuのパッケージリポジトリについて

Posted at

Ubuntuのパッケージを管理するリポジトリについて、Copilotさんに聞きながら確認してみました。

手元の環境は、Ubuntu 24.04.3です。

1. パッケージ入手元について

手元に作成した24.04.3のOSでは、OS上の以下の設定ファイルに記載された置き場所(=リポジトリ)に従って、パッケージを取得します。リポジトリは大きく2か所に分かれています。

/etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

各URLから、何を得るかは、Suites行、Components行に書かれています。
・Sutes:どのリリースからパッケージを取得するかの定義
・Components:パッケージの分類
です。すなわち、

http://jp.archive.ubuntu.com/ubuntu/ からは、以下を得る。
・noble:Ubuntu 24.04
・noble-updates:そのアップデート(バグ修正など)
・noble-backports:新機能など

http://security.ubuntu.com/ubuntu/ からは、以下を得る。
・noble-security:セキュリティ修正など

例えば、Ubuntu 24.04(=noble)のOSで$ sudo apt install nginx、のようにnginxのソフトウェア追加をすると、APTは、
(1) http://archive.ubuntu.com/ubuntu/dists/noble/ の下からパッケージの場所情報を得る。
(2) http://archive.ubuntu.com/ubuntu/pool/main/ の下からパッケージファイル(=debファイル)を得る。
のように、動作します。

また、パッケージの分類は、思想的・技術的な観点で分けられています。
・main:Ubuntu公式で完全サポートされるソフトウェア
・restricted:一部制限付きだが公式サポートされるもの(一部ベンダ向けのソースコード非開示のドライバなど)
・universe:公式のサポート外で、各コミュニティが提供するもの
・multiverse:公式のサポート外で、ライセンス制限(GPL以外や、商用ライセンスなど)があるもの

また、デバッグ情報パッケージを利用するには、そのリポジトリを示すファイルを、/etc/apt/sources.list.d/以下に追加する必要があります。例えば、次のように追加します。

/etc/apt/sources.list.d/ddebs.sources
Types: deb
URIs: http://ddebs.ubuntu.com/
Suites: noble noble-updates noble-proposed
Components: main restricted universe multiverse
Signed-by: /usr/share/keyrings/ubuntu-dbgsym-keyring.gpg

http://ddebs.ubuntu.com/ が、デバッグ情報パッケージのリポジトリです。ブラウザでアクセスすると、よく、「503 Service Unavailable」になります。サーバが過負荷っぽい。
こちらのSuitesの意味は以下です。
・noble:Ubuntu 24.04のもの。
・noble-updates:そのアップデート。恐らく、基本的にnoble以外すべて(-updates、-backports、-securityを集めたもの)
・noble-proposed:リリース前のテスト段階にあるもの(本番環境では非推奨)

また、パッケージのソースコードは、debやddebファイルではなく、以下の3種類のファイルから構成されます。
・tar.xzファイル
・dscファイル
・tar.gzファイル

リポジトリとしては、上記と同じです。指定するには、Types行を、「Types: deb」から「Types: deb deb-src」に変えます。それにより、apt sourceコマンドにより、ソースコードのファイルと、それらが適切に展開されたディレクトリを得ることができます。

2. リポジトリのディレクトリ構成について

リポジトリは、ブラウザでアクセスしてdebファイルを探したり、ブラウザ上でダウンロードしたりできますが、構成を理解しないと、迷子になりがちです。

http://jp.archive.ubuntu.com/ubuntu/ のリポジトリでいえば、次のような構成になっています。

http://jp.archive.ubuntu.com/ubuntu/
dists/
├── trusty/       → Ubuntu 14.04 LTS
├── xenial/       → Ubuntu 16.04 LTS
├── bionic/       → Ubuntu 18.04 LTS
├── focal/        → Ubuntu 20.04 LTS
├── jammy/        → Ubuntu 22.04 LTS
├── noble/        → Ubuntu 24.04 LTS
│   ├── main/binary-amd64/Packages.gz     → debパッケージの一覧のテキストファイルの圧縮
│   ├── multiverse/binary-amd64/Packages
│   ├── restricted/binary-amd64/Packages
│   └── universe/binary-amd64/Packages
├── oracular/     → Ubuntu 24.10(非LTS)
├── plucky/       → Ubuntu 25.04(非LTS)
├── questing/     → Ubuntu 25.10(非LTS)
└── devel/        → 開発中の未定版

pool/
├── main/         → Canonicalが公式に管理するソフトウェア
│   └── l/linux/  → カーネル関連(例:linux-image-*-dbgsym)
├── restricted/   → 非フリーだが重要なドライバ等(例:nvidia)
├── universe/     → コミュニティ管理の自由ソフトウェア
└── multiverse/   → ライセンス制約付きソフトウェア

つまり、distsの方がインデックス(ファイルの場所の索引)、poolの方がファイルの置き場所です。

Ubuntu 24.04のamd64のパッケージ一覧の情報は、dists/noble/main/binary-amd64/Packages.gzに書かれています。
このファイルを解凍して、1つ抜きだすと、こうなっています。

dists/noble/main/binary-amd64/Packages(の一部)
Package: linux-image-6.8.0-31-generic
Architecture: amd64
Version: 6.8.0-31.31
Built-Using: linux (= 6.8.0-31.31)
Priority: optional
Section: kernel
Source: linux-signed
Origin: Ubuntu
Maintainer: Canonical Kernel Team <kernel-team@lists.ubuntu.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 14604
Provides: fuse-module, ivtv-modules, kvm-api-4, linux-image, redhat-cluster-modules, spl-dkms, spl-modules, v4l2loopback-dkms, v4l2loopback-modules, virtualbox-guest-modules, zfs-dkms, zfs-modules
Depends: kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-6.8.0-31-generic
Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo, initramfs-tools | linux-initramfs-tool
Suggests: fdutils, linux-tools, linux-headers-6.8.0-31-generic, linux-modules-extra-6.8.0-31-generic
Conflicts: linux-image-unsigned-6.8.0-31-generic
Filename: pool/main/l/linux-signed/linux-image-6.8.0-31-generic_6.8.0-31.31_amd64.deb
Size: 14687796
MD5sum: 311e4eb1e17567176592789bda6fe0e0
SHA1: 75ea9633abebac0dbdee02f8f1b3101ab242fa12
SHA256: fd2ed023c84163e62c73d3b7b613a9b004bd31e335641c23d42bd249e489fbe6
SHA512: aac8e72ff30d9b077bb3cf1f9bda5a1afc72c75bdd93e1eb2554c2c8fbcdad61747ad13d01870e24ca995d72a164bd8748edea09e5bb350360cab05595029097
Description: Signed kernel image generic
Description-md5: b0fd0df88b1cd31408007b00d2458952

Filename:行に、pool/以下のファイルのパスがあります

Filename: pool/main/l/linux-signed/linux-image-6.8.0-31-generic_6.8.0-31.31_amd64.deb

pool/以下には、Ubuntu 14.04~25.10の、すべてのパッケージ(=debファイル)が、置いてあります。
main/l/linux/なら、linux-imageのdebファイルが、何万個も名前順に並んでいます。

http://jp.archive.ubuntu.com/ubuntu/
pool/
├── main/         → Canonicalが公式に管理するソフトウェア
│   └── l/linux/  → カーネル関連(例:linux-image-*-dbgsym)
├── restricted/   → 非フリーだが重要なドライバ等(例:nvidia)
├── universe/     → コミュニティ管理の自由ソフトウェア
└── multiverse/   → ライセンス制約付きソフトウェア

また、Ubuntu 24.04はLTSであり、24.04.3など、マイナーバージョンアップされたリリースがあります。

http://jp.archive.ubuntu.com/ubuntu/
dists/
├── noble/
│   ├── main/binary-amd64/Packages.gz     → debパッケージの一覧のテキストファイルの圧縮
│   ├── multiverse/binary-amd64/Packages
│   ├── restricted/binary-amd64/Packages
│   └── universe/binary-amd64/Packages
├── noble-updates/
│   ├── main/binary-amd64/Packages.gz     → debパッケージの一覧のテキストファイルの圧縮
│   ├── multiverse/binary-amd64/Packages
│   ├── restricted/binary-amd64/Packages
│   └── universe/binary-amd64/Packages
├── noble-security/
├── noble-backports/
├── noble-proposed/

dists/noble/以下のPackages.gzには、24.04のリリースの全パッケージ情報があります。一方、noble-updates/以下のPackages.gzには、24.04.3など、マイナーバージョンアップのリリースのパッケージを含め、一覧になっています。ただし、24.04.3のリリースのパッケージ一覧、というくくりにはなっておらず、24.04系への更新がすべて含まれています。

root@u24043s-vm1:~# cat Packages | grep "Package: linux-image-6.8.0-" | grep generic
Package: linux-image-6.8.0-35-generic
Package: linux-image-6.8.0-36-generic
Package: linux-image-6.8.0-38-generic
Package: linux-image-6.8.0-39-generic
Package: linux-image-6.8.0-40-generic
Package: linux-image-6.8.0-41-generic
Package: linux-image-6.8.0-44-generic
Package: linux-image-6.8.0-45-generic
Package: linux-image-6.8.0-47-generic
Package: linux-image-6.8.0-48-generic
Package: linux-image-6.8.0-49-generic
Package: linux-image-6.8.0-50-generic
Package: linux-image-6.8.0-51-generic
Package: linux-image-6.8.0-52-generic
Package: linux-image-6.8.0-53-generic
Package: linux-image-6.8.0-54-generic
Package: linux-image-6.8.0-55-generic
Package: linux-image-6.8.0-56-generic
Package: linux-image-6.8.0-57-generic
Package: linux-image-6.8.0-58-generic
Package: linux-image-6.8.0-59-generic
Package: linux-image-6.8.0-60-generic
Package: linux-image-6.8.0-62-generic
Package: linux-image-6.8.0-63-generic
Package: linux-image-6.8.0-64-generic
Package: linux-image-6.8.0-71-generic     → 24.04.3のカーネルパッケージ
root@u24043s-vm1:~#

また、noble-updates/の他にも、noble-security/の方にも、linux-image-6.8.0-71-genericがありました。kernelは、updatesでもあり、securityでもあるから、でしょうか(別に、1つのパッケージの索引を、複数個所に書いても問題はないはずです)。

まとめ

Ubuntuのリポジトリについて、調べたことをまとめました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?