March 31, 2011

RHEL5からCentOS5への移行

ローカルネットに設置後、なんだかんだで落としっぱなしになっていたRHEL5.4のサーバを実験に使おうと思って立ち上げたらサブスクリプションが切れていた。(愚劣の極み…)
せっかくなのでCentOS5にレポジトリを切り替えてみる。

公式にマイグレーションの手引きがあるのでそれに従う。
公式はi386用の例なので、x86_64ならば
# cp /etc/redhat-release /etc/redhat-release-orig
# rpm -e --nodeps redhat-release-notes redhat-release yum-rhn-plugin redhat-logos
# rpm -ihv \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/centos-release-5-5.el5.centos.x86_64.rpm \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/centos-release-notes-5.5-0.x86_64.rpm \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/redhat-logos-4.9.99-11.el5.centos.noarch.rpm
# yum clean all
# yum update
といった感じ。

参考:
http://wiki.centos.org/HowTos/MigrationGuide

March 28, 2011

RHEL5におけるローカルyum repositoryの設置

前々回前回ではCentOS5,RHEL5のyum repositoryを別サーバに設置したが、
客先で1台のみのセットアップを行う、等といった場合には適さない。
今回はローカルレポジトリを当該サーバ内に設置する。
RHNへ接続できない オフライン環境 で、サブスクリプション登録なし でRHELを用いたシステムのセットアップを行う場合などを想定。

インストールメディアがあればそれを使う。
なければRHNからisoをDLしておく。
ISOをマウントするなり、インストールメディアをマウントするなりしたのち、
# mkdir /var/localrepos
# cp -rap /mnt/RHELDVD/Server /var/localrepos/
# cp -rap /mnt/RHELDVD/VT /var/localrepos/
# cp -rap /mnt/RHELDVD/Cluster /var/localrepos/
# cp -rap /mnt/RHELDVD/ClusterStorage /var/localrepos/
で必要なファイルをコピー。
createrepoを導入。
# rpm -ivh /mnt/RHELDVD/Server/createrepo-0.4.11-3.el5.noarch.rpm
repodataをグループファイルを抜き出して消去し、レポジトリ情報を再構成する
# cd /var/localrepos
# mv {Server,VT,Cluster,ClusterStorage}/repodata/comps* .
# rm -rf {Server,VT,Cluster,ClusterStorage}/repodata
# createrepo -g /var/localrepos/comps-rhel5-server-core.xml /var/localrepos/Server/
# createrepo -g /var/localrepos/comps-rhel5-vt.xml /var/localrepos/VT/
# createrepo -g /var/localrepos/comps-rhel5-cluster.xml /var/localrepos/Cluster/
# createrepo -g /var/localrepos/comps-rhel5-cluster-st.xml /var/localrepos/ClusterStorage/
あとは、/etc/yum.repos.d/rhel-debuginfo.reposを
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Server
baseurl=file:///var/localrepos/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[VT]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - VT
baseurl=file:///var/localrepos/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[Cluster]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Cluster
baseurl=file:///var/localrepos/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ClusterStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - ClusterStorage
baseurl=file:///var/localrepos/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
と編集して、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成


参考:
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/ec7481a5abd4ed3149256f9400478d7d/4925722f004efe92492574110028b37b/$FILE/rhel5_yum_guide_v1.1.pdf

RHEL5における独自yum repositoryの設置

前回、CentOS5用のyum repositoryを設置した。
RHEL5に対しても同様に設置してみる。
RHNへ接続できない オフライン環境 で、サブスクリプション登録なし でRHELを用いたシステムのセットアップを行う場合などを想定。
前回の環境を利用しているので要参照

