Tips


はじめに

  • ここは過去のgentoo-MLやjp-MLに出ていた話題も集めてあります
  • ちなみに整理してません、古い情報もあるので自分でよりすぐって
  • 皆さんのご意見に感謝してwebに逐次記入したいと思います。

システムやサービスの設定

emacsでanthyを使って日本語入力

安定版のインストール

# emerge anthy

開発版のインストール

# env ACCEPT_KEYWORDS=~x86 emerge anthy-ss
  • emacsで使用したい場合はUSEフラッグのemacsをオンにしてemergeする。
  • .emacs
;;Anthy
(set-language-environment "Japanese")
(push "/usr/local/share/emacs/site-lisp/anthy" load-path)
(load-library "anthy")
(setq default-input-method "japanese-anthy")
(global-set-key "\C-\\" 'anthy-mode)

ASTEC-Xを使う

  • ASTEC-XやX-win32、他リフレクションなどPC-X-serverは今たくさんあります
  • その中でもASTEC-XはIMEやフォント関連に強く優秀です(お値段も優秀)
  • 以下ASTEC-Xの設定は解説しませんがXの設定を解説します
  • xwindowのbiginnerは以下を参考にしてください
  • まずはXDMCP接続をEnableに
# nano -w /etc/X11/gdm/gdm.conf
[xdmcp]
Enable=1(もしくはtrue)
  • アクセス設定
# nano -w /etc/X11/xdm/Xaccess
* CHOOSER BROADCAST(これを記入)
  • アクセス設定その2
    #nano -w /etc/X11/xdm/xdm-config
    !DisplayManager.requestPort: 0(コメントアウトする)
  • 再起動
    # /etc/init.d/xdm restart
  • これでXDMCP接続でgdmやkdmでも接続できます
  • アクセス制御
  • xdmcpはgentooデフォルトで177portを使用します
  • tcpserverと組み合わせて起動しましょう
  • xdm.sh
    • 事前にtcp.xdmcp.cdbファイルが必要になりますが・・・
#!/bin/sh
/usr/bin/tcpserver -HR -x /etc/tcp.xdmcp.cdb -u 32 -g 32  0 xdmcp \
/usr/X11R6/bin/xdm 2>&1 &

djbdns

  • emergeしてください

たまには自分でmakeインストールしてみる

install
  • まずはdaemontoolsのinstall
$ tar zxvf daemontools-0.70.tar.gz
$ cd daemontools-0.70
$ su
# make setup check
  • エラーになる場合はtai64nlocal.cを開いて
# include <sys/time.h>のsys/を削除
# include <time.h>とする。
  • djbdnsのコンパイル
$ tar zxvf djbdns-1.05.tar.gz
$ cd djbdns-1.05
$ su - 
# make setup check
  • 以上ですがgentooではerror.hファイルを編集しないとダメでした
    • これはdaemontoolsもdjbdnsも共通
#emacs error.h
  • extern int errno;→#include<errno.h>に変更
    • これはRH9や最新のディストリによく起こる現象です
  • daemontoolsの設定
# mkdir /service
# chmod 755 /service
# /usr/local/bin/svscan /service &
  • サーバキャッシュの設定
  • まず専用ユーザの作成
# useradd -s /bin/false dnscache
# useradd -s /bin/false dnslog
  • 設定ファイルの作成
# /usr/local/bin/dnscache-conf dnscache dnslog /etc/dnscache
  • 作成したファイルにdaemontoolsから利用できるようにシンボリックを張る。
# ln -s /etc/dnscahce /service
  • /etc/resolv.confの設定
  • /etc/resolv.confに以下を加える
domain yourdomain.jp 
nameserver 127.0.0.1 
  • 外部キャッシュの設定
# echo "192.168.xxx.xxx" > /etc/dnscache/env/IP
  • 192.168.xxx.xxxはサーバのIPアドレス
# touch /etc/dnscache/root/ip/192.168 
  • 192.168はあなたのIPアドレスに変更する。上と違って192.168.xxx.xxxのxxx.xxxは入力しない。
  • dnsサーバの設定
  • まず専用ユーザを作成
# useradd -s /bin/false tinydns
  • 設定ファイルの作成
# /usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns 192.168.xxx.xxx 
  • 192.168.xxx.xxxはサーバのIPアドレス
  • ゾーンファイルの設定
# cd /etc/tinydns/root
# ./add-ns xxxx.jp 192.168.1.3 ---それぞれドメイン名 とIPアドレス(一)
# ./add-ns 168.192.in-addr.arpa 192.168.1.3 (二)
# ./add-mx xxx.jp 192.168.1.3 ← メールサーバ設定
# ./add-host host1.xxx.jp 192.168.1.3
# ./add-alias www.xxx.jp 192.168.1.3 ---代替名を登録(CNAME)
# make
  • 設定を有効にする為シンボリックをはる
# ln -s /etc/tinydns /service
  • セコンダリサーバを設定する場合はセコンダリサーバに同一内容を書きます。

iノード番号からファイルを削除する

ls- ai
7777777 remove_file
find . -inum 7777777 -ok rm '{}' \;

emerge -pretendの出力

  • 記号の意味は
N … New(新規インストール) 
U … Update(更新) 
R … Replace(差し替え) 
B … Block(このパッケージによってブロックされている) 
F … ?(アーカイブは自分でダウンロードしてくる必要がある) 

GRUBの注意点(FDDがない場合)

  • FDDがない環境でGRUBを実行すると、FDDを読みに行ってしまうために固まってしまう(別シェルから殺せば復旧できる)。FDDがない場合は--no-floppyをつければよい。
# grub --no-floppy

bootFloppyの作成

  • grubのブートfloppyを作成
# fdformat /dev/fd0H1440
# cd /usr/share/grub/i386-pc/
# cat stage1 stage2 > /dev/fd0

ホームディレクトリを自動で生成

# cat /etc/pam.d/system-auth
  • session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022
    • pamのモジュールです
    • /etc/skelにデフォルト設定を入れておくと便利かも
    • adduser -m オプションでも可

CPU優先度

  • もともとniceがありますがgentoo独特として
# PORTAGE_NICENESS=7 emerge hogehoge
  • でemergeに対するCPUの優先度を指定できる

suできる?

  • ユーザがsu - rootできるようにする。
    • useraddコマンドをユーザ名しかオプションをつけないで実行するとgidはデフォルトで users(gid=100) が設定される。 セキュリティ上、グループ wheel(gid=10) に所属するユーザしかできないようになっている。 以下で変更。
#usermod -G users,wheel [USERNAME]

時間のずれを修正したい

  • /etc/rc.conf内のCLOCKをlocaltimeにして下記のbiossetをする
  • rm -rf /etc/adjtimeで削除# rc-update add clock boot

Mozillaでjavaアプレット日本語入力

  • 1. http://pc.2ch.net/test/read.cgi/linux/1047823838/77 をhoge.txt.uuencode とか保存
  • 2. $ uudecode < hoge.txt.uuencode
  • 3. font.properties.ja ができるので、それを /opt/blackdown-jdk-1.4.1/jre/lib/ にコピー
  • 4. $export
    JAVA_FONTS=/usr/X11R6/lib/X11/fonts/truetype:/opt/blackdown- 
    jdk1.4.1/jre/lib/fonts
  • 5. MozillaでGo!

NISクライアントになる

  • manを読んで設定してもドメイン名が(none)になる
/etc/runlevels/boot 以下に
domainnameを作成してboot時にあがるようにします
rc-update add domainname boot
  • とここでできたdomainnameを見ると << /etc/nisdomainnameとある
  • しかたないので#touch /etc/nisdomainname ; echo ドメイン名 >> nisdomainname
  • 再起動させる
#/usr/sbin/ypbind
  • で起動します、yp.confにnisserverをちゃんと記述しましょう

SSHでアクセス制限

  • まずは
# vi /etc/pam.d/sshdのファイルに以下の行を追加します。
  • account    required /lib/security/pam_access.so
  • そして
# vi /etc/security/access.conf
  • のファイルにも以下の行を追加します。
-:ALL EXCEPT wheel hogehoge shutdown sync:ALL
  • これはwheel,hogehoge,shutdown,syncのユーザ以外はアクセスできませんという意味です。

windowsのIISをssl化する

  • イントラサイトでIISを使用していてSSL化したい時
  • USE="ssl"で
emerge pound
  • としpoundをinstallします
  • poundはラッパーなのでバックエンドでIISとつながります
  • 設定は簡単なのでmanを見てくださいpound.cfgなどです

X-window-system

Desktopをgentooっぽく

  • こちらは定番kdeルック

テーマを変更する

  • kcontrol(KDE コントロールセンター)にテーママネージャがある場合は
$KDEDIR/share/apps/kthememgr/Theme/
  • いかにhogehoge.tar.gzを置く
  • でテーママネージャからhogehogeを選択する

あくあフォントで可愛くする

未分類

CDから1つファイルがほしい

# mount /mnt/cdrom
# tar xjpvf stage1-ix86-1.2.tbz2 ./etc/ほしいファイルとか

USEフラグ

  • etcatの使い方、man見ればいいか
    #etcat belongs /usr/bin/ls
    #etcat -d app-i18n/cannna(依存packageを探す)
    #etcat uses net-www/apache(パッケージの中に存在するUSE変数を表示)

Portage

  • unstableが使いたい時やマスクされたpackageをinstallしたい時
  • ACCEPT_KEYWORDS='~i386" emerge -pv net-irc/xchat
  • USE変数の現在を調べる(環境変数)
    #emerge info
  • 日本語環境ならcjkを指定してあげましょう

emergeの使い方(基本)

  • アプリケーションの検索
    #emerge -s apache
    #emerge -S apache(コメントの検索対象)
  • アプリケーションのinstall とupdate
    #emerge apache
    #emerge -u apache(update)
    #emerge unmerge apache(uninstall)
  • 便利なオプション
    #emerge -pv apache
  • 確認のためのオプション(installもuninstallもしない)
    #emerge -p -u apache
  • なるべく日本のgentooミラーを使いましょう

/-でもよいです

BIOSとOSの時刻を同期させる

  • というわけでBIOSの時計をOSの時計に合わせるには
# /sbin/hwclock -w

etc-updateって何?

etc-updateはGentoo LinuxのPortageに付属するコマンドです。 主として /etc にあるファイルの更新を行います。

emergeの動作

emerge worldなどの後に使用します 使用する前に

# cp -Rp /etc /backup/etc.old

emergeコマンドによって、ユーザの希望するパッケージがシステムに インストールされるのですが、特にアップデートの場合、ユーザが手を入れた 設定ファイルなどが上書きされてしまっては困ります。 そこで、emergeは決められた場所にあるファイルを更新する場合、 上書きするのではなく別名をつけてインストールします。

例えば、baselayoutの新しいバージョンが出たとしましょう。新しいバージョンを emergeすると /etc/fstabが更新されることになりますが、このファイルにはユーザの 環境に合わせて変更が加えられえているはずです。それを上書きされてしまっては、 面倒です。

しかし実際には上書きされてしまうことはありません。Portageではこのようなファイルを 保護する仕組みがあります。この例では、/etc/fstabを更新する代わりに/etc/._cfg0000_fstab という ファイルが作成されます(数字の部分はetc-updateのサボり具合によって変わります;-))。

