Gentoo Linux tips 集
このガイドは、GentooJP の Wiki で出た tips を集めて編集したものです。
|
1.この tips 集について
あなたの tips も
この tips 集の元である
Wiki(http://wiki.gentoo.gr.jp/)
は誰でも編集が可能です。あなたも追加してみませんか?いつでも待ってます!
まとめるにあたって
いくつかの記事には、具体例などを追加させてもらいました。さらに、 tips をいくつかのグループに分けさせてもらいました。
一番、使われているであろう x86 で説明しています。それ以外の人は適宜読み替えてください。
2.Portage 系 tips
emerge で何が行なわれたか (thanks,真藤さん 中野さん)
emerge のログはすべて /var/log/emerge.log に出力されるようになっています。
よって、そのファイルを見ることで何が行われたかがわかります。
Code listing 2.1 |
# less /var/log/emerge.log
1051319292: Started emerge on: Apr 26, 2003 01:08:12
1051319292: *** emerge sync
1051319292: === rsync
1051320882: Started emerge on: Apr 26, 2003 01:34:42
1051320882: *** emerge >=sys-apps/portage-2.0.25
1051320882: >>> emerge (1 of 1) sys-apps/portage-2.0.47-r10 to /
1051321008: Started emerge on: Apr 26, 2003 01:36:48
1051321008: *** emerge >=sys-apps/portage-2.0.25
1051321008: >>> emerge (1 of 1) sys-apps/portage-2.0.47-r10 to /
1051321035: ::: completed emerge (1 of 1) sys-apps/portage-2.0.47-r10 to /
|
以下の設定を行なうと emerge 毎の詳しいログが記録されます。
Code listing 2.2 |
# nano -w /etc/make.conf
PORT_LOGDIR=/var/log/portage
# mkdir /var/log/portage
# emerge portage
# less /var/log/portage/xxxx-portage-2.0.49-r18.log
setup
unpack
>>> Unpacking source...
>>> Unpacking portage-2.0.49-r18.tar.bz2 to /var/tmp/portage/portage-2.0.49-r18/work
>>> Source unpacked.
compile
./create-localdecls
Checking truncate argument type... off_t
Checking libc version... libc.so.6
Checking glibc subversion...
gcc -march=i386 -O1 -pipe -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT libsandbox.c
gcc -march=i386 -O1 -pipe -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT sandbox_futils.c
gcc libsandbox.o sandbox_futils.o -shared -fPIC -ldl -lc -o libsandbox.so -nostdlib -lgcc
gcc -march=i386 -O1 -pipe -Wall -c sandbox.c
gcc sandbox.o sandbox_futils.o getcwd.c -ldl -lc -o sandbox
install
>>> Install portage-2.0.49-r18 into /var/tmp/portage/portage-2.0.49-r18/image/ category sys-apps
running install
running build
running build_ext
building 'missingos' extension
creating build
creating build/temp.linux-i686-2.2
|
ACCEPT_KEYWORDS (thanks,篠原さん)
Portage のデフォルト設定は Gentoo Linux の開発者達が stable と判断したパッケージのみをインストールするように
セットされています。「最新バージョンがリリースされて ebuild も用意されているのに、インストールできない」という
経験はありませんか?実は、その最新バージョンが unstable と判断されたために自動ではインストールされないようにな
っているのです。これを期に unstable 街道まっしぐらでも構わないですが:-)、一時的に設定を変更することもできます。
Code listing 2.3: unstable パッケージを使う |
# nano -w /etc/make.conf
以下のように修正してください。
ACCEPT_KEYWORDS="~x86"
bash を使ってる人 は /root/.bashrc に以下を追加してください。
# nano -w /root/.bashrc
# alias ak='env ACCEPT_KEYWORDS=~x86'
本来なら、
# ACCEPT_KEYWORDS="~x86" emerge -p hogehoge
と、いう長いコマンドを
# ak emerge -p hogehoge
と、短縮することができます。応用として
# ak ALSA_CARDS="usb-audio" emerge alsa-driver
と、 ak と emerge の間にいくつでも入れることができます。
|
Portage について、さらに知りたい場合は
Portageユーザーガイド
を参照してください。
qpkg and etcat
「/bin/ps ってどのパッケージに入ってたっけ」などと思ったことはありませんか?そのような時には
qpkg か etcat を使うと幸せになれます。
Code listing 2.4 |
# qpkg -f /bin/ps
sys-apps/procps *
# etcat -b /bin/ps
Searching for /bin/ps in * ...
sys-apps/procps-3.1.9
|
Important: etcat は root で実行するか、 portage グループに属している必要があります。 |
emerge 中でも快適に (thanks,真藤さん)
emerge 中、つまりコンパイル中は CPU パワーを取られてしまい、他のアプリケーションの動作に支障がでる
場合があります。emerge の nice 値を変更することで優先順位を下げることができます。これにより、多少なりとも
負荷を下げることができます。
Code listing 2.5 |
# ps axo pgid,command | grep emerge
26963 python2.2 /usr/bin/emerge -u world
いちばん左の数字が PGID です。
# renice +5 -g PGID
+19 が一番優先順位が低い。-20 が一番優先されるが、順位を上げれるのは root のみ。
# PORTAGE_NICENESS=5 emerge hogehoge
# nano -w /etc/make.conf
PORTAGE_NICENESS=5
|
world のコメントアウト文字は? (thanks,真藤さん, 中野さん)
/var/cache/edb/world のコメントアウト文字は # です。
package.mask and package.unmask
Gentoo Linux では、最近 Apache2 , Mysql4 が unstable から stable になりました。
この影響により、 Apache1 系列で運用している人が emerge -u world とすると Apache2 がアップグレードの対象に
なりました。アップグレード対象から外すには /etc/portage/package.mask を編集してください。
Warning: /etc/portage/profile/package.mask から /etc/portage/package.mask に変更されました |
Code listing 2.6: package.mask and package.unmask |
# mkdir /etc/portage
# cd /etc/portage
# nano -w package.mask
>=net-www/apache-2*
>=dev-db/mysql-4*
# cd /etc/portage
# nano -w package.unmask
として、対象のパッケージを書きます。
|
/usr/portage/profile/package.maskなどに追加する方法では、emerge syncの度に上書きされてしまいます。
回線に優しくあれ (thanks,stingerさん)
portage では /usr/portage/distfiles/ にないものはインターネット上からダウンロードしようとします。
会社や学校など、共有の回線を使用している時は、目立たないよう、こっそりとダウンロードしたいですよね。wget を使っ
ているので簡単にダウンロード時の帯域を制限することができます。
Code listing 2.7: wget で帯域制限を掛ける |
# nano -w /etc/make.conf
FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp --limit-rate=200k \${URI} -P \${DISTDIR}"
200k は各自の環境に合せてください。
|
emerge sync の rsync 先を日本のサーバ類に指定する。(thanks,桜本さん)
Gentoo Project の rsync サーバーは各地域ごとにエイリアスが設定されています。
日本国内の人は極力 rsync.jp.gentoo.org を使うようにしてください。
Code listing 2.8: 各地域ごとのエイリアス一覧 |
rsync.at.gentoo.org
rsync.au.gentoo.org
rsync.be.gentoo.org
rsync.ca.gentoo.org
rsync.de.gentoo.org
rsync.es.gentoo.org
rsync.fi.gentoo.org
rsync.fr.gentoo.org
rsync.gr.gentoo.org
rsync.hu.gentoo.org
rsync.is.gentoo.org
rsync.it.gentoo.org
rsync.jp.gentoo.org 日本国内には現在5台以上のサーバーがあります。
rsync.kr.gentoo.org
rsync.kw.gentoo.org
rsync.nl.gentoo.org
rsync.no.gentoo.org
rsync.ru.gentoo.org
rsync.se.gentoo.org
rsync.sg.gentoo.org
rsync.sk.gentoo.org
rsync.uk.gentoo.org
rsync.us.gentoo.org
rsync.ve.gentoo.org
# nano -w /etc/make.conf
SYNC="rsync://rsync.jp.gentoo.org/gentoo-portage"
|
コンパイルに要した時間を調べる
Portage にある app-portage/splat を使うと調べることができます。
Code listing 2.9 |
# splat -f /var/log/emerge.log glibc
* sys-libs/glibc-2.3.2-r9
Emerged at: 金 11月 21 04:41:00 2003
Build time: 1 hour, 54 minutes, and 34 seconds
Emerged at: 土 11月 22 10:32:44 2003
Build time: 1 hour, 31 minutes
* sys-libs/glibc-2.3.3_pre20031212
Emerged at: 金 12月 26 21:09:15 2003
Build time: 1 hour, 58 minutes, and 14 seconds
* sys-libs/glibc-2.3.3_pre20031222
Emerged at: 土 12月 27 23:14:32 2003
Build time: 2 hours, 11 minutes, and 13 seconds
Emerged at: 日 12月 28 06:18:43 2003
Build time: 1 hour, 42 minutes, and 59 seconds
|
3.Gentoo Linux 全般 tips
うちの Gentoo は何歳かしら (thanks,真藤さん)
ふと思う。「Gentoo をインストールしたのはいつだろう」と。そんな時は;
- /etc/issue, /etc/motd の作成日
- “ls -al /” の結果
- /var/log/emerge.logの最初(stage3でのインストールの場合)
- /etc/gentoo-release
- /etc/make.conf.build
- /etc/runlevels/
- “ls -ltd /var/db/pkg/*/* | tail”
- /lost+found
これらのファイル/ディレクトリで一番古いものが「インストールした日」になるようです。
Code listing 3.1 |
# ls -al /
合計 11036
drwxr-xr-x 16 root root 4096 2003-07-17 01:11 .
drwxr-xr-x 16 root root 4096 2003-07-17 01:11 ..
drwxr-xr-x 2 root root 4096 2003-07-14 02:59 bin
drwxr-xr-x 3 root root 61 2003-06-27 17:45 boot
drwxr-xr-x 1 root root 0 1970-01-01 09:00 dev
drwxr-xr-x 63 root root 4096 2003-07-17 01:11 etc
drwxr-xr-x 7 root root 110 2003-07-05 17:31 home
drwxr-xr-x 8 root root 4096 2003-07-06 12:30 lib
drwxr-xr-x 5 root root 45 2003-05-13 20:19 mnt
drwxr-xr-x 4 root root 70 2003-05-30 10:08 opt
dr-xr-xr-x 86 root root 0 2003-07-16 04:23 proc
drwx------ 8 root root 4096 2003-07-15 01:21 root
drwxr-xr-x 2 root root 4096 2003-07-14 02:59 sbin
-rw-r--r-- 1 root root 11253769 2003-04-26 10:06 stage1-x86-1.4_rc4.tar.bz2
drwxrwxrwt 11 root root 4096 2003-07-17 01:13 tmp
drwxr-xr-x 15 root root 4096 2003-06-27 16:20 usr
drwxr-xr-x 12 root root 137 2003-05-30 15:19 var
|
Gentoo Linux なマシンを複数台運用する時のアイデア (thanks,Fuktommy さん)
Gentoo なマシンが2台以上の人はぜひこのアイデアを実践してください!資源は限られています。
/usr/portage を NFS で共有しましょう。これは非常に効果があります。
Code listing 3.2: /usr/portage を NFS で共有する |
kernel option で NFS サーバーが有効になっているか確認してください。もし、有効になっていない場合は kernel を再構築する必要があります。
# cd /usr/src/linux
# make menuconfig
File Systems ->
Network File Systems ->
NFS Server Support (module か 組み込み)
Pronano -wde NFSv3 Server Support (有効にする)
# make bzImage
# make modules modules_install
再構築した kernel で再起動してください。
# emerge nfs-utils
# nano -w /etc/exports
/usr/portage 192.168.1.0/255.255.255.0(rw,sync,no_root_squash)
# /sbin/rc-update add nfs default
# /etc/init.d/nfs start
# mount サーバーのIPアドレス:/usr/portage /usr/portage
# df -hT
Filesystem タイプ サイズ 使用 残り 使用% マウント位置
/dev/hda2 xfs 9.4G 4.6G 4.9G 49% /
/dev/hda4 xfs 65G 40G 25G 62% /home
none tmpfs 125M 0 125M 0% /dev/shm
yuki.tknetworks.org:/usr/portage
nfs 9.6G 1.6G 8.1G 16% /usr/portage
|
ローカル用なので更新は一日に一度で十分です。cron で 0:00 に rsync.jp.gentoo.org と
同期するようにします。
Code listing 3.3: cron の設定 |
# cd /etc/cron.daily/
# nano -w rsync
#!/bin/sh
emerge sync
|
これにより /usr/portage 以下が共有できます。distfiles も Portage-Tree もです。
いちいち、クライアント側で emerge sync をする必要がなくなります。スバラシイ!
マシンの構成が同じ場合はバイナリパッケージを作って、2台目にはそのパッケージをインストールことも可能です。
Warning: CPU や gcc の最適化フラグに注意してください。これらが違うと動かない場合があります。 |
Code listing 3.4: –buildpkg –usepkg |
# emerge hogehoge --buildpkg
すると、 /usr/portage/packages/All に hogehoge,tbz2 というパッケージが出来ています。あとは、インストールしたいマシンに持っていき
# emerge hogehoge.tbz2
とすれば、簡単にインストールできます。
|
最後に。distcc というソフトを使うと分散コンパイルをすることができます。一度、使うと便利すぎて手放せなくなりますよ。
Code listing 3.5: emerge で distcc を使う |
# emerge distcc
# /sbin/rc-update add distccd default
# nano -w /etc/conf.d/distccd
DISTCCD_OPTS="-a 127.0.0.1"
# nano -w /etc/make.conf
FEATURES に distcc を 追加してください。
DISTCC_HOSTS="分散するマシンのIPアドレス 127.0.0.1"
スペースで区切ることで何台でも追加できます。
MAKEOPTS="-j3"
数値は分散する台数+1 くらい。
# /sbin/rc-update add distccd
# nano -w /etc/conf.d/distccd
DISTCCD_OPTS="-a 192.168.1.0/24"
分散コンパイルを受けつけるネットワークを指定します。
|
あとは、普通に emerge hogehoge とすると分散コンパイルが行なわれます。
kdeでたまにkinput2 -cannaが数秒フリーズする
解決するには /etc/X11/app-defaults/Kinput2 を編集します。
Code listing 3.6 |
# nano -w /etc/X11/app-defaults/Kinput2
!*OverTheSpotConversion.UseOverrideShellForMode: True
*OverTheSpotConversion.UseOverrideShellForMode: True
|
HDD の動作が遅く感じる
HDD 自体は DMA モードで認識しているのに有効になってないことがあります。
Code listing 3.7 |
# rc-update add hdparm default
|
以上で起動時に有効にしてくれます。
4.Gentoo Linux インストール tips
LiveCDとほぼ同じカーネル/モジュールを作る (thanks,yamakuraさん)
1.4_rc4のLiveCDに入っているカーネルのconfigは、/proc/configとして参照できます。これを利用するとブートできる
であろうカーネルを簡単に作ることができます。
Code listing 4.1 |
# cd /usr/src/linux
# cat /proc/config > .config
# make oldconfig
|
ドキュメントを見ながら…
CD 一枚で起動できて、 KDE などが利用できる Linux ディストリビューションがあります。これらを利用すると
ブラウザで http://www.gentoo.org/ のドキュメントを見ながらインストールを行なうことができます。
CD からブートできるもので有名なものは
などがあります。非常に便利なのでお試しあれ。
|