恥は/dev/nullへ by 初心者

プログラミング初心者がのろのろと学んだことをつづっています♪

Debian環境設定(4) /etc/apt/sources.list の設定

この記事は、主にDebian Administrator's Handbookを眺めて書いたものです。
対象はDebian 10 (buster)です。

 

  

Part 1 : Debian Administrator's Handbook

Debian Administrator's Handbookのサイト

 ダウンロードページ

 

 

Part 2 : 用語

APT

APTは Advanced Package Tool の略だそうです。

 

ソースパッケージとパッケージソース

ソースパッケージ(source package)は、ソースコードのパッケージ。
パッケージソース(package source)は、パッケージのあるリポジトリ

 

 

Part 3 : /etc/apt/sources.listの説明

APTを使うにはリポジトリの一覧を /etc/apt/sources.list に記述しておく必要があります。 

<例>
deb http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free

ベースリポジトリ以外も記述したフル設定の例はPart4の「stable版向けの設定例」をご覧ください。

 

sources.listファイルの各行は、少なくとも3つのフィールドから構成されています。

 

1番目のフィールド

1番目のフィールドはパッケージのタイプを表しています。

deb      バイナリーパッケージ(バイナリファイルの入ったパッケージ)
deb-src  ソースパッケージ(ソースコードの入ったパッケージ)

  

2番目のフィールド

2番目のフィールドはリポジトリのURLです。
記述例ではインターネット上のリポジトリになっていますが、CD-ROM等をリポジトリに指定することもできます。

http:// Webサーバー上のリポジトリhttps:// で始まる場合もあります。)
ftp://  FTPサーバー上のリポジトリ (ftps:// で始まる場合もあります。)
file:// PC上のリポジトリ
cdrom:  CD_ROM、DVD-ROM、Blu-rayディスク

 

3番目のフィールド

3番目のフィールドは、指定するリポジトリの構造によって記述の仕方が異なります。
ハンドブックによると、サブディレクトリが無いリポジトリなら「./」を指定することもできるそうですが、大抵のポジトリは階層構造になっています。

 

(比較) リポジトリの構成とsources.listの記述

理化学研究所リポジトリを見ると、Debian 10 (buster) のある場所は以下のとおりです。

http://ftp.riken.jp/Linux/debian/debian/dists/buster/

そして、このbusterディレクトリの中に「main」ディレクトリ、「contrib」ディレクトリ、「non-free」ディレクトリがあります。

 

このリポジトリを利用する場合、sources.listには以下のように記述します。

deb http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free

理化学研究所のURLにある「dists」ディレクトリを記述する必要は無いようです。

 

3番目のフィールドは、Debianコードネーム版(stable、 testing、 unstable等)です。コードネームで記述する場合、Debian 10 のコードネームは busterなので、次のようになります。

deb http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free

 

版で既述する場合、次のようになります(stable版を指定した場合)。

deb http://ftp.riken.jp/Linux/debian/debian stable main contrib non-free

 

 

Part 4 : /etc/apt/sources.listの設定例

stable版向けの設定例

# Security updates
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates main contrib non-free

# Base repository
deb http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian buster main contrib non-free

# Stable updates
deb http://ftp.riken.jp/Linux/debian/debian buster-updates main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian buster-updates main contrib non-free

# Stable backports
deb http://ftp.riken.jp/Linux/debian/debian buster-backports main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian buster-backports main contrib non-free

 

上の例では「Security updates」を除き、理研リポジトリを指定しています(Security updatesはミラーサイトには無いため)。


余談ですが、念のためsecurity.debian.orgを調べました。
http://security.debian.org/dists/buster/updates/ の中に「main」「contrib」「non-free」がありました。

 

リポジトリに含まれるパッケージ

大抵のパッケージはベースリポジトリから取得します。ベースリポジトリには全てのパッケージが含まれているものの、更新頻度は少なめで2ヶ月に1回くらいのポイントリリース(バグフィックス等)です。

それ以外のリポジトリ部分的なもので、全てのパッケージが含まれているわけではありません(ただ、新しいバージョンのパッケージを提供するらしいです)。

 

非公式のリポジトリは最後に記述する

欲しいバージョンのパッケージが複数のリポジトリにある場合、aptは(sources.list内で)最初に記述されているリポジトリを利用します。よって、非公式のリポジトリはsources.listの最後に記述します。

 

Security updatesリポジトリ

Debianで使用されているソフトに脆弱性などがあると分かると、それを修正するためのセキュリティアップデートが提供されます。
これを拾ってくるために「Security updates」に記述したリポジトリを使用します(このアップデートはミラーサイトにはありません)。

 

Stable updatesリポジトリ

Stable updatesリポジトリは、主に重大なバグに対するバグフィクスを提供します。なお、stable版のポイントリリース(ベースリポジトリのポイントリリース)よりも早くアップデートを提供してくれるそうです。

 

Stable backportsリポジトリ

Stable backportsリポジトリには package backports があります(package backportsとは、古いディストリビューション(通常はstable版)向けに再コンパイルした最近のソフトのパッケージだそうです)。しかし、意図的に指定しないとaptはpackage backportsをインストールしてくれません。

 

ハンドブックには以下の2つの方法が記載されていました。

$ sudo apt-get install パッケージ名/buster-backports
$ sudo apt-get install -t buster-backports パッケージ名

 

main, non-free, contrib

パッケージがどのようなライセンスに従っているかに応じて、「main」、「non-free」、「contrib」に分かれているらしいです。

  • mainは、DFSG(Debian Free Software Guidelines)に準拠しているもの。
  • non-freeは、DFSGに完全には準拠していないが、制約なしに配布することができるもの(公式にはDebianではない)。
  • contribは、オープンソースだがnon-freeなものを必要とするパッケージ。

 

(補足)
contribの説明に登場するnon-freeなものの例として、ハンドブックには次の例が挙げられています。
・ゲームのROM、コンソールのBIOS
コンパイルするのにプロプライエタリなソフトを必要とするもの