インストールメディアがあればそれを使う。
なければRHNからisoをDLしてくる。
CentOSの流儀に沿ってディレクトリを用意
# mkdir -p /var/yumrepos/rhel/5.6/os/x86_64
# ln -s /var/yumrepos/rhel/5.6 /var/yumrepos/rhel/5
# chown -R reposman. /var/yumrepos/rhel
ISOをマウントするなり、インストールメディアをマウントするなりしたのち、
repomanユーザーとなりディスクの中身をすべて/var/yumrepos/rhel/5.6/os/x86_64にコピー
以降の作業はrepomanユーザーで行う
ネットワークインストールのときにレポジトリを再利用したいのでディレクトリ構造には手を付けない。
/var/yumrepos/rhel/5.6/os/x86_64/Server/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/VT/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/Cluster/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/ClusterStorage/repodata/
以下のcomp*以外のファイルを削除し
$ cd /var/yumrepos/rhel/5.6/os/x86_64/
$ createrepo -g Server/repodata/comps-rhel5-server-core.xml Server/
$ createrepo -g VT/repodata/comps-rhel5-vt.xml VT/
$ createrepo -g Cluster/repodata/comps-rhel5-cluster.xml Cluster/
$ createrepo -g ClusterStorage/repodata/comps-rhel5-cluster-st.xml ClusterStorage/
でレポジトリ情報を作り直す。
あとは、RHELがインストールされているマシンで/etc/yum.repos.d/rhel-debuginfo.repoをバックアップを取った上で、
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Server
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[VT]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - VT
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[Cluster]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Cluster
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ClusterStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - ClusterStorage
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
と編集して、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成


参考:
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/ec7481a5abd4ed3149256f9400478d7d/4925722f004efe92492574110028b37b/$FILE/rhel5_yum_guide_v1.1.pdf
IBM様は偉大

March 24, 2011

CentOS5における独自yum repositoryの設置

自前のyum repositoryを設置する。これは、自社ネットワークの配下にある数百台の仮想サーバが、アップデートなどのために一斉に外部のレポジトリにアクセスすると、帯域圧迫が激しいためである

レポジトリの実態を/var/yumrepos、レポジトリの管理者ユーザーをreposmanとして
# mkdir -p /var/yumrepos/centos/5.5
# ln -s /var/yumrepos/centos/5.5 /var/yumrepos/centos/5
# useradd reposman
# chown -R reposman. /var/yumrepos
# chkconfig httpd on
と環境を作り、公開のために/etc/httpd/conf.d/yumrepos.confを作成し
Alias /yumrepos /var/yumrepos
<Directory /var/yumrepos>
   Options Indexes FollowSymLinks
</Directory>
を記入し、httpdをスタート。(httpd.confでAllowOverride Allにしておく必要有り)
当然iptablesの80番portは開けておく。
また、レポジトリ作成のためにcreaterepoを導入する
# yum install createrepo
以下の作業はreposmanユーザーにて行う。
まず、外部のレポジトリからファイルを丸ごとコピーしてくる
$ rsync -avrt --exclude='/isos/' --exclude='i386/' --exclude='SRPMS' --exclude='repodata/' rsync://ftp.riken.jp/centos/5.5/ /var/yumrepos/centos/5.5/
このコピーは大変に相手方のサーバーに負荷をかけてしまう
実行時間帯には気を配るべき
また、インストールディスクを所持しているならiso/x86_64以下にコピーして、--exclude='/iso/'をオプションに追加すれば/os以下分負荷を減らせる

コピーが終わったらグループファイルを配置しておく
$ mkdir -m 775 /var/yumrepos/centos/5.5/os/x86_64/repodata
$ mkdir -m 775 $mkdir -m 775 /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ cd /var/yumrepos/centos/5.5/os/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/os/x86_64/repodata/comps.xml
$ cd /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/extras/x86_64/repodata/yumgroups.xml
createrepoを実行する。
extras,osにはグループファイルがあるのでそれを適用する。
$ createrepo /var/yumrepos/centos/5.5/addons/x86_64/
$ createrepo /var/yumrepos/centos/5.5/contrib/x86_64/
$ createrepo /var/yumrepos/centos/5.5/fasttrack/x86_64/
$ createrepo /var/yumrepos/centos/5.5/updates/x86_64/
$ createrepo /var/yumrepos/centos/5.5/centosplus/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/extras/x86_64/repodata/comps.xml /var/yumrepos/centos/5.5/extras/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/os/x86_64/repodata/yumgroups.xml /var/yumrepos/centos/5.5/os/x86_64/
終了したら他のマシンで/etc/yum.repos.d/CentOS-Base.repoから
・mirrorlist行をコメントアウト
・baseurl行を復活、自前のレポジトリを参照するよう変更
させて、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成

March 21, 2011

CentOS5におけるudevを用いたiSCSIのデバイス名固定 とパーティションノードの作成に関して

iSCSIのデバイス名が固定されず不便なので、udevをつかってデバイス名を固定する
この手順は、multipath を使用していないホストのためだけに使用
multipathを使用する場合はこちら

