東京エリア Debian 勉強会
第 129 回 2015 年 8 月度
野島貴英2015 年 8 月 22 日

設営準備にご協力ください。

会場設営よろしくおねがいします。

Agenda

注意事項
写真はセミナールーム内のみ可です。
出入りは自由でないので、もし外出したい方は、野島まで一声くださいませ。

事前課題発表最近あった Debian 関連のイベント報告
第 128 回 東京エリ
ア Debian 勉強会

APT1.1 超☆牛さんパワー炸裂!
今後のイベント
今日の宴会場所

事前課題

野島

1

Q.hack time に何をしますか？
A. 今度こそ!Nook HD+を Debian に。

2(オプション)Q. 何について聞きたい／参加者と話をしたいですか？
A. 俺と Debianzinrai

1

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

wskoka

1Q.hack time に何をしますか？
A. tilegx への移植

2(オプション)Q. どこで今回の勉強会の開催を知りましたか？
A. その他issei1

Q.hack time に何をしますか？
A. dgit の使い方をマスターする。

khibino

1

Q.hack time に何をしますか？
A. Debian haskell チームへの参加について調べる

2(オプション)Q. どこで今回の勉強会の開催を知りましたか？
A. 友達や知り合いから直接Roger Shimizu

1

Q.hack time に何をしますか？
A. Debian BTS の確認など

2(オプション)Q. どこで今回の勉強会の開催を知りましたか？
A. その他

yy y ja jp

1

Q.hack time に何をしますか？
A. DDTSS
http://ddtp.debian.net/ddtss/index.cgi/ja

2(オプション)Q. 何について聞きたい／参加者と話をしたいですか？
A. DDTSS

3(オプション)Q. どこで今回の勉強会の開催を知りましたか？
A. その他

イベント報告第 128 回東京エリア Debian 勉強会

場所はスクウェア・エニックスさんのセミナルームをお借りしての開催でした。
参加者は 6 名でした。
セミナ内容は野島さんによる「Debian で HTTP/2 を試す」でした。
残りの時間で hack time を行い、成果発表をしました。
宴会の代わりに、「中国料理 東順永 本店」で夕食会をやりました。

第 128 回東京エリア Debian 勉強会 (つづき)

