第 129 回 東京エリア Debian 勉強会資料.Deb
銀河系唯一のDebian専門誌
2015 年 8 月 22 日

牛ーワパさん

☆
超1.
1
APT

特集：

デビアン勉強会

APT1.1 超☆牛さんパワー炸裂!

4

3.1

はじめに . . . . . . . . . . .

4

3

目次

3.2

Debconf15 のセッション . .

4

事前課題

2

3.3

APT 1.1 を評価してみる . .

5

1.1

野島 . . . . . . . . . . . . .

2

3.4

APT 1.1 の特徴 . . . . . . .

5

1.2

zinrai . . . . . . . . . . . .

2

3.5

deb822 形式 . . . . . . . . .

7

1.3

wskoka . . . . . . . . . . .

2

3.6

牛さんパワー健在! . . . . . .

8

1.4

issei . . . . . . . . . . . . .

2

3.7

おわりに . . . . . . . . . . .

8

1.5

khibino . . . . . . . . . . .

2

1.6

Roger Shimizu . . . . . . .

2

会場での無線 LAN のつなぎ方

91.7

yy y ja jp . . . . . . . . . .

2

4.1

はじめに . . . . . . . . . . .

9

4.2

wpasupplicant

1

4

最近の Debian 関連のミーテ

2

ィング報告

2.1

第 128 回東京エリア Debian1

び/etc/network/interfaces を利用の場合 . . . . . . . . . .

3

勉強会 . . . . . . . . . . . .

及

4.3
3

9

そ の 他 の 無 線 LAN 用 パッ
ケージを利用の場合 . . . . .

9

第 129 回 東京エリア Debian 勉強会 2015 年 8 月

1 事前課題
野島 貴英

今回の事前課題は以下です:

1. 本日、何の作業をやるかを宣言ください。
2. (オプション) どこで今回の勉強会の開催を知りましたか？
3. (オプション) 何について聞きたい／参加者と話をしたいですか？
この課題に対して提出いただいた内容は以下です。

1.1

1.5

野島

1. Q.hack time に何をしますか？
A. Debian haskell チームへの参加について調べる
2. (オプション)Q. どこで今回の勉強会の開催を知りまし1. Q.hack time に何をしますか？
A. 今度こそ!Nook HD+ を Debian に。
2. (オプション)Q. 何について聞きたい／参加者と話をしたか？

たいですか？

A. 友達や知り合いから直接

A. 俺と Debian

1.2

khibino1.6zinrai
1. Q.hack time に何をしますか？
A. mincs の ITP。https://github.com/mhiramat/mincs

Roger Shimizu
1. Q.hack time に何をしますか？
A. Debian BTS の確認など
2. (オプション)Q. どこで今回の勉強会の開催を知りましたか？

1.3

A. その他

wskoka
1. Q.hack time に何をしますか？
A. tilegx への移植
2. (オプション)Q. どこで今回の勉強会の開催を知りまし1.7 yy y ja jp
1. Q.hack time に何をしますか？
A. DDTSS
http://ddtp.debian.net/ddtss/index.cgi/ja
2. (オプション)Q. 何について聞きたい／参加者と話をしたか？

A. その他たいですか？

1.4

issei

A. DDTSS
3. (オプション)Q. どこで今回の勉強会の開催を知りまし1. Q.hack time に何をしますか？
A. dgit の使い方をマスターする。

たか？

A. その他

2

第 129 回 東京エリア Debian 勉強会 2015 年 8 月

2 最近の Debian 関連のミーティング報告
野島 貴英

