今最もアツイdistribution gentoo linuxについて

36
今最もアツイdistribution Gentoo Linuxについて ナマエダケデモ オボエテ カエッテクダサイ

Upload: takuto-matsuu

Post on 08-May-2015

19.524 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 今最もアツイdistribution Gentoo Linuxについて

今最もアツイdistributionGentoo Linuxについて

ナマエダケデモオボエテ カエッテクダサイ

Page 2: 今最もアツイdistribution Gentoo Linuxについて

自己紹介

● 松鵜 琢人(まつう たくと)○ matsuu(twitter)○ tmatsuu(はてな)

● Gentoo Linux Developer● タイル型ウィンドウ

マネージャ推進委員会● 最近は翻訳にも少しずつ手を出しています● ネットワーク屋を経てWeb系プログラマー● 勉強会に積極的に参加してる(つもり)● 単館系映画好き。映画館で年間100本以上見る

Page 3: 今最もアツイdistribution Gentoo Linuxについて

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人(ぐらい)

Page 4: 今最もアツイdistribution Gentoo Linuxについて

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 )○ メーリングリスト ○ 飲み会

● オープンソースカンファレンスへの出展

Page 5: 今最もアツイdistribution Gentoo Linuxについて
Page 6: 今最もアツイdistribution Gentoo Linuxについて

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等

○ 最近サボってますごめんなさい

Page 7: 今最もアツイdistribution Gentoo Linuxについて

Gentoo Linuxの名前の由来

● ジェンツーペンギン● 小さくてすばしっこい

● エプソン品川アクアスタジアムで会える

● 海洋堂がジェンツーペンギンのフィギュアを作ってた

○ 今は入手困難?

Page 8: 今最もアツイdistribution Gentoo Linuxについて

Gentooのマスコットキャラクター

● Larry the Cow

●乳がみえるけど雄牛

●ジェンツーペンギンはマスコットキャラではない

Page 9: 今最もアツイdistribution Gentoo Linuxについて

Gentooの強み その1

● 新しいパッケージを積極的に取り込む○ 14804パッケージ(2011/08/05現在)

● バージョンはどんどん上げていく○ ローリングアップデート

● パッケージ作成コストが低い● すべてのパッケージをソースからインストールする● カスタマイズ性が高い● ライセンス問題、商用アプリ対応可能

○ 再頒布しないので多くのライセンス問題を回避できる○ 商用アプリもパッケージシステムで対応可能

■ ATOK X3 for Linuxは対応済● 様々なCPUアーキテクチャに対応している

Page 10: 今最もアツイdistribution Gentoo Linuxについて

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

Page 11: 今最もアツイdistribution Gentoo Linuxについて

ソースからインストールってどういうこと?

● configure && make && make installを自動化● rpmで言えば、src.rpmのbuildとrpmインストールを

一気にやるイメージ● configure時オプションをカスタマイズできる

○ --enable-foo, --with-barなど● コンパイル時オプションをカスタマイズできる

○ CFLAGS, LDFALGSなど● 基本パッケージなどもない、すべてコンパイル

○ 依存関係も含めてすべて自動でインストールされるので手間はかからない 

Page 12: 今最もアツイdistribution Gentoo Linuxについて

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

Page 13: 今最もアツイdistribution Gentoo Linuxについて

現在対応しているアーキテクチャ

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

Page 14: 今最もアツイdistribution Gentoo Linuxについて

パッケージ管理のコマンド

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

Page 15: 今最もアツイdistribution Gentoo Linuxについて

Gentooの弱み

● インストーラーが存在しない● バージョンはどんどん上げていく

○ ライブラリのバージョンがあがると動かなくなる可能性● パッケージはすべてソースからコンパイルする

○ 時間がかかる○ パッケージのインストールに失敗することがある

● OSの商用サポートは期待できない○ 海外では昔は商用サポートがあったが今はない

● Gentoo対応の商用パッケージなんて聞いたことがない● 開発者不足

○ バージョンアップが停滞しているパッケージがちらほら○ Linux界の極左であるため、内ゲバが絶えない

■ 最近はそんなことないよ

Page 16: 今最もアツイdistribution Gentoo Linuxについて

インストーラーがないってどういうこと?

● パーティションの設定からGRUBのインストールまで手動でインストール作業を行う

● たしかに最初は大変かもしれない○ 公式ドキュメントが充実している○ 公式ドキュメントどおりにやれば大丈夫○ 勉強になる

● 新人教育にGentooインストールはマジオススメ

Page 17: 今最もアツイdistribution Gentoo Linuxについて

バージョンアップは諸刃の剣

● バージョンアップによってプログラムが動作しない● ライブラリのバージョンが上がるとそれを利用しているソフトウェ

アが起動しなくなる● 最近影響がでかかったアップデート

○ dev-libs/icu (International Components for Unicode)○ webkit,libreoffice,gnome,sqlite,libxml2,boostなどが利用○ アップデート祭り

