第 69 回 関西 Debian 勉強会資料
関西 Debian 勉強会担当者 佐々木・ 倉敷・ のがた・ かわだ
2013 年 2 月 24 日
第 69 回 関西 Debian 勉強会 2013 年 2 月
1 Introduction
Debian JP
関西 Debian 勉強会は Debian GNU/Linux のさまざまなトピック (新しいパッケージ、 Debian 特有の機能の仕組、
Debian 界隈で起こった出来事、などなど)について話し合う会です。
目的として次の三つを考えています。
• ML や掲示板ではなく、直接顔を合わせる事での情報交換の促進
• 定期的に集まれる場所
• 資料の作成
それでは、楽しい一時をお楽しみ下さい。
1
関西Debian 勉強会
目次
1 Introduction 1
2 最近の Debian 関係のイベント報告 3
3 事前課題 4
4 Debian Installer トラブルシューティング 7
5 Ruby In Wheezy 13
6 月刊 Debian Policy「 オペレーティングシステム」その 2 16
7 今後の予定 17
8 メモ 18
2
第 69 回 関西 Debian 勉強会 2013 年 2 月
2 最近のDebian関係のイベント
報告
Debian JP
2.1 第 68 回関西 Debian 勉強会
68 回目の関西 Debian 勉強会は 1 月 27 日 (日) に国際奈良学セミナーハウス研修施設で行なわれました。
紀野さんの「 Using Drupal on Debian」は、 Drupal と Debian のお作法の違いがよくみえるよいセッションでした。
野方さんの「 月刊 Debian Policy オペレーティングシステム」は一回で収まらない内容だったので前半のユーザとグ
ループまでとなりました。 init スクリプト以降は次回となりましたので続きが楽しみです。
初の奈良開催でしたが、会場は奈良公園内近くの雰囲気のよい場所でした。今年は大阪以外の場所でも勉強会を開催した
いですね。
2.2 第 97 回東京エリア Debian 勉強会 2013 年 2 月勉強会 2013 OSC 出張
97 回目の東京エリア Debian 勉強会は 2 月 23 日 (土) にオープンソースカンファレンス 2013 Tokyo/Spring にて出
張版として開催されました。
セミナーでは野島さんによる「 Debian update - Debian の最新動向について語ります」の発表が行なわれました。
2.3 オープンソースカンファレンス 2013 Hamamatsu
2 月 9 日 (土) に浜松市市民協働センターで開催されたオープンソースカンファレンス 2013 Hamamatsu に東京エリア
Debian 勉強会でブース出展しました。
2.4 第 1 回 Debian パッケージング道場
2 月 9 日 (土) に京都大学で第 1 回目の Debian パッケージング道場が開催されました。
当日は 9 名の参加者が午前中に岩松さんから基本的なパッケージの作成方法と最新のパッケージング事情と使い方の説
明をうけ、午後から各自が思い思いのパッケージ作成を行ないました。
TitanPad に資料がまとめられていますので参照してみてください。 http://debian-pkg-dojo.titanpad.com/1
3
第 69 回 関西 Debian 勉強会 2013 年 2 月
3 事前課題
Debian JP
今回は以下の課題を出題しました.
1. リリースノートの「 付録 B. preseed を利用したインストールの自動化」
a
を読んできて下さい。
また、読んで気になる点などがあれば、教えて下さい。
2. Wheezy もしくは sid 環境に apt-get install ruby してきて下さい。
3. 普段 (業務もしくは趣味等) お使いの Ruby ソフトウェアがあれば、教えて下さい。
また、それが Debian パッケージになっていないならば、ご指摘下さい。
a
http://www.debian.org/releases/stable/i386/apb.html.ja
参加者の皆さんの解答は以下の通りです。
3.1 西山和広
1. ちゃんと読んでいたら長くなってしまったので https://gist.github.com/znz/831f7bd6b0c5eff06530 に
置きました。
B.1.1. hd-media の hd が何なのか気になりました。
B.2.1. インストーラが確実に正しい事前設定ファイルを取得するのに、このファイルのチェックサムを指定できます。
現在、これには md5sum 値の指定が必要です。指定した値と事前設定ファイルの値は一致しなければなりませ
ん。一致しない場合は、インストーラは事前設定ファイルを使用しません。
必須かどうかわかりにくいと思いました。
B.2.2. 注意
現在の Linux カーネル (2.6.9 以降) では、最大 (インストーラがデフォルトで指定するオプションを含め) コ
マンドラインオプションを 32 個、環境オプションを 32 個受け取れます。この数を超え ると、カーネルはパ
ニック (クラッシュ) してしまいます (以前のカーネルではこの数字がもっと少ないです)。
長さの制限があるのかどうか気になりました。
B.2.3. auto ブートラベルは、まだどこにも定義されていません。
「 auto url=...」というのが使えるのかどうかわかりませんでした。
B.2.5. この文字列で、ネットワーク上の全マシンに preseed でインストールするのではなく、特定のホストに対して
行うようにもできます。
この文字列とは?
B3 型と値の間はよくありません。
型はタイプ (質問タイプ) でしょうか?
4
B.4.1. 地域化 この方法は費用に使うのが容易ですが、言語、国、ロケールの利用可能な組み合わせをすべて preseed できる
わけではありません [29]。言語と国は、どちらもブートパラメータで指定できます。
費用に使うのが容易というところの意味が分かりませんでした。
B.4.5. パスワードを知っている事前設定ファイルが誰でもアクセスできるために、
「 事前設定ファイルが」は「 事前設定ファイルは」とか「 事前設定ファイルを」とかの方が良いのではないで
しょうか。
B.4.10. このパラメータの値は、カーネルコマンドラインにそのまま渡されるので、カンマか空白で区切ったパッケージ
のリストを取れます。
カーネルコマンドラインでは値に空白区切りは使えないはずなので、誤訳のように見えます。
B.5.2. この場合でも質問は行われます。
ここも誤訳でしょうか? 英語の方は「 質問済み状態のまま」 (だから質問されない) (ので後続の文で未質問状態
に戻す、と続く) という意味に見えます。
B.5.2. 派ケージ
typo?
B.5.3. 他のファイルでより確かな設定を指定する
specific を「 確かな」と訳すのはちょっと違うように感じました。
2. インストールしました。
3. nadoka という IRC の proxy のようなものを使っているのですが、新しいバージョンが Debian パッケージに
なっていません。
3.2 かわだてつたろう
1. 読んでみました。
preseed を使ったことはないのですが、警告があるようにパーティション分割がはまりそうな気がします。
2. してあります。
3. redmine, nokogiri, rabbit
3.3 山城の国の住人 久保博
1. はい、今から頑張ります。
2. はい。 schroot の中に作った sid 環境にインストールしておきます。
3. Redmine を使っています。
3.4 murase syuka
1. 軽く読んでみたが良く分からない
2. rvm で install 済み
3. rvm/irb(pry)/rails
3.5 のがたじゅん
1. はい読みました。が、いまだに HDD のパーティションの切り方がよくわかってなかったり。
http://www.nofuture.tv/linux/debianautoinstall
2. はい。入ってます。
3. tDiary を使ってます
5
3.6 よしだともひろ
1. 読んでおきます。
2. sid 環境で、 apt-get install ruby 実行しました。
3. rabbit くらいかも。
3.7 yyatsuo
1. 一通り読んでみました
2. Ruby 1.9.1 インストール済みです
3. 普段使うのは RedMine
今までに使ったことがあるのは Milkode と Termtter
3.8 佐藤誠
1. 今読んでます。
ちょっと試してみたいけど、時間が...(汗
2. 仮想環境の squeeze を、昨晩ようやく wheezy にあげました。
えーと、 ruby も入ってるはず (未確認)
3. tdiary でブログを書いています。
3.9 佐々木洋平
1. preceed よく使ってます
2. 普段から使ってます。そろそろ mruby と ruby2.0 を入れたいですね。
3. redmine と Jekyll がないと途方にくれます。あと、今回のプレゼンは rabbit です。
3.10 大林
1. 一通り読みました。
2. Wheezy の実験用環境にインストールしました。
ただネットワークの向こう側の VM の上なので、会場では使えないかもしれません。
会場でネットワークがもし使えればいけるのですが。
3. yard, rmagick, test-unit, NArray, depq など
3.11 kazuhito.sumpic
(無回答)
6
第 69 回 関西 Debian 勉強会 2013 年 2 月
4 Debian Installer トラブル
シューティング
Yuryu
4.1 自己紹介
• Yuryu (twitter: @Yuryu)
• 某社でインフラエンジニアしてます
• potato → woody → (浮気) → Ubuntu(Gusty) → ... → Ubuntu(Precise)
• 会社では Debian 使ってます
• 好きなコマンドは xargs
4.2 Preseed
4.2.1 Preseed とは
• Debian Installer の応答ファイル
• すべての選択肢が選べる
• PXE と組み合わせると強い
– 単体でも使えます (少々面倒)
locale=en_US language=en country=JP
console-keymaps-at/keymap=jp106
keyboard-configuration/xkb-keymap=jp106
interface=eth0 hostname=debian
domain=local url=http://holo.yuryu.jp/preseed.cfg
DEBCONF_DEBUG=5
4.2.2 boot オプションの必要性
• Preseed ファイルが読まれるのは、ネットワークの設定が終わってから
• ネットワーク設定前にもインストーラーの質問はある
• →ブートオプションとして渡す
• 長いので手打ちは無理、 PXE を使う
4.2.3 expert install
• expert options → automated install
• 途中で preseed ファイルを指定できる
7
• とりあえず試すにはこっち
4.2.4 url
• preseed ファイルの場所
• http, ftp, tftp で指定
• https は使えない (!)
4.2.5 ファイルの中身
•「 d-i 項目名 指定」の羅列
### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true
# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string Asia/Tokyo
# Controls whether to use NTP to set the clock during the install
d-i clock-setup/ntp boolean true
# NTP server to use. The default is almost always fine here.
d-i clock-setup/ntp-server string ntp.nict.go.jp
4.2.6 ファイルの書き方
• 基本的にはサンプル通り
• でも、いくつか落とし穴が...
– 一番大変なのが partitioning
4.3 partitioning
4.3.1 partitioning
• d-i partman-auto/choose recipe
– atomic - / 一発
– home - /home だけ分ける
– multi - /home, /usr, /var, /tmp
• d-i partman-auto/expert recipe
4.3.2 recipe
d-i partman-auto/expert_recipe string \
boot-root :: \
40 50 100 ext2 \
$primary{ } $bootable{ } \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext2 } \
mountpoint{ /boot } \
. \
500 10000 -1 ext4 \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ / } \
. \
64 512 300% linux-swap \
method{ swap } format{ } \
.
8
4.3.3 レシピ形式
レシピ名 ::
最低容量 (MB) 優先度 最大容量 FS
パーティション内容 .
500 1000 -1 ext4 \
method{ format } format{ } \
use_filesystem{ } filesystem{ ext4 } \
mountpoint{ /home }
4.3.4 容量
• 最大を -1 にすると空き容量をすべて使う
• 優先度は数字が大きなほうが低い
• 最小=最大にせず 100MB 程度の幅をもたせる
4.3.5 method
• format
– 通常通りフォーマットして使用
• swap
– スワップパーティションとして使用
• keep
– 何もせず区画だけ作る
4.3.6 ファイルシステム
• 容量の右側に書くものと、 filesystem{ }
• 基本的には同じ
• ext[2-4], xfs, btrfs, jfs, linux-swap
• keep のときは無視される (free でも ok)
4.3.7 お約束
• 冗長に見えても、省略できないもの
• format{ }
• use filesystem{ }
• filesystem{ ext4 }
4.4 ハマりました
4.4.1 primary
• $primary{ } プライマリ必須指定
• $logical{ } もありそう?
– 実は無い
– 省略すると logical になる
9
4.4.2 一行で書く
• 行末に \ を書いて、一行につなげて書く
• \ の後にスペースがあるとそこで切れます
4.4.3 レシピ名
• レシピ名が必須
• partman-auto/choose recipe とは無関係
– expert recipe 使うなら書いてはいけない
• 何を書いても動作に関係なし...
d-i partman-auto/expert_recipe string \
boot-root :: \
4.4.4 スペースの扱い
• 基本的にはスペース必須
• 開きカッコの手前はスペース不可
– ○ method{ format }
– × method { format }
• grep でパースしてるので厳格です...
4.4.5 レシピ、認識されてる?
• /tmp/expert recipe
• 実際に使われたレシピが入る
~ # cd /tmp
/tmp # ls
connection_type expert_recipe mdadm.conf
/tmp # cat expert_recipe
boot-root :: 40 50 100 ext3 #primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext3 }
mountpoint{ /boot } . 500 10000 1000000000 ext3 method{ format } format{ } use_filesystem{ } filesystem{ ext3 }
mountpoint{ / } . 64 512 300% linux-swap method{ swap } format{ } .
/tmp #
4.4.6 その他条件文
• $iflabel{ label } - ラベルが一致
• $defaultignore{ } - LVM を使わない時無視
• $lvmok{ } - LVM にしても良い
• $lvmignore{ } - LVM の場合は無視
4.4.7 パーティション再利用
• 既存のパーティションを再利用
• $reusemethod{ }
– method(format, swap) が同一なら再利用
– 主に biosgrub, swap 向け?
• $iflabel{ label } と組み合わせる
• http://lists.debian.org/debian-boot/2011/04/msg00333.html
10
4.5 その他 troubleshoot
4.5.1 d-i じゃない行もある
• d-i で始まらない行もある
– tasksel
– popularity-contest
• コピペ事故に注意
4.5.2 止まったら
• syslog を確認
• INPUT ... の行がパラメーター名
4.5.3 ログ
• Alt+F4 のログ
• インストール中 /var/log/syslog
• インストール後 /var/log/installer/syslog
• DEBCONF DEBUG が必須
4.5.4 こわくないよ
• debian installer の実態はシェルスクリプト
• 各ディレクトリを for で順に呼んでる
• 項目名で grep してみるとヒントが
4.5.5 debian/*.templates
• debian-installer の各種パッケージの debian/*.templates
• 変数名、型、説明が揃ってる
• リファレンス代わりになります
Template: partman-partitioning/bootable_logical
Type: boolean
Default: false
# :sl2:
_Description: Are you sure you want a bootable logical partition?
You are trying to set the bootable flag on a logical partition. The
4.5.6 debconf-get-selections
• インストール済み OS から設定を取得
• debconf-get-selections –installer
• デフォルト値も含めて大量に出る
– 必要な物を取捨選択する必要あり
4.5.7 Ubuntu 対応
• 基本的には同じ
• いくつか追加の質問
– d-i pkgsel/update-policy select none
11
– d-i user-setup/allow-password-weak boolean true
– d-i user-setup/encrypt-home boolean false
• 詳しくは https://help.ubuntu.com/lts/installation-guide/i386/preseed-contents.html
4.6 まとめ
• 困ったら syslog を観る
• recipe はスペースに気をつける
• DEBCONF DEBUG=5 重要!
12
第 69 回 関西 Debian 勉強会 2013 年 2 月
5 Ruby In Wheezy
佐々木洋平
次期安定版 Debian 7.0 (Wheezy) における Ruby 環境について、特に複数の Ruby 実装の共存と Gem とのお付き合
いの仕方について、簡単にお話しします。
5.1 “Ruby” in Wheezy
Ruby には複数の実装が存在しています。 Debian Wheezy では以下の Ruby インタープリタが使用できます:
インタープリタ パッケージ名 注意書き
MRI 1.8.7 ruby1.8
MRI 1.9.3 ruby1.9.3 ruby1.9.1 パッケージの実態は ruby1.9.3 だったりします。
JRuby jruby パッケージは Debian Java Maintainers によって管理されています
Rubinius rubinius 現在作業中です. ITP#591817
mruby mruby 現在作業中です. ITP#697835
「
ruby1.9.1
パッケージの実態は
ruby1.9.3
だったりします。」について、
Ruby
の
soname
が変わっていないので
libruby1.9.1 等のパッケージが残っており、 ruby1.9.3 パッケージは /usr/bin/ruby1.9.1 への symbolic link を
提供するだけだったりします。
% dpkg -S ruby1.9.3
ruby1.9.3: /usr/bin/ruby1.9.3
ruby1.9.3: /usr/share/man/man1/ruby1.9.3.1.gz
ruby1.9.3: /usr/share/doc/ruby1.9.3
ruby1.9.3: /usr/share/doc/ruby1.9.3/NEWS.Debian.gz
ruby1.9.3: /usr/share/doc/ruby1.9.3/NEWS.gz
ruby1.9.3: /usr/share/doc/ruby1.9.3/changelog.Debian.gz
ruby1.9.3: /usr/share/doc/ruby1.9.3/changelog.gz
ruby1.9.3: /usr/share/doc/ruby1.9.3/copyright
ruby1.9.3: /usr/share/doc/ruby1.9.3/README.gz
% ls -la /usr/bin/ruby1.9.3
lrwxrwxrwx 1 root root 9 Feb 23 23:44 /usr/bin/ruby1.9.3 -> ruby1.9.1*
他にも、 Topaz や HPC Ruby Compiler など、 (個人的に) 気になる実装がありますが、まだ Debian でどうこうと
いうお話にはなっていません。
5.2 複数の Ruby 実装の切り替え
さて、これだけ複数の Ruby 実装があると、それを切り替えて使いたくなるのが人情だと思います。 Debian に
は、同じ機能を提供するソフトウェアをきりかえる update-alternatives という仕組みが既にあります。ですが、
/usr/bin/ruby を切り替えたら gem や irb なんかも切り替えたくなるでしょう。そのため、これらを一度に変換する
ためのコマンドが提供されています。
13
5.2.1 システム全体でデフォルトの Ruby を切り替えるには?: ruby-switch
システム全体でデフォルトの Ruby インタープリタを選択するために、 ruby-switch パッケージが使用可能です。 こ
れは root として (もしくは sudo を使って) 実行する必要があります。
# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
# ruby-switch --list
ruby1.8
ruby1.9.1
# ruby-switch --set ruby1.9.1
update-alternatives: using /usr/bin/gem1.9.1 to provide /usr/bin/gem (gem) in manual mode.
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode.
# ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
# ruby-switch --auto
update-alternatives: using /usr/bin/ruby1.8 to provide /usr/bin/ruby (ruby) in auto mode.
update-alternatives: using /usr/bin/gem1.8 to provide /usr/bin/gem (gem) in auto mode.
# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
5.2.2 ユーザ毎にデフォルトの Ruby インタープリタを選択するには: rbenv
ユーザアカウント毎にデフォルトの Ruby インタープリタを切り替えるには、 rbenv パッケージを使うのが良いで
しょう。
% ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
% rbenv init
# Load rbenv automatically by adding
# the following to ~/.bash_profile:
eval ‘‘$(rbenv init -)"
% echo ’eval ‘‘$(rbenv init -)"’ >> ~/.bash_profile # or ~/.bashrc, depends on your setup
% rbenv versions
% rbenv alternatives
% rbenv versions
1.8.7-debian
1.9.3-debian
% rbenv global 1.9.3-debian
% ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
一見ちゃんと動作していないように見えますが、これは現在実行中のシェルが ”ruby” の位置として /usr/bin/ruby を
キャッシュしているからです。新しいシェルを開始した後には、デフォルトの Ruby を行ったり来たり切り替えることが
できます。
% ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
% rbenv global 1.9.3-debian
% ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
% rbenv global 1.8.7-debian
% ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
5.2.3 Debian パッケージになっていない Ruby をインストールするには: ruby-build
ruby-build を使用することで、 Debian でまだ使用可能になっていない Ruby インタープリタをインストールするこ
とができます。しかしながら、このパッケージの README.Debian ファイルに書かれている内容に注意して下さい:
While ruby-build is a great tool to build Ruby versions that are not
available via APT, you should still use the Debian-packaged versions
of Ruby whenever possible since they are tested and supported by the
Debian community.
Please do not report bugs you encounter while using your homebuilt
Rubies to the Debian team; Rubies built by yourself are not supported.
というわけで、詳細は man ruby-build ということで。
14
5.3 Debian における Ruby パッケージング
Debian では Ruby 本体のパッケージングは pkg-ruby チーム、 Gem 等で配布されている (拡張) ライブラリやアプ
リケーションは pkg-ruby-extras チームによってメンテされています。次の話題は pkg-ruby-extras チームが良く
やっていること、すなわち Gem で配布されている Ruby (拡張) ライブラリの Debian パッケージ化について、です。
5.4 Gem パッケージを Debian パッケージに: gem2deb
Gem で配布されている Ruby (拡張) ライブラリは gem2deb を用いることで Debian パッケージに変換可能です。た
いていの場合は。 gem2deb によるお手軽パッケージングの成功率は perl の dh make perl
*
1
ぐらい、だと思って下さ
い (もっと低いかも)。
たとえば hogehoge という gem を Debian パッケージにしたい場合には
% sudo apt-get install gem2deb
...
% gem fetch hogehoge
...
% gem2deb hogehoge[version].gem
...
% sudo dpkg -i ruby-hogehoge_[version].deb
で良い筈です。ちなみにこれらは MRI 1.8.7, MRI 1.9.3 向けのパッケージとなります。
5.5 まとめ...?
当日の demo をふまえて、後日加筆修正する予定です。
*
1
CPAN にある perl ライブラリ/モジュールを Debian パッケージにするコマンド
15
第 69 回 関西 Debian 勉強会 2013 年 2 月
6 月刊 Debian Policy「 オペ
レーティングシステム」その
2
担当: のがた
すみません。今回お休みです。
16
第 69 回 関西 Debian 勉強会 2013 年 2 月
7 今後の予定
Debian JP
7.1 関西 Debian 勉強会
次回、記念すべき 70 回目となる第 70 回関西 Debian 勉強会は 3 月 24 日 (日) に港区民センターで行ないます。セッ
ションは GNOME の松澤さんとあわしろいくやさん、お二人による GNOME3 話二本立てです。
7.2 東京エリア Debian 勉強会
第 98 回東京エリア Debian 勉強会は 3 月 16 日 (土) に開催される予定です。
17
第 69 回 関西 Debian 勉強会 2013 年 2 月
8 メモ
18
関西Debian 勉強会
Debian 勉強会資料
2013 年 2 月 24 日 初版第 1 刷発行
関西 Debian 勉強会( 編集・ 印刷・ 発行)
19