まず、/etc/scsi_id.config ファイルを編集
options=-b の行がコメントアウトしてあることを確認し、以下の行を追加
options=-g
次に対象のiSCSIデバイス(/dev/sdX)のUUIDを調べる
# scsi_id -g -s /block/sdX
3600a0b800013275100000015427b625e
最後に、/ect/udev/rules.d/20-iscsi.rulesを作成し
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME="mydevice"
を記述して終わり
再接続すれば/dev/mydeviceができている.

[2011/11/15追記]
この手法でiscsiのブロックデバイスの名前を固定しても各パーティションまでは名前が固定されない。
つまり、
# parted /dev/mydevice
などとしてパーティションを切っても、mydevice1は見えず、/dev/sd*1だけが見える。
仮想マシンにブロックデバイスごと提供する場合は問題ないが、マウントして使う場合はだいぶ難儀なので、これを解決するためにパーティションノードも作成する。/ect/udev/rules.d/20-iscsi.rulesを
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME{all_partitions}="mydevice"
とする。これでmydevice1~15が作成される。
(1つしかパーティションを切ってなくても15個できるがキニシナイ)
cf. http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html#usbstorage-extra

検索で引っかかるサイトの記述が細かいところで抜けていて死ぬ

参考
http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtualization/sect-Virtualization-Virtualized_block_devices-Configuring_persistent_storage_in_Red_Hat_Enterprise_Linux_5.html

March 19, 2011

CentOS5におけるiSCSIイニシエータの導入・設定

iSCSIイニシエータ環境を整える
# yum install iscsi-initiator-utils
# chkconfig iscsid on
# service iscsid start
でイニシエータを導入・起動

前回設定したターゲットを登録・接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトしておく
# iscsiadm -m node targetip,1 -T targetname --logout
一度接続したターゲットに関しては/var/lib/iscsi/nodes 以下にコンフィグファイルが配置される
iscsi(not iscsid)を有効にしておくとコンフィグファイルを読み込んで自動で接続する
iscsi(not iscsid)はlibvirtを使う場合はバッティングするため無効にしておく必要がある
iscsiを有効にしている環境で、自動接続したくない場合は/var/lib/iscsi/nodes以下のdefaultファイルを
node.startup=automatic

node.startup=manual
と修正するか
# iscsiadm --mode node --op update --targetname targetname --name=node.startup --value=manual
を実行する

/etc/iscsi/iscsid.confのnode.startupを変更しておけばnode 登録をした時に automatic になるか manual になるかの規定値を変更できる

また、iscsi-targetは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータがログアウト処理をせずに再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。これを避けるためイニシエータの起動スクリプトを変更する。
サービスiscsiおよびiscsidの起動スクリプト(initscript)/etc/init.d/{iscsi,iscsid}を修正する。これらのスクリプト中、再起動・停止(RUNLEVEL 6および0)のときに以降の処理を行わない部分があるので、これをコメントアウトし、ターゲットからのログアウトを実行するように変更する。
上記二つの起動スクリプトのstopに対し
#if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
#        success
#        return
#fi
と、該当箇所をコメントアウトする。
ただし、lvm, dm, mdなどマウントしたあとのiSCSIボリュームをいじっているモノとの
RUNLEVEL6,0時の挙動に関しては注意が必要

以上

参考:
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs4iscsi.html
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html

CentOS5におけるiSCSIターゲットの導入・設定

iSCSIターゲット環境を整える
iSCSI Enterprise Tagetを導入する
# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz
現在運用してるkernelにあわせてkernel-develを導入しておく。
また、現在運用していないkernel,kernel-develはremoveしておくとWarningが出ない。
kernel,kernel-develの準備ができたら
# rpmbuild -ta iscsitarget-1.4.20.2.tar.gz
# cd /usr/src/redhat/RPMS
# rpm -ihv iscsitarget* kmod-iscsitarget*
で導入完了。
続いて、設定を行う。設定ファイル/etc/iet/ietd.confを編集する
以下の内容を追記
Target iqn.2011-03.com.example,iscsi:lvm01
 Lun 0 Path=/dev/VolGroup00/lvm01,Type=blockio
 MaxConnections 1