ところで、emergeはどのようにして特別扱いするファイルを決めているのでしょうか。 /etc/make.globalsを見てください。CONFIG_PROTECTという変数が定義されています。 この変数に定義されたディレクトリ(サブディレクトリを含む)にあるファイルは 保護の対象となり、emergeが書き換えることはありません。


etc-update の動作

emergeは /etc にあるファイルを上書きしないということはわかりましたが、ではそのまま 放置してもいいのでしょうか? 無論、放置すべきではありません。ユーザが自分の責任で 更新しなければなりません。

では、どうすればいいでしょうか? 実に簡単です。._cfgで始まるファイルを見つけ出し、 現在あるファイルと見比べて、適当にファイルを更新します。それがすんだら._cfgで 始まるファイルは削除してしまいましょう。先ほどのfstabの例なら、._cfg0000_fstabと/etc/fstab を見比べながら /etc/fstab を更新し、._cfg0000_fstabを削除するのです。

しかし、このようにして更新しなければならないファイルが増えてくると、手間も増大してきます。 差分を確認しながら更新するためのツールが欲しいという声に応えるように、etc-updateが 登場しました。

このツールを使うと、対話式に更新するファイルを選択し、差分を確認したり マージしたりという操作を行うことができます。これによって随分作業を簡略化できます。

