今最もアツイdistribution gentoo linuxについて
TRANSCRIPT
今最もアツイdistributionGentoo Linuxについて
ナマエダケデモオボエテ カエッテクダサイ
自己紹介
● 松鵜 琢人(まつう たくと)○ matsuu(twitter)○ tmatsuu(はてな)
● Gentoo Linux Developer● タイル型ウィンドウ
マネージャ推進委員会● 最近は翻訳にも少しずつ手を出しています● ネットワーク屋を経てWeb系プログラマー● 勉強会に積極的に参加してる(つもり)● 単館系映画好き。映画館で年間100本以上見る
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人(ぐらい)
GentooJPとは各種のプロジェクトの実施、 メーリングリスト・IRCチャンネルの開設などをとおして、 gentoo.orgが配布するGentoo Linuxの日本での普及・発展を支援し、 ユーザー間の情報交換の円滑化を図ることを目的として2002年12月1日設立。
主な活動は以下のとおり。● ドキュメント、GMN等の翻訳作業● ebuild公開の場の提供
○ ebuildJP ( http://ebuild.gentoo.gr.jp/ ) ● ユーザ交流のサポート
○ IRC ( #gentoo-ja at irc.gentoo.org(freenode) )○ GentooJP wiki ( http://wiki.gentoo.gr.jp )○ メーリングリスト ○ 飲み会
● オープンソースカンファレンスへの出展
Linux(FreeBSD)と私
● Turbo→Vine→Kondara→(Solaris)→FreeBSD● portsの仕組みを備えたLinuxがあるといいな● SD誌の記事でGentooを知る● 2003年7月からGentoo Linux Developerに
○ パッケージメンテナンス担当■ CJK関連(atokx3,■ DNS関連(unbound,MyDNS,maradns)■ AIDE,libev,distcc,puppet,redmine,awesome等
○ 最近サボってますごめんなさい
Gentoo Linuxの名前の由来
● ジェンツーペンギン● 小さくてすばしっこい
● エプソン品川アクアスタジアムで会える
● 海洋堂がジェンツーペンギンのフィギュアを作ってた
○ 今は入手困難?
Gentooのマスコットキャラクター
● Larry the Cow
●乳がみえるけど雄牛
●ジェンツーペンギンはマスコットキャラではない
Gentooの強み その1
● 新しいパッケージを積極的に取り込む○ 14804パッケージ(2011/08/05現在)
● バージョンはどんどん上げていく○ ローリングアップデート
● パッケージ作成コストが低い● すべてのパッケージをソースからインストールする● カスタマイズ性が高い● ライセンス問題、商用アプリ対応可能
○ 再頒布しないので多くのライセンス問題を回避できる○ 商用アプリもパッケージシステムで対応可能
■ ATOK X3 for Linuxは対応済● 様々なCPUアーキテクチャに対応している
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
ソースからインストールってどういうこと?
● configure && make && make installを自動化● rpmで言えば、src.rpmのbuildとrpmインストールを
一気にやるイメージ● configure時オプションをカスタマイズできる
○ --enable-foo, --with-barなど● コンパイル時オプションをカスタマイズできる
○ CFLAGS, LDFALGSなど● 基本パッケージなどもない、すべてコンパイル
○ 依存関係も含めてすべて自動でインストールされるので手間はかからない
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
現在対応しているアーキテクチャ
alpha, amd64, amd64-fbsd, arm, hppa, ia64, m68k, mips, ppc, ppc64, s390, sh, sparc, sparc-fbsd, x86, x86-fbsd以下はPrefixppc-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
パッケージ管理のコマンド
RedHat(yum)
Debian(aptitude)
Gentoo(emerge)
パッケージのインストール
yum install foo aptitude install foo emerge foo
パッケージのアップデート
yum update aptitude updateaptitude upgrade
emerge --syncemerge -u world
パッケージのアンインストール
yum remove foo aptitude remove foo emerge -C foo
パッケージの検索
yum search foo aptitude search foo emerge -s foo
Gentooの弱み
● インストーラーが存在しない● バージョンはどんどん上げていく
○ ライブラリのバージョンがあがると動かなくなる可能性● パッケージはすべてソースからコンパイルする
○ 時間がかかる○ パッケージのインストールに失敗することがある
● OSの商用サポートは期待できない○ 海外では昔は商用サポートがあったが今はない
● Gentoo対応の商用パッケージなんて聞いたことがない● 開発者不足
○ バージョンアップが停滞しているパッケージがちらほら○ Linux界の極左であるため、内ゲバが絶えない
■ 最近はそんなことないよ
インストーラーがないってどういうこと?
● パーティションの設定からGRUBのインストールまで手動でインストール作業を行う
● たしかに最初は大変かもしれない○ 公式ドキュメントが充実している○ 公式ドキュメントどおりにやれば大丈夫○ 勉強になる
● 新人教育にGentooインストールはマジオススメ
バージョンアップは諸刃の剣
● バージョンアップによってプログラムが動作しない● ライブラリのバージョンが上がるとそれを利用しているソフトウェ
アが起動しなくなる● 最近影響がでかかったアップデート
○ dev-libs/icu (International Components for Unicode)○ webkit,libreoffice,gnome,sqlite,libxml2,boostなどが利用○ アップデート祭り
● revdep-rebuildなどのライブラリのアップデートによって壊れたソフトウェアを検出するツール
● etc-updateやdispatch-confなどの設定ファイルの差分を確認・マージするツール
● ライブラリは無理にアップデートしないという選択肢もある
共有ライブラリのバージョンについて
● libtool方式の場合 libhoge.so.x.y.z○ 0:0:0から始まる(current:revision:age)
1. ライブラリのソースが変更された→r++2. インタフェースが追加or削除or変更された→c++, r=03. インタフェースが追加された→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
時間がかかる問題の対策
● ccacheを使う○ http://ccache.samba.org/○ コンパイル結果をキャッシュするccacheを使う○ 2回目以降のコンパイルが劇的に早くなる
● distccを使う○ http://www.distcc.org/○ ネットワーク越しに分散コンパイルする○ PCが2台以上あるならコンパイル時間が短縮できる○ クロスコンパイル環境にも対応
● バイナリパッケージを作る(binpkgs)○ ただし全く同じ設定のサーバが複数台ある場合のみ意味が
ある
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にしか対応していない
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モード除く)
distccのイメージ
Gentooのセキュリティ対応
● セキュリティアドバイザリを発行している○ GLSA(Gentoo Linux Security Advisory)
● GLSAの発行までの流れ○ Bugzillaにセキュリティの報告があがる○ なんとかして直す
■ 直せない場合は放置もしくはパッケージ削除○ 直ったらGLSAを発行するか協議(vote)する
■ これが最近グダグダ■ 他のディストリビューションがSAを発行したら発行?■ 小物アプリなら大丈夫ですよ
○ GLSAが発行されたものだけアップデートするツールがある■ glsa-check
○ が、上記のとおりなのであまり意味ないこ
Gentooが向いている人
● バイナリパッケージのコンパイルオプションに不満がある
● ソースからインストールしたものが1つ以上ある● Linux kernel 3.0をインストールした● 新しいものが好き● 苦労は買ってでもしたい● Linuxのコマンドを勉強したい● マゾ気質
Gentooはサーバ用途に向いている?
● うーん、どうでしょうね● 新しいソフトウェアの台頭
○ Hadoop、Cassandra、nginxなど● いきなり実環境へ導入されることも多い● 各ディストリビューションでパッケージが用意され
ていない● ソースからインストールしてる?● 自前でRPMパッケージつくってる?● だったらGentooでいいじゃない
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/
ebuildのサンプル(skel.ebuild)
ebuildのサンプル(ibus-tutcode-1.0.0.ebuild)
そろそろGentooを使いたくなってきたよね?
Gentooを試す
● まずはインストール用CDのisoイメージをダウンロード(121MB)○ http://www.gentoo.org/main/en/where.xml
● 日本語のインストールハンドブックを参考に○ http://www.gentoo.org/doc/ja/handbook/index.
xml● CDで起動するとプロンプトが表示される● インストールの難易度の高さを味わうのも一興● VMwareやVirtualBoxなどでとりあえず試してみては
いかが?
Amazon EC2にAMIイメージあります● 東京リージョンにGentooのAMIを作成しました
AMIイメージ利用の上での注意点
● rootでログインしてください○ ssh -i yourkey.pem [email protected]
● 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インスタンス以上を推奨
ちょっと試してみたい人用に
● Amazon EC2上にテスト用インスタンスを作成しました○ 175.41.226.110
● SSH鍵はここに置いています○ http://厳冬鍵.縮.jp/○ chmod 600 gentoo20110806.pem○ ssh -i gentoo20110806.pem [email protected]
● これはsmallインスタンスです● テスト用なので好き放題触ってOK● poweroffやウイルス等を仕込むはヤメてね● 今日中にシャットダウンします
他人が作った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のできあがり
その他の選択肢(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サービスもあるよ
この夏はGentooライフを
満喫しませんか?