ここでTarget に設定する文字列は "iqn.[ドメイン取得年]-[ドメイン取得月].[ドメイン名 (逆順)]:[任意の識別子]" という形式で指定する必要がある
また、上記の例ではLVMの論理ボリュームをブロックデバイスとして供出している
/etc/sysconfig/networkに設定されたhost名等と相違無いことを確認
# chkconfig iscsi-target on
して再起動
再起動後/var/log/messagesにエラーがはかれていないことを確認
iptablesを設定している場合はiscsi-targetのためにudp,tcpの3260番を解放
アクセス制限は/etc/iet/initiators.allowにて行う
現在動いている設定は
# cat /proc/net/iet/volume
現在のTargetへの接続状況については
# cat /proc/net/iet/session
で確認できる。

正しく設定されているかをイニシエータを用意して確認、別のマシンで
# yum install iscsi-initiator-utils
# chkconfig iscsi on
# service iscsi start
でイニシエータを導入・起動
接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトは
# iscsiadm -m node targetip,1 -T targetname --logout
また、経路の多重化を行う場合は下記を参照
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs3iscsi.html
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs5device.html

以上

March 18, 2011

CentOS5におけるSkype4Pyを使ったSkypeBotの作成

Skype4Pyを用いて、Skypeボットを作成する。
前回前々回でCentOSにSkypeを導入し、デーモン化を行った。

今回も
http://d.hatena.ne.jp/moriyoshi/20100926/1285517353
を参考に進める

まず、easy_installを導入する
# curl -O http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
そして、
# easy_install Skype4Py
# easy_install ctypes
以上でSkype4Pyが導入された

一般的にはDBUSを用いたプロセス間通信を行うが、
どうにもうまくいかなかったのでx11経由で通信を行う
>>> import Skype4Py
>>> skype = Skype4Py.Skype(Transport='x11')
>>> skype.Attach()
上記のコマンドを初回に実行するとPublicAPI利用の許諾等がでるので、許可し記憶させておく
ここまでくれば、あとはPythonの話となる
適当なBotを書いて
$ env DISPLAY=:20 XAUTHORITY=/var/run/skype/Xauthority python bot.py
で実行すればよい

ドキュメントは
http://skype4py.sourceforge.net/doc/html/
を参照のこと

CentOS5におけるSkypeのデーモン化

SkypeをCentOS5.5のデーモンとして扱えるようにする
CentOS5.5はX環境込みでインストール済みとする
前回、CentOS5環境にSkypeを導入した

これを
http://d.hatena.ne.jp/moriyoshi/20100926/1285517353
http://yusukezzz.net/blog/archives/2006
を参考にデーモン化する

まず、必要なパッケージ、
仮想フレームバッファを提供するXvfbと、接続するためのx11vncの導入を行う
Xvfbはおそらく導入済み
x11vncは正規のレポジトリにないのでRPMForgeから導入
# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# yum -y update rpmforge-release
# yum install x11vnc
スクリプトを用意する、上記サイトからlaunch-skype.sh
#!/bin/bash
#
# Init file for daemonized Skype service
#
### BEGIN INIT INFO
# Provides:          skype
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# X-Interactive:     false
# Short-Description: Start/stop daemonized Skype service
### END INIT INFO
#
# chkconfig: 345 80 10
#
# processname: skype
#
# pidfile: /var/run/skype.pid
#

