pbuilder, cowbuilder, lxcで作るお手軽サンドボックス

1,747
-1

Published on

20120728 第1回福岡debian勉強会

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,747
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

pbuilder, cowbuilder, lxcで作るお手軽サンドボックス

  1. 1. pbuilder, cowbuilder,lxcで作るお手軽サンド ボックス第1回福岡Debian勉強会 (2012-07-28) やまだつよし
  2. 2. 自己紹介やまだつよし●twitter: @minimum2scp●fb: fb.me/minimum2scp●インフラエンジニア●Debian,Rubyとかが好き
  3. 3. もっと自己紹介: OS● Debianユーザー歴: 10年くらい(woodyから)● 自宅デスクトップPC: Windows7● 自宅ノートPC: Debian unstable● 自宅サーバ: Debian unstable● さくらVPS: Debian unstable● 会社デスクトップPC: Debian unstableときどき Windows● 会社サーバ: Debian stable, old stable, old old stable, ... ときどき Gentoo, FreeBSD, Ubuntu, CentOS
  4. 4. もっと自己紹介: Debian歴● 2002ごろ: はじめてのDebian (woody)● 2003-2004: stableからtesting, そして unstable 使いへ● 2005-: 社会人。会社のサーバにDebian (sarge) をたくさん入れはじめる● 2007-: Debian(etch)+Xenでサーバー仮想化。 もっともっとたくさんのDebianをインストールする ようになる● 2012: 第0回福岡Debian勉強会、大統一Debian 勉強会、そして今日!
  5. 5. もっと自己紹介: 最近最近やったこと(Debianネタ)● 会社のプロジェクトでperlモジュールを中心に パッケージたくさん作った● ファイルサーバに置いて、必要なときはdpkg -i で入れる。面倒だし管理できない● repreproで会社で作ったパッケージのリポジトリ を実験的にたててみた● できたような気がするけどこれから会社のメン バーにどう伝えていこうかなというところ
  6. 6. 今日のお題● サンドボックス● pbuilder● cowbuilder● lxcゆるーく話すので適当にその場でつっこみ入れてください
  7. 7. サンドボックスがほしい● experimentalのApache2.4を試してみたい● lsyncdおもしろそう● 最新のRubyをソースからビルドしてみたい● とりあえずインストールしてみたい● いろいろ試行錯誤してみたいそして、なかったことにしたいということありますよね…?
  8. 8. サンドボックスがほしい「なかったことにしたい」ができるととても気が楽になるXenやKVMで仮想化するのは大袈裟そこでpbuilderとcowbuilderクラウドは今回禁句です
  9. 9. pbuilderとは● debootstrapで作成される最小のDebian chroot 環境でパッケージをビルドするための仕組み● chroot環境は使い捨て● chrootの支援+クリーンルームでのビルド
  10. 10. パッケージのビルド% apt-get source foo# apt-get build-dep foo% cd foo-x.x% ...% debuild -rfakeroot -us -ucBuild-Depends: ビルド依存パッケージのインストールが必要
  11. 11. pbuilderとはbase.tgz (chrootを固めたtarball) を作成:# pbuilder --create [options]base.tgz を展開して chroot してビルド:# pbuilder --build [options] foo_X.X-X.dscあるいは# pdebuild [options] -- -rfakeroot -uc -us
  12. 12. pbuilderとは● Debian chroot環境をふだんはtarballに固めて 保持● ビルド時にtarballを展開してchrootし、その中に Build-Dependsをインストール、そしてパッケー ジをビルドする● ビルド完了するとバイナリパッケージを残してビ ルド環境はまるごと削除される● FTBFSを検出できる● パッケージ開発者のためのツール?● いいえ、シェルが使えます!
  13. 13. pbulder --loginbase.tgzを展開、chrootした中でシェルを起動シェルを抜けるとchroot環境は破棄される# pbuilder --loginシェルを抜けたあとbase.tgzに書き戻すこともできる# pbuilder --login --save-after-loginbase.tgzのアップデート# pbuilder --update
  14. 14. pbuilder: デモ
  15. 15. pbsetup.shpbuilder --login後に、いつもの使いなれた道具をそろえる● 一般ユーザー作成● ロケール生成● zsh, vim● etckeeper, git● その他いろいろをセットアップするシェルスクリプトを生成するシェルスクリプト
  16. 16. pbsetup.sh デモ
  17. 17. pbuilderからcowbuilderへこれだけでも十分便利だけれど、tarballの展開や、tarballの書き戻しをCOW(CopyOn Write)で置き換えて高速化するcowbuilderというものもあるむしろ普段はcowbuilderを常用している
  18. 18. cowbuilderbaseを作成:# cowbuilder --create [options]ビルド:# cowbuilder --build [options] foo_X.X-X.dscあるいは# pdebuild --pbuilder cowbuilder -- -rfakeroot -uc -us
  19. 19. cowbuilderしくみ:● 初回はdebootstrapでbaseを作成● ビルドするときはbaseをbase.NNNNNにcp -al (ハードリンク)● base.NNNNNにchroot● LD_PRELOADにlibcowdancer.soが指定され たプロセスがビルドする● libcowdancer.soがファイルのWriteを検知して 新しいファイルにすりかえる● ビルドがおわったらbase.NNNNNを破棄
  20. 20. cowbuilderもちろんビルドだけじゃなくシェルも使える:# cowbuilder --login [options]破棄せずにbaseを書き戻す:# cowbuilder --login --save-after-login[options]baseを更新する# cowbuilder --update
  21. 21. cowbuilder デモ
  22. 22. pbuilder, cowbuilder -> lxc● pbuilder: tarballなので使わないときのサイズは 小さい● cowbuilder: 起動が早いのでpbuilderよりもっと 気楽に使える● どちらも結局chroot。それ以上のことはできない (カーネル、ネットワーク、リソース制御...)そこでlxc
  23. 23. lxc● Linuxコンテナ● 仮想化方式のひとつ● chroot + α● ネットワークやプロセスが分離できる● カーネルは共有
  24. 24. lxcで実験できるようにするcowbuilder で使っている base をコピーしてきてlxcのrootfsにする● /etc 以下はごにょごにょと変更する● /dev 以下をちょっとmknodするあとはlxcのconfigを書く
  25. 25. lxcsetup.sh デモ
  26. 26. まとめ● pbuilderはパッケージをクリーンルームでビルド してFTBFSを検出するツール● シェルを起動してやると気軽に実験できるサンド ボックスのようにも使える● cowbuilderを使ってもっと気軽に実験● cowbuilderのbasepathからlxcのrootfsを作って lxcで実験するなんてことも
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×