2.1 第 128 回東京エリア Debian 勉強会• 場所はスクウェア・エニックスさんのセミナルームをお借りしての開催でした。
• 参加者は 6 名でした。
• セミナ内容は野島さんによる「Debian で HTTP/2 を試す」でした。
• 残りの時間で hack time を行い、成果発表をしました。
• 宴会の代わりに、「中国料理 東順永 本店」で夕食会をやりました。
セミナは野島さんより、Debian で HTTP/2 を試す事について発表がありました。内容としては、HTTP/2 の規格概要、デモ、Debian で最も簡単に HTTP/2 対応サーバを動かしてみる等となりました。今年 RFC 化される、あるいは、某有名携帯端末の会社のイベントで HTTP/2 を使って欲しいアピールがあったなど、HTTP/2 が少しづつ推される (あるいはいつの間にか使っている？）場面も、今後増えてくるかと思います。Debian があればサーバ稼働も含めてすぐに試せますので、皆様も是非お試し下さい。
また、参加者の中で、hacktime 中に書いた Linux Kernel 向けパッチが取り込まれた、Bug Report した内容がLWN/Gigazine に取り上げられた等、いろいろな形で成果を出された旨の報告がありました。こういった方々がいらっしゃるのは正直凄い事だと思います。

Debian は多様性をモットーとしているコミュニティでもあります。参加したいと思った方々には、IT 技術面・非IT 技術面、どちらも十分に活躍して成果をうたえる余地にあふれ、万年人手不足のコミュニティです。参加された方々におきましては、様々な形でいつでも頭角を表していただけるチャンスにあふれてますので、皆様も是非！

3

第 129 回 東京エリア Debian 勉強会 2015 年 8 月

3 APT1.1 超☆牛さんパワー炸裂!
野島 貴英

3.1 はじめにdebian-devel-announce に、”Moo! 9th preview of APT 1.1 released: Go and test new supercow powers” というタイトルで、APT 1.1 のアナウンスが流れました。
今回は、Debian の重要なツールの１つである APT について、1.1 に搭載された特徴をネタにして、いろいろ調べてみました。

3.2 Debconf15 のセッション
2015/8/15-8/22 で開催された Debconf15 のセッションで、APT1.1 のセッションが開かれました。こちらビデオが公開されていますので、興味ある方は是非ご覧ください。
ビデオ：”This APT has Super Cow Powers”

http://meetings-archive.debian.net/pub/debian-meetings/2015/debconf15/This_APT_has_Super_
Cow_Powers.webm

図1

Debconf15 の APT1.1 のセッションの様子

4

3.3 APT 1.1 を評価してみる
2015/8/22 現在、APT 1.1 は experimental リポジトリにあります。早速、試して見たい方は以下のようにすることで導入できます。
$ sudo vi /etc/apt/source.lists
deb http://ftp.jp.debian.org/debian/ experimental main contrib non-freedeb-src http://ftp.jp.debian.org/debian/ experimental main contrib non-free$ sudo apt-get update$ sudo apt-get -t experimental install apt$ apt
apt 1.1~exp9 (amd64)
Usage: apt [options] command... 中略...
full-upgrade - upgrade the system by removing/installing/upgrading packages
edit-sources - edit the source information file

手元の Debian sid 環境に導入してしばらく使っていますが、特に動作に問題は見当たりませんでした。apt

update,apt full-upgrade, apt autoremove など一通りの動作は問題なくできており、致命的なバグにも特に遭遇していません。是非お試しあれ。

3.4 APT 1.1 の特徴
jessie 搭載の APT 1.0.9.8 に比べての違いを述べてみます。
先に紹介した Debconf15 のビデオによれば以下の点が違いとなります。

• リポジトリの情報のセキュリティ検証が強化された。
• deb822 形式でリポジトリを指定するやり方にて機能強化。(/etc/apt/*.sources ファイル）• httpredir.debian.org を受けて、処理の途中経過の表示を変更。
• Pinning がちゃんと動くようになった。
• 依存関係をする場合、ローカルにおいた.deb ファイルを直接指定してもインストールでき、ソースビルドの依存関係を指定する方法が柔軟になった。
まずは、man apt、man apt-get で記載されている内容で、トピックを絞って違いを紹介します。

3.4.1 apt autoremove
APT1.1 に搭載された apt コマンドの autoremove 命令について説明します。
何かパッケージをインストールした場合、依存関係を満たすためだけにインストールされたパッケージが過去にあるとします。ここで、現在はその依存関係からも外されており、もはや全く使われていないパッケージがあります。
このコマンドをつけて apt コマンドを起動すると、こういった使われていないパッケージを削除することが出来ます。
$ sudo apt autoremove

3.4.2 autoremove 仕組み
autoremove はどのようにして消去すべきパッケージを見つけるのでしょうか？
依存関係が見当たらないパッケージの中には、利用者が自分で明示して入れたパッケージもあります。そのため、必ずしも他のパッケージで依存していないということだけを条件にして、autoremove でパッケージを消すようなことは避けなければなりません。autoremove により、自動で消去して良いパッケージを判断する基準は次の通りです。

Step 1. /var/lib/apt/extended states ファイルの記録に、過去、依存関係を満たすためにパッケージを導入したかどうかの記録である”Auto-Installed: 1” と記されているパッケージを消去の候補とする。

Step 2. すでにインストール済パッケージのどれからも依存関係に無いかどうか？
Step 3. さらに、5

• Recommends として提案されているパッケージはインストールして欲しいと明示した場合、• Suggest として提案されているパッケージはインストールして欲しいと明示した場合、のいずれにも該当していないか？
以上の Step 1.〜3. の判断を経たパッケージが、自動で消去して良いパッケージとして扱われます。

3.4.3 man apt-get との違い
次に man apt-get で見た 1.0.9.8 との違いについて紹介します。

• indextargets
apt-get update で更新されるファイルと状態を deb822 形式で表示します。
• –allow-downgrades
特定パッケージをダウングレードすることにより依存関係が満たせるときに、ユーザに尋ねず実行してまうというオプションです。

• –allow-remove-essential
何らかの理由により Debian システムの必須パッケージ（essential パッケージとして分類されている）ものを消せば依存関係が満たせるときに、消してよいか？を尋ねず消してしまうオプションです。

• –allow-change-held-packages
何らかの理由により Hold 扱いにしたパッケージを削除すれば依存関係が満たせるときに、消してよいか？
を尋ねず消してしまうオプションです。

• –no-allow-insecure-repositories
リポジトリにある Release ファイル (InRelease ファイル）の GPG による署名が確認出来ない等、セキュリティ上問題があるとみなされたリポジトリが含まれた場合、apt-get update 操作を失敗させます。

3.4.4 リポジトリ堅牢化
APT 1.1 はリポジトリのセキュリティの正当性評価が強化されています。正当性評価の元となるファイルにRelease ファイル (InRelease ファイル）があります。
$ curl http://cloudfront.debian.net/debian/dists/unstable/InRelease-----BEGIN PGP SIGNED MESSAGE----Hash: SHA256
Origin: DebianLabel: Debian... 中略...
MD5Sum:e9f9b477f2430a7d0e2dd686da1af507 30975818 Contents-amd64.gz
d158f809191a841bedf9ff50e34e0ebe 30421142 Contents-armel.gz... 中略...
-----BEGIN PGP SIGNATURE----Version: GnuPG v1iQIcBAEBCAAGBQJV1+IMAAoJEItIrWJGklVTgloP/0+XAch/TMtTSfH+N1QFl+q2
Woas1LpWhHDO12U6vuPq5wghCPYE5ctNuDxFtTy9j01lsf6kWXPDh1QupNENDNHr
lfZ7Qa9gFr8W3tH1tnPwsSqcQmu9bMkR0sRDVSfcFlDioVhN/h+jWW7j7J7nrZrE... 中略...

InRelease ファイルを見るとわかるとおり、• リポジトリに含まれる様々なファイルは全て md5sum 付きで InRelease ファイルに記録• さらに InRelease ファイルも電子署名による正当性確認が出来るようになっているとなります。
今回 APT1.1 では、基本的に InRelease ファイルの無い、あるいは、他に必要なファイルが欠落しているなど、セキュリティ観点からの正当性確認が出来ないリポジトリは取り扱いを完全にやめる設計にしたとのことです。

6

3.4.5 httpredir.debian.org 対応
2015/5 月頃、Debian ユーザに最も近い mirror サーバーを HTTP Redirect で apt に教えてくれるサービスが稼働しました。つまり、ユーザは/etc/apt/sources.list に、httpredir.debian.org を指定すれば、ユーザに最も近いmirror サーバーへリダイレクトされます。
ここで、リダイレクトされた結果どこのサーバから取得するのか？がわかると便利な事が多いです。このため、

APT1.1 の apt/apt-get はリダイレクトされた先の情報を表示するように変更されました。
3.4.6 参考：httpredir.debian.org の様子
httpredir.debian.org が何を返却するのかを以下に示します。
$curl -v http://httpredir.debian.org/debian/dists/sid/InRelease> GET /debian/dists/sid/InRelease HTTP/1.1> Host: httpredir.debian.org> User-Agent: curl/7.44.0> Accept: */*>< HTTP/1.1 302 Found< Date: Sat, 22 Aug 2015 03:54:12 GMT< Location: http://cloudfront.debian.net/debian/dists/sid/InRelease< Content-Type: text/plain... 省略...

見てのとおり、cloudfront.debian.net にリダイレクトが指示されるのが確認できると思います。
cloudfront.debian.net?



前ページのリダイレクト先にて、http://cloudfront.debian.net/ とリポジトリが提案されています。これは、2 年前に debian-cloud チームでアナウンスがあった、AWS の cloudfront という CDN の仕組みを使ってデータ配布を行う試みのリポジトリです。(https://lists.debian.org/debian-cloud/2013/05/msg00066.html)
もともと、CDN はユーザに最も効率的なサーバを提示してデータを配る仕組みであり、AWS の cloudfront は相当な規模とサービスエリアを持つ CDNサービスですので、そもそもこちらがあるなら、AWS のサービスがカバーしている国では、httpredir.debian.org を使わなくてすみそうな気もします。
しかしながら、ソフトウェア自由をモットーとする Debian としては、一企業のサービスに依存しないようにすることが重要ですので、Debian としては、httpredir.debian.org を維持・運用する必要があります。



3.5 deb822 形式
APT 1.1 では、deb822 形式でリポジトリを指定するやり方にて機能強化が図られました。ここでは、deb822 形式とはどんなものかを紹介します。

APT1.1 が手元にあれば、簡単に deb822 形式でリポジトリの情報を表示させる事が出来ます。
$ apt-get indextargets
MetaKey: main/source/Sources
ShortDesc: SourcesDescription: http://ftp.jp.debian.org/debian sid/main Sources
URI: http://ftp.jp.debian.org/debian/dists/sid/main/source/Sources
Filename: /var/lib/apt/lists/ftp.jp.debian.org_debian_dists_sid_main_source_Sources
Optional: noCodename: sid... 中略...

出力されるフォーマットを見るとわかるのですが、RFC822 ヘッダの形式によく似ています。ここから、deb822 と名前を取ったようです。
特徴として、RFC822 と同様ですので、ヘッダを増やせば、簡単に機能拡張できるという点が上げられます。
また、動作未確認ですが、DebConf15 のビデオによれば、/etc/apt/source.list.d/xxxx.sources（末尾が、.sources である事が必要）という名前で deb822 形式で置いておくと、こちらを sources.list に指定したのと同様の動作を apt/apt-get は行う都のことです。

7

3.6 牛さんパワー健在!
APT 1.1 にも”moo” 命令は健在です。息抜きに、こちらを紹介しておきます。
man apt には記載の無いオプションですが、以下に apt の場合の起動方法を載せます。
$ apt moo
$ apt moo moo [--color]$ apt moo moo moo$ faketime ’1997-04-01’ apt moo

図2

apt moo コマンド結果例

実行するとわかるのですが、ASCII キャラクタで描画された各種の牛の絵が表示されます。

3.7 おわりにまだまだ、APT1.1 について、今回ここでは書ききれない程の変更が加えられているようですが、このへんにしておきます。実際、git で落として差分を確認しましたが、実に 2 万行を超える変更が行われていました。正式リリースになって、ドキュメントも充実すると良いですね。

8

第 129 回 東京エリア Debian 勉強会 2015 年 8 月

4 会場での無線 LAN のつなぎ方
野島 貴英,Roger

4.1 はじめに今回試験として、会場側でフィルタ無しのグローバル回線を用意しました。ただ、会場側のセキュリティポリシーにより、wpa-psk AES hidden SSID という方式での提供となります。
以下に Debian マシンでの接続方法を記載します。
また、自分の環境では違うやり方でつながったという方は、野島まで教えて下さい。こちらでもノウハウとして溜めていく予定です。

4.2 wpasupplicant 及び/etc/network/interfaces を利用の場合
もっとも良いマニュアルは、/usr/share/doc/wpasupplicant/README.Debian.gz となります。困った場合はこちらも合わせてご参照下さい。
以下に/etc/network/interfaces の定義について会場の例を記載します。
$ sudo vi /etc/network/interfaces-----以下のエントリがなければ追記ここから---------iface wlan0_debian inet dhcpwpa-conf /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリがなければ追記ここまで---------$ sudo vi /etc/wpa_supplicant/wpa_supplicant_debian.conf-----以下のエントリを追記ここから---------network={
ssid=<<会場の SSID>>
psk=<<会場のパスワード>>
scan_ssid=1}-----以下のエントリを追記ここまで---------$ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant_debian.conf$ sudo ifup wlan0=wlan0_debian

ま た 、ハ マって し まった 時 の デ バッグ 方 法 は 、/usr/share/doc/wpasupplicant/README.Debian.gz 中 の”4.

Trubleshooting” の章が便利です。

4.3 その他の無線 LAN 用パッケージを利用の場合すみません、自分が情報を持たないため、現場で教えて下さい。

910

Debian 勉強会資料
2015 年 8 月 22 日
初版第 1 刷発行
東京エリア Debian 勉強会 （編集・印刷・発行）

11