セミナは野島さんより、Debian で HTTP/2 を試す事について発表がありました。内容としては、HTTP/2 の規格概要、デモ、Debian で最も簡単に HTTP/2 対応サーバを動かしてみる等となりました。
今年 RFC 化される、あるいは、某有名携帯端末の会社のイベントで HTTP/2 を使って欲しいアピールがあったなど、HTTP/2 が少しづつ推される (あるいはいつの間にか使っている？）場面も、今後増えてくるかと思います。Debian があればサーバ稼働も含めてすぐに試せますので、皆様も是非！

第 128 回東京エリア Debian 勉強会 (つづき)また、参加者の中で、hacktime 中に書いた Linux Kernel 向けパッチが取り込まれた、Bug Report した内容がLWN/Gigazine に取り上げられた等、いろいろな形で成果を出された旨の報告がありました。こういった方々がいらっしゃるのは正直凄い事だと思います。

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

APT1.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 に搭載された特徴をネタにディスカッションしてみようと思います。

Debconf15 でも今回の debian-devel-announce でも触れられていますが、2015/8/15-8/22 にて、ドイツの Heidelberg で開催中の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

早速評価してみる！

$ 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

動いた!

APT 1.1 の特徴は？

jessie 搭載の APT 1.0.9.8 に比べての違いを述べていきます。

APT 1.1 の特徴は？(概要から)先に紹介した DebConf15 のビデオを見ると以下の点が変更点概要となります。
リポジトリの情報のセキュリティ検証がとても強化された。

deb822 形式でリポジトリを指定するやり方にて機能強化。(/etc/apt/*.sources ファイル）
httpredir.debian.org を受けて、処理の途中経過の表示を変更。
Pinning がちゃんと（笑）動くようになった。
依存関係をする場合、ローカルにおいた.deb ファイルを直接指定してもインストールでき、ソースビルドの依存関係を指定する方法が柔軟になった。

APT 1.1 の特徴は？(man から)

man からみた 1.0.9.8 との違いのうち、apt コマンド
apt-get コマンドについてここでは述べてみます。

APT 1.1 の特徴は？(man から)

まずは man apt で見た 1.0.9.8 との違いから...

autoremove
依存関係を満たすためだけにインストールされたパッケージがあるとします。ここで、現在はその依存関係からも外されており、もはや全く使われていないパッケージがあります。このコマンドをつけて apt コマンドを起動すると、こういった使われていないパッケージを削除することが出来ます。

autoremove 仕組み

もちろん、パッケージの中には、利用者が自分で明示して入れたパッケージもあり、必ずしも他のパッケージで依存していなからといって autoremove で消されたら困ってしまいます。

autoremove 仕組み (つづき 1)

自動で消してもよいか？についての判断基準:

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

autoremove 仕組み (つづき 2)

Step 3. さらに、Recommends として提案されているパッケージはインストールして欲しいと明示した場合、Suggest として提案されているパッケージはインストールして欲しいと明示した場合、のいずれにも該当していないか？の場合、自動削除候補のパッケージとなります。

APT 1.1 の特徴は？(man から)

次に man apt-get で見た 1.0.9.8 との違いから...

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

APT 1.1 の特徴は？(man から)–allow-remove-essential
何らかの理由により Debian システムの必須パッケージ（essential パッケージとして分類されている）ものを消せば依存関係が満たせるときに、消してよいか？を尋ねず消してしまうオプションです。
–allow-change-held-packages
何らかの理由により Hold 扱いにしたパッケージを削除すれば依存関係が満たせるときに、消してよいか？
を尋ねず消してしまうオプションです。
–no-allow-insecure-repositories
リポジトリにある Release ファイル (InRelease ファイル）の GPG による署名が確認出来ない等、セキュリティ上問題があるとみなされたリポジトリが含まれた
場合、apt-get update 操作を失敗させます。

牛さんパワー

apt/apt-get コマンドには”moo” という man には無いオプションがあります。以下に apt の場合の起動方法を載せます。
$ apt moo
$ apt moo moo [--color]$ apt moo moo moo$ faketime ’1997-04-01’ apt moo

牛さんパワー (つづき)リポジトリ堅牢化
今回、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 v1
iQIcBAEBCAAGBQJV1+IMAAoJEItIrWJGklVTgloP/0+XAch/TMtTSfH+N1QFl+q2
Woas1LpWhHDO12U6vuPq5wghCPYE5ctNuDxFtTy9j01lsf6kWXPDh1QupNENDNHr
lfZ7Qa9gFr8W3tH1tnPwsSqcQmu9bMkR0sRDVSfcFlDioVhN/h+jWW7j7J7nrZrE... 中略...

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

httpredir.debian.org 対応

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

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?

前ページのリダイレクト先にて、http://cloudfront.debian.net/ とリポジトリが提案されています。これは、2 年前に debian-cloud チームでアナウンスがあった、https://lists.debian.org/debian-cloud/2013/05/msg00066.html AWS の cloudfrontという CDN の仕組みを使ってデータ配布を行う試みのリポジトリです。

ここで横道：え？cloudfront?（つづき)もともと、CDN はユーザに最も効率的なサーバを提示してデータを配る仕組みであり、AWS の cloudfront は相当な規模とサービスエリアを持つ CDN サービスですので、そもそもこちらがあるなら、AWS のサービスがカバーしている
国では、httpredir.debian.org を使わなくてすみそうな気もします。

deb822って？？

APT1.1 が手元にあれば、簡単に表示させる事が出来ます。

$ apt-get indextargets
MetaKey: main/source/Sources
ShortDesc: Sources
Description: 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_So
Optional: noCodename: sid... 中略...

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

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

今後のイベント

今後のイベント

関西エリア Debian 勉強会

9/5(土) 10:00- OSC 2015 Niigata でセミナ＆ブース
http://www.ospn.jp/osc2015-niigata/9/12(土) 10:00- 東京エリア Debian 勉強会 パッケージング道場（←仮題。東京）

宣伝：パッケージング道場

毎年恒例の Debian 公式開発者（岩松）直伝によるパッケージング道場が開催されます!

Debian の動くノート PC さえあれば誰でも参加可能です。
Debian の公式パッケージの出し方を一気に習得できるチャンスです！そこの貴方も是非（笑）

今日の宴会場所

今日の宴会場所

未定