しかし、注意してください。etc-updateは先に述べた作業を補助するツールに過ぎません。 設定ファイルを更新するのはあなたです!! 不安ならバックアップを取ってから作業する、 これ基本です。

どんな時に使うの?

emergeしたあと、このような表示が出ることがあります。

* IMPORTANT: 2 config files in /etc need updating.
* Type emerge --help config to learn how to update config files.

これを見て、emerge --help config を読んだ人はもうこのテキストを読む必要はありません ;-P

このメッセージは、/etc に更新が必要なファイルが2つある、ということを意味しています。 ._cfgで始まるファイルが /etc に2つあるということです。このような場合こそ etc-update の 出番です。

どうやって使うの?

root権限で etc-update コマンドを実行します。

# /usr/sbin/etc-update
1) /etc/fstab
/etc/._cfg0000_fstab
2) /etc/make.conf
/etc/._cfg0000_make.conf
Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):
  • 1 etc-updateを終了
  • 3 全てのファイルを問い合わせしながら上書き
  • 5 全てのファイルを問い合わせなしで上書き

ファイルの前についている番号(1もしくは2)を入力すると、そのファイルの 更新ができます。

--- /etc/fstab
+++ /etc/._cfg0000_fstab
(ここに差分が表示される)
End of differences between /etc/fstab and /etc/._cfg0000_fstab
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
Please select from the menu above (-1 to ignore this update):
- 1 ._cfgファイルで旧ファイルを上書きする
- 2 ._cfgファイルを削除して、旧ファイルをそのまま残す
- 3 対話式にマージする
- 4 差分をもう一度表示する
- -1 前のメニューに戻る