if [ -r /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
    log_daemon_msg() {
        msg=$1
        prog=$2
        echo -n $"$msg $prog: "
    }
    log_end_msg() {
        if [ "$1" = "0" ]; then
            success
        elif [ "$1" = "1" ]; then
            failure
        fi
        echo
    }

elif [ -r /lib/lsb/init-functions ]; then
    . /lib/lsb/init-functions
else
    echo "Could not find a helper script needed to run this script."
    exit 1
fi

DAEMON_USER=skype
PROGNAME=`basename $0`
PIDFILE=/var/run/skype.pid
XSERVERNUM=20
XAUTHFILE=/var/run/skype/Xauthority
LOGFILE=/var/log/skype/error.log
DBPATH=/srv/skype/conf
XAUTHPROTO=.
SKYPE=/opt/skype/skype
USERNAME=echo123
PASSWORD=blah

[ -f /etc/sysconfig/skype ] && . /etc/sysconfig/skype

prog="skype"
RETVAL=0

dircheck() {
    if [ ! -d `dirname "$1"` ]; then
        echo "`dirname \"$1\"` does not exist"
        return 1
    else
        return 0
    fi
}

start() {
    log_daemon_msg "Starting" "skype"
    if ! dircheck "$LOGFILE" || ! dircheck "$XAUTHFILE"; then
        log_end_msg 1
        echo
        RETVAL=1
        return 
    fi 
    MCOOKIE=`mcookie` && \
    sudo -u "$DAEMON_USER" env XAUTHORITY=$XAUTHFILE sh -c "xauth add \":$XSERVERNUM\" \"$XAUTHPROTO\" \"$MCOOKIE\" >> \"$LOGFILE\" 2>&1" && \
    sudo -u "$DAEMON_USER" env XAUTHORITY=$XAUTHFILE sh -c "Xvfb :$XSERVERNUM -screen 0 800x600x8 -nolisten tcp >> \"$LOGFILE\" 2>&1 & echo \$!" >"$PIDFILE" &&
    sleep 3 && \
    (sudo -u "$DAEMON_USER" env DISPLAY=:$XSERVERNUM XAUTHORITY=$XAUTHFILE SKYPE="$SKYPE" sh -c "echo \"$USERNAME $PASSWORD\" | nohup \"$SKYPE\" --dbpath=\"$DBPATH\" --pipelogin &") >> "$LOGFILE" 2>&1 && \
    (log_end_msg 0 && [ -d /var/lock/subsys ] && touch /var/lock/subsys/skype || true) \
        || (RETVAL=$?; kill -TERM `cat $PIDFILE`; log_end_msg 1)
}

stop() {
    log_daemon_msg "Stopping" "skype"
    if [ -e "$PIDFILE" ]; then
        kill -TERM `cat $PIDFILE` && \
        rm -f $PIDFILE && \
        if [ -d /var/lock/subsys ]; then rm -f /var/lock/subsys/skype; fi && \
        log_end_msg 0 || log_end_msg 1
    else
        log_end_msg 1
        RETVAL=1
    fi
}

usage() {
    echo "Usage: $PROGNAME {start|stop|restart}"
}

case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        usage
        RETVAL=255
        ;;
esac

exit $RETVAL
をダウンロードして/etc/init.d/skypeとして保存
スクリプトで変更が必要なのは
DAEMON_USER :どのユーザーでSkypeを起動するか(root以外が望ましい)
DBPATH :どこに履歴等の情報を確保するか
USERNAME :どのSkypeアカウントでログインするか
PASSWORD :上記USERNAMEのアカウントのパスワード
DBPATHは、テスト運用時などに便利なので/home/user/.Skypeを指定するのがオススメ
上記に加えて冒頭を
# chkconfig: 345 99 10 ←(変更)
# description: skype launch script←(追記)
# processname: skype
と編集
また、スクリプトのために
/var/log/skype,/var/run/skypeをDAEMON_USERが読み書きできるように作成
さらに、DBPATHもDAEMON_USERが読み書きできるように作成
以上が終了したら
# chkconfig --add skype
# chkconfig skype on
# service skype start
で自動起動に登録して起動
あとは、
# x11vnc -display :20 -xauth /var/run/skype/Xauthority
とした後に適当なVNCクライアントで接続、利用許諾へのサインや、必要なコンタクトを追加を行う

CentOS5へのSkype導入

SkypeをCentOS5.5のデーモンとして扱えるように環境を整える
CentOS5.5はX環境込みでインストール済みとする
http://wiki.centos.org/HowTos/Skype
を参考に導入を行う
まず、依存パッケージの導入(x86_64環境でもi386系のパッケージの導入が必須なことに注意)
# yum install glib2.i386 qt4.i386 zlib.i386 alsa-lib.i386 libX11.i386 libXv.i386 libXScrnSaver.i386
次は、Skypeのダウンロード
オフィシャルページのリンクをたどってLinux向けのstatic versionパッケージをDL
static versionなので展開するだけで動作する
/optに展開するのがオフィシャルらしい
# cd /tmp
# wget http://www.skype.com/go/getskype-linux-beta-static
# cd /opt
# tar jxvf /tmp/skype_static-2.1.0.81.tar.bz2
# ln -s skype_static-2.1.0.81 skype

最後に、ALSAとかとの連携なんかのためにシンボリックリンクを張って終了

# ln -s /opt/skype /usr/share/skype
# ln -s /opt/skype/skype /usr/bin/skype

あとは一般ユーザーのコマンドラインから$skype &で起動する

導入されたskypeはコマンドラインから--pipeloginなどのオプションが使える
また、環境変数をいじることで出力先などを変えられる