● revdep-rebuildなどのライブラリのアップデートによって壊れたソフトウェアを検出するツール

● etc-updateやdispatch-confなどの設定ファイルの差分を確認・マージするツール

● ライブラリは無理にアップデートしないという選択肢もある

Page 18: 今最もアツイdistribution Gentoo Linuxについて

共有ライブラリのバージョンについて

● 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

Page 19: 今最もアツイdistribution Gentoo Linuxについて

時間がかかる問題の対策

● ccacheを使う○ http://ccache.samba.org/○ コンパイル結果をキャッシュするccacheを使う○ 2回目以降のコンパイルが劇的に早くなる

● distccを使う○ http://www.distcc.org/○ ネットワーク越しに分散コンパイルする○ PCが2台以上あるならコンパイル時間が短縮できる○ クロスコンパイル環境にも対応

● バイナリパッケージを作る(binpkgs)○ ただし全く同じ設定のサーバが複数台ある場合のみ意味が

ある

Page 20: 今最もアツイdistribution Gentoo Linuxについて

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にしか対応していない

Page 21: 今最もアツイdistribution Gentoo Linuxについて

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モード除く)

Page 22: 今最もアツイdistribution Gentoo Linuxについて

distccのイメージ

Page 23: 今最もアツイdistribution Gentoo Linuxについて

Gentooのセキュリティ対応

● セキュリティアドバイザリを発行している○ GLSA(Gentoo Linux Security Advisory)

● GLSAの発行までの流れ○ Bugzillaにセキュリティの報告があがる○ なんとかして直す

■ 直せない場合は放置もしくはパッケージ削除○ 直ったらGLSAを発行するか協議(vote)する

■ これが最近グダグダ■ 他のディストリビューションがSAを発行したら発行?■ 小物アプリなら大丈夫ですよ

○ GLSAが発行されたものだけアップデートするツールがある■ glsa-check

○ が、上記のとおりなのであまり意味ないこ

Page 24: 今最もアツイdistribution Gentoo Linuxについて

Gentooが向いている人

● バイナリパッケージのコンパイルオプションに不満がある

● ソースからインストールしたものが1つ以上ある● Linux kernel 3.0をインストールした● 新しいものが好き● 苦労は買ってでもしたい● Linuxのコマンドを勉強したい● マゾ気質

Page 25: 今最もアツイdistribution Gentoo Linuxについて

Gentooはサーバ用途に向いている?

● うーん、どうでしょうね● 新しいソフトウェアの台頭

○ Hadoop、Cassandra、nginxなど● いきなり実環境へ導入されることも多い● 各ディストリビューションでパッケージが用意され

ていない● ソースからインストールしてる?● 自前でRPMパッケージつくってる?● だったらGentooでいいじゃない

Page 26: 今最もアツイdistribution Gentoo Linuxについて

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/

Page 27: 今最もアツイdistribution Gentoo Linuxについて

ebuildのサンプル(skel.ebuild)

Page 28: 今最もアツイdistribution Gentoo Linuxについて

ebuildのサンプル(ibus-tutcode-1.0.0.ebuild)

Page 29: 今最もアツイdistribution Gentoo Linuxについて

そろそろGentooを使いたくなってきたよね?

Page 30: 今最もアツイdistribution Gentoo Linuxについて

Gentooを試す

● まずはインストール用CDのisoイメージをダウンロード(121MB)○ http://www.gentoo.org/main/en/where.xml

● 日本語のインストールハンドブックを参考に○ http://www.gentoo.org/doc/ja/handbook/index.

xml● CDで起動するとプロンプトが表示される● インストールの難易度の高さを味わうのも一興● VMwareやVirtualBoxなどでとりあえず試してみては

いかが?

Page 31: 今最もアツイdistribution Gentoo Linuxについて

Amazon EC2にAMIイメージあります● 東京リージョンにGentooのAMIを作成しました

Page 32: 今最もアツイdistribution Gentoo Linuxについて

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インスタンス以上を推奨

Page 33: 今最もアツイdistribution Gentoo Linuxについて

ちょっと試してみたい人用に

● Amazon EC2上にテスト用インスタンスを作成しました○ 175.41.226.110

● SSH鍵はここに置いています○ http://厳冬鍵.縮.jp/○ chmod 600 gentoo20110806.pem○ ssh -i gentoo20110806.pem [email protected]

● これはsmallインスタンスです● テスト用なので好き放題触ってOK● poweroffやウイルス等を仕込むはヤメてね● 今日中にシャットダウンします

Page 34: 今最もアツイdistribution Gentoo Linuxについて

他人が作った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のできあがり

Page 35: 今最もアツイdistribution Gentoo Linuxについて

その他の選択肢(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サービスもあるよ

Page 36: 今最もアツイdistribution Gentoo Linuxについて

この夏はGentooライフを

満喫しませんか?