3の場合はどうなるでしょう。

Merging /etc/._cfg0000_fstab and /etc/fstab
foo                              <              ← 旧ファイルにあるが新ファイルにない行
%
                                 > bar          ← 新ファイルにあるが旧ファイルにない行
%
hoge                             | hogehoge     ← 行の内容が変更された
%
  • r 新しいファイルの内容を選択する
  • l 古いファイルの内容を選択する
  • q 作業を中止する

マージの場合、それぞれ違いがある部分で、どのように変更を加えるのかを答えなければなりません。 プロンプト(%)で ? を入力すれば簡単なヘルプがでます。 基本的には、rを入力して右(新)を取るか、lを入力して左(旧)を取るか、です。 これは最初は戸惑うこともあると思いますのでファイルのバックアップを取ってから いろいろ試してみるとよいと思います。

etc-update で vimdiff が使えるって本当?

/etc/etc-update.conf を見ると vimdiff をマージに使うなという注意書きがありますが、実はそんなことはなくて、

merge_command="vim +r%orig -d %merged %new"

と書けば vimdiff でマージすることができます。ただしこれで激しくテストしたわけではないので(いつも sdiff 使ってます)、この設定で問題が出た人は教えてください。

参考文献

etc-update(1), make.conf(5), 'emerge --help config'

GentooJP-ebuilds