Gentoo Linux tips 集

  このガイドは、GentooJP の Wiki で出た tips を集めて編集したものです。




Contents:

1. この tips 集について

2. Portage 系 tips

3. Gentoo Linux 全般 tips

4. Gentoo Linux インストール tips

Author : GentooJP
Editor : TANABE Ken’ichi


Updated 7 May 2004




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

// Portage を emerge すると
# 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 パッケージを使う
// unstable 街道まっしぐら向け
# nano -w /etc/make.conf
以下のように修正してください。

ACCEPT_KEYWORDS="~x86"

// 一時的に unstable なパッケージをインストールする
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
と、 akemerge の間にいくつでも入れることができます。
			

Portage について、さらに知りたい場合は Portageユーザーガイド を参照してください。

qpkg and etcat 

/bin/ps ってどのパッケージに入ってたっけ」などと思ったことはありませんか?そのような時には qpkgetcat を使うと幸せになれます。

Code listing 2.4
// qpkg の場合
# qpkg -f /bin/ps
sys-apps/procps *

// etcat の場合(こちらの方がすこし速いです)
# 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
// emerge 中の場合
# ps axo pgid,command | grep emerge
26963 python2.2 /usr/bin/emerge -u world
いちばん左の数字が PGID です。
# renice +5 -g PGID
+19 が一番優先順位が低い。-20 が一番優先されるが、順位を上げれるのは root のみ。

// 一時的に nice 値を下げる場合
# PORTAGE_NICENESS=5 emerge hogehoge

// これからずっと emerge の nice 値を下げる場合
# 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
// Apache2 と Mysql4 を mask します。これにより、 emerge -u world で Apache2 Mysql4 はアップグレードの対象から外れます。
# mkdir /etc/portage
# cd /etc/portage
# nano -w package.mask
>=net-www/apache-2*
>=dev-db/mysql-4*

// /usr/portage/profile/package.mask にあるパッケージの mask を外す
# 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 emerge.logのパス 調べたいパッケージ名
# 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

// 2003-04-26 が一番古かったようです
			

Gentoo Linux なマシンを複数台運用する時のアイデア (thanks,Fuktommy さん) 

Gentoo なマシンが2台以上の人はぜひこのアイデアを実践してください!資源は限られています。

/usr/portage を NFS で共有しましょう。これは非常に効果があります。

Code listing 3.2: /usr/portage を NFS で共有する
kernel option で NFS サーバーが有効になっているか確認してください。もし、有効になっていない場合は kernel を再構築する必要があります。
// kernel で NFS を有効にする (説明は linux-2.4.21 に沿っています)
# 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
// 192.168.1.0/255.255.255.0 は共有を許可するネットワークです。各自の環境に合せてください。

/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

// クライアントから /usr/portage を NFS で mount します
# 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
// 常に --buildpkg したい場合は /etc/make.conf の FEATURES に buildpkg を追加してください。

すると、 /usr/portage/packages/All に hogehoge,tbz2 というパッケージが出来ています。あとは、インストールしたいマシンに持っていき

# emerge hogehoge.tbz2

とすれば、簡単にインストールできます。
		

最後に。distcc というソフトを使うと分散コンパイルをすることができます。一度、使うと便利すぎて手放せなくなりますよ。

Code listing 3.5: emerge で distcc を使う
// 分散する側、分散される側、共に distcc を emerge する必要があります。
# 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

// 頭の!だけを消して Kinput2 を再起動させます。
			

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 からブートできるもので有名なものは

などがあります。非常に便利なのでお試しあれ。

Copyright© 2002-2014 Gentoo Linux Users Group Japan. All rights reserved.

このサイトはGentooJPが運営するGentoo.org非公式コミュニティサイトです。ご質問、ご意見などはこちらまで。 Email: www@gentoo.gr.jp