Contenu connexe
Similaire à 今最もアツイdistribution Gentoo Linuxについて
Similaire à 今最もアツイdistribution Gentoo Linuxについて (20)
Plus de Takuto Matsuu (9)
今最もアツイdistribution Gentoo Linuxについて
- 2. 自己紹介
● 松鵜 琢人(まつう たくと)
○ matsuu(twitter)
○ tmatsuu(はてな)
● Gentoo Linux Developer
● タイル型ウィンドウ
マネージャ推進委員会
● 最近は翻訳にも少しずつ手を出しています
● ネットワーク屋を経てWeb系プログラマー
● 勉強会に積極的に参加してる(つもり)
● 単館系映画好き。映画館で年間100本以上見る
- 3. Gentoo Linuxとは
● Daniel Robbinsが創設したディストリビューション
○ http://www.gentoo.org/
● 2002年3月31日にGentoo Linux 1.0がリリース
● 日本で広がるきっかけはSoftwareDesign 2002年7月号
● RedHat系でもDebian系でもSlackware系でもない独自路線
● Portageと言われるソースベースのパッケージシステム
○ rpmでいえばspecファイルのみ配布しているイメージ
○ 各マシンでバイナリをコンパイルして生成
● 様々なCPUアーキテクチャをサポート
○ 移植が容易
○ ARMやPlayStation3でも動作可能
● 柔軟性が高いためメタディストリビューションと呼ばれる
○ Gentoo Prefixプロジェクト
○ Google ChromeOSもGentoo(Portage)がベース
● 現在日本人のGentoo Developerは3人(ぐらい)
- 9. Gentooの強み その1
● 新しいパッケージを積極的に取り込む
○ 14804パッケージ(2011/08/05現在)
● バージョンはどんどん上げていく
○ ローリングアップデート
● パッケージ作成コストが低い
● すべてのパッケージをソースからインストールする
● カスタマイズ性が高い
● ライセンス問題、商用アプリ対応可能
○ 再頒布しないので多くのライセンス問題を回避できる
○ 商用アプリもパッケージシステムで対応可能
■ ATOK X3 for Linuxは対応済
● 様々なCPUアーキテクチャに対応している
- 10. Gentooの強み その2
● WebアプリもPortageのシステムで管理・デプロイできる
○ webapp-configコマンドで
● Perlモジュールのパッケージを自動生成するg-cpanコマンド
○ パッケージに含まれていないPerlモジュールも対応できる
○ g-cpanの他にもいくつかある
■ g-ctan(TEXLive)
■ g-octave(GNU Octave)
■ g-pypi(Python)
■ g-cran(R)
■ hackport(Haskell)
● rpmやdebでしか配布されていないパッケージも対応可能
○ Flash Player,Adobe Reader,google-talkplugin
- 11. ソースからインストールってどういうこと?
● configure && make && make installを自動化
● rpmで言えば、src.rpmのbuildとrpmインストールを
一気にやるイメージ
● configure時オプションをカスタマイズできる
○ --enable-foo, --with-barなど
● コンパイル時オプションをカスタマイズできる
○ CFLAGS, LDFALGSなど
● 基本パッケージなどもない、すべてコンパイル
○ 依存関係も含めてすべて自動でインストールさ
れるので手間はかからない
- 12. USEフラグによるカスタマイズ
● 例えばphpでカスタマイズできる項目は・・・
adabas apache2 bcmath berkdb birdstep bzip2 calendar cdb
cgi cjk cli crypt ctype curl curlwrappers db2 dbmaker debug doc
embed empress empress-bcs enchant esoob exif fileinfo filter
firebird flatfile fpm frontbase ftp gd gd-external gdbm gmp hash
iconv imap inifile interbase intl iodbc ipv6 json kerberos kolab
ldap ldap-sasl libedit mhash mssql mysql mysqli mysqlnd nls
oci8 oci8-instant-client odbc pcntl pdo phar pic posix postgres
qdbm readline recode sapdb session sharedext sharedmem
simplexml snmp soap sockets solid spell sqlite sqlite3 ssl
suhosin sybase-ct sysvipc threads tidy tokenizer truetype
unicode wddx xml xmlreader xmlrpc xmlwriter xpm xsl zip zlib
- 13. 現在対応しているアーキテクチャ
alpha, amd64, amd64-
fbsd, arm, hppa, ia64, m68k, mips, ppc, ppc64, s390
, sh, sparc, sparc-fbsd, x86, x86-fbsd
以下はPrefix
ppc-aix, x86-freebsd, x64-freebsd, sparc64-
freebsd, hppa-hpux, ia64-hpux, x86-interix, mips-
irix, amd64-linux, arm-linux, ia64-linux, x86-
linux, ppc-macos, x86-macos, x64-macos, m68k-
mint, x86-netbsd, ppc-openbsd, x86-openbsd, x64-
openbsd, sparc-solaris, sparc64-solaris, x64-
solaris, x86-solaris, x86-winnt, x86-cygwin
- 14. パッケージ管理のコマンド
RedHat Debian Gentoo
(yum) (aptitude) (emerge)
パッケージの yum install foo aptitude install foo emerge foo
インストール
パッケージの yum update aptitude update emerge --sync
アップデート aptitude upgrade emerge -u world
パッケージの yum remove foo aptitude remove foo emerge -C foo
アンインストール
パッケージの yum search foo aptitude search foo emerge -s foo
検索
- 15. Gentooの弱み
● インストーラーが存在しない
● バージョンはどんどん上げていく
○ ライブラリのバージョンがあがると動かなくなる可能性
● パッケージはすべてソースからコンパイルする
○ 時間がかかる
○ パッケージのインストールに失敗することがある
● OSの商用サポートは期待できない
○ 海外では昔は商用サポートがあったが今はない
● Gentoo対応の商用パッケージなんて聞いたことがない
● 開発者不足
○ バージョンアップが停滞しているパッケージがちらほら
○ Linux界の極左であるため、内ゲバが絶えない
■ 最近はそんなことないよ
- 18. 共有ライブラリのバージョンについて
● libtool方式の場合 libhoge.so.x.y.z
○ 0:0:0から始まる(current:revision:age)
1. ライブラリのソースが変更された→r++
2. インタフェースが追加or削除or変更された→c++, r=0
3. インタフェースが追加された→a++
4. インタフェースが削除された→a=0
● 例えばlibhoge.so.3.12.1が・・・
○ 3.13.1になった→ソースは変更されたが仕様変更なし
○ 4.0.0になった→一部仕様が削除された
○ 4.0.1になった→一部仕様が変更された
○ 4.0.2になった→一部仕様が追加(+変更)された
● http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
- 19. 時間がかかる問題の対策
● ccacheを使う
○ http://ccache.samba.org/
○ コンパイル結果をキャッシュするccacheを使う
○ 2回目以降のコンパイルが劇的に早くなる
● distccを使う
○ http://www.distcc.org/
○ ネットワーク越しに分散コンパイルする
○ PCが2台以上あるならコンパイル時間が短縮できる
○ クロスコンパイル環境にも対応
● バイナリパッケージを作る(binpkgs)
○ ただし全く同じ設定のサーバが複数台ある場合のみ意味が
ある
- 20. ccache
● コンパイル結果をキャッシュ、過去にコンパイルしたことがあるも
のはキャッシュを再利用して高速化
● C/C++/Objective-C/Objective-C++に対応
● 使い方
# cp ccache /usr/local/bin/
# ln -s ccache /usr/local/bin/gcc
# ln -s ccache /usr/local/bin/g++
# ln -s ccache /usr/local/bin/cc
# ln -s ccache /usr/local/bin/c++
● あとは普通に
$ gcc hoge.c
● 2回目以降のコンパイルで効果を発揮
● GCCにしか対応していない
- 21. distccについて
● ソースコードのコンパイルを他のサーバに丸投げすることでコンパイル
時間の短縮を図るプログラム
● C/C++/Objective-C/Objective-C++に対応
● gccの互換性に注意
● 使い方
# cp distcc /usr/local/bin/
# ln -s distcc /usr/local/bin/gcc
# ln -s distcc /usr/local/bin/g++
# ln -s distcc /usr/local/bin/cc
# ln -s distcc /usr/local/bin/c++
● あとは普通に
$ gcc hoge.c
● ccacheを組み合わせて動作させることも可能(pumpモード除く)
- 23. Gentooのセキュリティ対応
● セキュリティアドバイザリを発行している
○ GLSA(Gentoo Linux Security Advisory)
● GLSAの発行までの流れ
○ Bugzillaにセキュリティの報告があがる
○ なんとかして直す
■ 直せない場合は放置もしくはパッケージ削除
○ 直ったらGLSAを発行するか協議(vote)する
■ これが最近グダグダ
■ 他のディストリビューションがSAを発行したら発行?
■ 小物アプリなら大丈夫ですよ
○ GLSAが発行されたものだけアップデートするツールがある
■ glsa-check
○ が、上記のとおりなのであまり意味ないこ
- 26. Gentooパッケージの作り方
● 後発であるが故にとてもわかりやすいパッケージ
● 拡張子は.ebuild
● 中身はbashスクリプト
● 主な設定内容
○ ソースファイルの場所をSRC_URI変数に書く
○ DEPEND,RDEPENDに依存関係を書く(省略可)
○ src_unpack()にソースの解凍方法を書く(省略可)
○ src_prepare()にパッチを適用する(省略可)
○ src_configure()にconfigure関連の設定を書く(省略可)
○ src_compile()にmake関連の設定を書く(省略可)
○ src_install()にmake install関連の設定を書く(省略可)
● 極端な話、SRC_URIを書くだけでパッケージがかける(ものもあ
る)
● http://packages.gentoo.org/
- 30. Gentooを試す
● まずはインストール用CDのisoイメージをダウンロード
(121MB)
○ http://www.gentoo.org/main/en/where.xml
● 日本語のインストールハンドブックを参考に
○ http://www.gentoo.org/doc/ja/handbook/index.
xml
● CDで起動するとプロンプトが表示される
● インストールの難易度の高さを味わうのも一興
● VMwareやVirtualBoxなどでとりあえず試してみては
いかが?
- 32. AMIイメージ利用の上での注意点
● rootでログインしてください
○ ssh -i yourkey.pem root@xxx.xxx.xxx.xxx
● syslogdとcrondをインストール
○ emerge --sync
○ emerge syslog-ng
○ rc-update add syslog-ng default
○ emerge vixie-cron
○ rc-update add vixie-cron default
● syslogd例
○ syslog-ng, rsyslog, sysklogdなど
● crondの例
○ vixie-cron, dcron, fcron, cronie, bcronなど
● smallインスタンス以上を推奨
- 33. ちょっと試してみたい人用に
● Amazon EC2上にテスト用インスタンスを作成しました
○ 175.41.226.110
● SSH鍵はここに置いています
○ http://厳冬鍵.縮.jp/
○ chmod 600 gentoo20110806.pem
○ ssh -i gentoo20110806.pem root@175.41.226.110
● これはsmallインスタンスです
● テスト用なので好き放題触ってOK
● poweroffやウイルス等を仕込むはヤメてね
● 今日中にシャットダウンします
- 34. 他人が作ったAMIは信用してはいけない
● AMIを一発で作ることができるスクリプトを用意しました
○ https://gist.github.com/870789
● Amazon AMI Linuxのインスタンスを1つ作る
○ x86版Gentoo Linuxを作りたい場合は32bitを選択
○ amd64版Gentoo Linuxを作りたい場合は64bitを選択
● X.509証明書と秘密鍵をダウンロード
○ https://aws-portal.amazon.com/gp/aws/developer/account/index.html?
action=access-key
● スクリプトと証明書と秘密鍵をAMIインスタンスにscpで転送して
実行
● sudo sh create_gentoo_ami.sh
○ AMIのできあがり
- 35. その他の選択肢(VPS編)
● さくらのVPSはOSを入れ替えることができる
○ http://vps.sakura.ad.jp/
○ Gentooがインストールできることを確認済
○ インストールの半自動化スクリプトがある
■ http://blog.kiyoya.shi-ba.org/post/1203448287
○ 改良版はこちらに
■ https://github.com/matsuu/gentoo-sakura-vps/
● 海外にはGentooを選べるVPSサービスもあるよ