Ubuntu Weekly Recipe

第677回 aptで使うsources.listのオプションいろいろ

この記事を読むのに必要な時間:およそ 5.5 分

URIの指定方法

URIは「スキーム:アドレス」の形で指定します。最新のAptでサポートしているスキームは次のとおりです。

http
もっとも一般的なHTTPを使うスキームです。⁠http://アドレス/」の形で指定できます。アドレス部分は単なるドメイン名だけでなく「アドレス:ポート」のようなポート番号指定や,⁠ユーザー名:パスワード@アドレス」のようなBASIC認証情報の付加も可能です。ただし認証情報については,ここには記述せずにapt_auth.confを使うべきでしょう。もちろんHTTP接続なので,認証情報は暗号化されません。apt.confにはプロキシーや接続に関するHTTPに関するより詳細な設定を記述できます。
https
通信にHTTPSを利用します。Apt 1.6より前(つまりUbuntu 17.10以前)はHTTPSを使うためにapt-transport-httpsパッケージが必要でしたが,現在はaptパッケージだけでHTTPS通信が可能です。基本的な部分はhttpスキームと同じで,利用するルート証明書等の設定が追加されています
mirror

リポジトリそのもののURIではなく,リポジトリとして利用できるミラーサーバーのURIのリストを記録したファイルの場所を指定できます。たとえば「mirror://example.com/mirror.list」を指定した場合は,example.comのmirror.listの中にあるミラーサーバーをランダムに選択し,それをリポジトリのURIとして利用します。うまく接続できない場合は,同じファイルの別のURIにフォールバックします。

ローカルシステム内部で管理しているミラーリストを参照したい場合は「mirror+file:/etc/apt/mirror.list」のように「mirror+scheme」フォーマットでスキームを指定できます。ミラーリストは単にURIを1行ごとに書いたファイルです。さらに,プライオリティも含むいくつかのオプションも指定可能です
fileとcopy

fileおよびcopyはともにローカルシステム内の任意のディレクトリをリポジトリとして参照できるスキームです。⁠file:///path/」のように指定します。マウントされてさえいれば,バックエンドのアクセス方法は問わないため,NFSやその他のネットワークファイルシステムも利用可能です。

copyはhttpなどと同じように一旦キャッシュディレクトリ/var/cache/apt/以下にファイルをダウンロードした上で,インストールを実施します。
cdrom
光学メディアやUSBストレージのようにリムーバブルなデバイスを指定する際に利用するスキームです。⁠cdrom:ラベル」のようなフォーマットで指定します。Liveブートした環境だと設定されており,ネットワークがない環境でパッケージをアップデートしたい際などに利用します。ただし単に外部ストレージをリポジトリとして使いたいだけなら,fileでも実現可能です。cdromスキームについてはapt-cdromコマンド等と併用して使うことになるでしょう。
ftp,rsh,ssh
FTP/RSH/SSHなどを利用してサーバーに接続しファイルをダウンロードします。アカウント情報や鍵等の設定が必要です。特別な環境でない限りは使われることはあまりないでしょう。

Aptは/usr/lib/apt/methodsにファイルを置くことで,スキームを拡張できる仕組みが存在します。サードパーティによる拡張は「apt-transport-FOO」という名前でパッケージ化されていますので,実際に探してみると良いでしょう。とはいえ現在存在するのは,AWS S3をリポジトリとして使えるapt-transport-s3やTorでアクセスできるapt-transport-torin-totoという仕組みでパッケージを取得できるapt-transport-in-totoぐらいです。

URIにはミラーリポジトリを指定できます。たとえばUbuntuの公式リポジトリは「archive.ubuntu.com」ですが,日本の公式ミラーサーバーとして「jp.archive.ubuntu.com」も利用可能です※2⁠。

※2
このミラーリポジトリは富山大学の協力のもと,複数台のサーバーをUbuntu Japanese Teamが管理・運用しています。実質的には,Ubuntu Weekly Topicsでおなじみの吉田さんが担当しているため,お世話になっている人はたまに感謝の言葉を表明してもバチはあたらないでしょう。また上記以外にも日本のミラーはいくつも存在するため,ミラーサーバーのリストを参考に,普段使うミラーサーバーを直接指定する方法もあります。ただしいずれのサーバーも管理者の技術的・政治的な涙ぐましい努力によって維持されています。常識を超えた無茶なアクセスは禁物です。

ちなみにarm64やarmhfなどamd64以外のアーキテクチャーパッケージについては,ports.ubuntu.comで提供されています。こちについては「公式のミラーサーバー」は用意されていないため,Raspberry Piなどでは原則として「ports.ubuntu.com」を指定することになります。

Ubuntuの場合,サポート期間が終了すると(End of Lifeを迎えると⁠⁠,そのリポジトリは使えなくなります。たとえば先日,Ubuntu 20.10のサポートが終了しました。よって20.10のリポジトリデータにはまもなくアクセスできなくる見込みです※3⁠。しかしながらやむにまやれに理由により,EOLを迎えたUbuntuをインストールし,状況によってはaptコマンドでパッケージをインストールする必要が出てくることもあるでしょう。そんな用途向けに,old-releases.ubuntu.comが存在します。

※3
LTSのように標準的なサポートを終えても,ESM(Extended Security maintenance)期間中のものはリポジトリも残っていますが,アップデートを取得するためには別途アクセス権が必要です。

これは古いリリースのリポジトリやインストールメディアを提供するサイトです。sources.listの「jp.archive.ubuntu.com」「old-releases.ubuntu.com」へと置き換えれば,サポート終了後のリリースであってもパッケージのアップデートやインストールが可能になります。

当然のことながら,これらのリポジトリにはサポート期間終了後のセキュリティアップデートは提供されていません。これらリポジトリを有効化したマシンでインターネットに直接接続することは,危険な行為であることを理解した上で利用してください。

各種オプション

sources.listにはdeb/deb-srcとURIの間に[ option1=value1 option2=value2 ]のようなフォーマットで,複数のオプションを指定可能です。便利なものをいくつか紹介しましょう。

arch=amd64,arm64のように指定すると,そのリポジトリで利用するアーキテクチャーを指定できます。指定しない場合はシステム全体の設定に依存し,amd64なマシンなら「amd64」「i386」を,Raspberry PiのようなARMマシンで32bitなら「armhf⁠⁠,64bitなら「arm64」が使われます。たとえば「特定のリポジトリはi386のパッケージ情報だけあれば十分」といった場合に便利なオプションです。

trusted=yesを設定すると,リポジトリの署名検証を迂回できます。つまりそのリポジトリを全面的に信用します。ローカルリポジトリのようにパッケージの署名作業をスキップしたい場合に便利です。言い方を変えると「本当に信頼できるパッケージしか置いていないリポジトリ」以外では指定してはいけません。

signed-by=鍵名では,リポジトリの検証時に利用する鍵をフィンガープリントもしくはファイルパスで指定します。特定のサードパーティのリポジトリでは,そのサードパーティが提供する鍵を利用します。リポジトリの署名に関しては第675回のapt-keyはなぜ廃止予定となったのかを参照してください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。