SSブログ

玄箱 Vine 2.6 に samba 3 を入れる [Linux]

DLNA サーバの TwonkyMedia 導入により Mac/Win からフォルダ/ファイル名を UTF-8 で手軽に玄箱へコピーする必要に迫られ、 Vine Linux 2.6 の samba 2.0.10 を 3.x にアップグレードする事にした。UTF-8 未対応の samba 2.x では Mac OS X からの日本語フォルダ/ファイルの書き込みにも難が有り、アップグレードは以前にも一度トライしたのだが、結構大変だったので挫折した経緯がある。普通のファイルなら名前を英数字に変えたり rsync 等の smb 共有以外の転送手段を使うことで済ませられるが、メディアコンテンツを取り扱う DLNA のような用途ではかなり不便が伴う為、頑張ってみることに。

【バージョンの選定】

レガシー な Vine 2.6 用の samba 3.x のパッケージなど見当たらない為、ソースからビルドすることになる。いきなり最新版の 3.0.25 から行こうかとも考えたが、ちょっと古めで Mac OS X 10.4.9 でも採用している 3.0.10 を何となく選定。(うまく行けばまたアップデートして行けば良いだろう。)

【修正 libiconv の導入】

samba 3.x が文字コード変換に使う glibc の iconv() には不具合があるらしく、修正した libiconv を別途導入する方が良いとの話をあちこちで見るので、そうすることに。

# curl -OR http://ftp.kddilabs.jp/GNU/libiconv/libiconv-1.10.tar.gz
# tar zxf libiconv-1.10.tar.gz
# curl -OR http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-ja-1.patch.gz
# cd libiconv-1.10
# gunzip -c ../libiconv-1.10-ja-1.patch.gz | patch -p1
# ./configure
# make ; make check
# su
# make install
# vi /etc/ld.so.conf 
/usr/local/lib を追加
# ldconfig -v

【Samba 3.0.10 のダウンロード及びビルド設定】

# curl -OR http://us1.samba.org/samba/ftp/old-versions/samba-3.0.10.tar.gz
# tar zxf samba-3.0.10.tar.gz
# cd samba-3.0.10/packaging/RedHat
# vi makerpms.sh
 以下3行をコメントアウト(ビルドはせず、spec ファイルの生成だけをさせる為)。
#echo Getting Ready to build release package #cd ${SPECDIR} #${RPM} -ba --clean --rmsource $SPECFILE
# sh makerpms.sh The RPM Version on this machine is: 3.0.6 RPM build command is "rpm" `samba3.spec' -> `/usr/src/redhat/SPECS/samba3.spec' Done. # vi /usr/src/redhat/SPECS/samba3.spec CFLAGS=以下に次の行を追加
--with-libiconv=/usr/local \
# rpm -bb /usr/src/redhat/SPECS/samba3.spec

これですんなりビルドが通れば苦労は無いのだが、以下の依存パッケージがインストールされていない場合はそれらを逐一入れて行くことになる。

Requires: pam openldap krb5-libs
BuildRequires: openldap-devel krb5-devel pam-devel

【依存パッケージのインストール】

# apt-get install pam
# apt-get install pam-devel
# apt-get install openldap
# apt-get install openldap-devel

ここまでは Vine 2.6 に含まれているが、Kerberos認証用ライブラリ krb5 は無いようなのでビルドが必要。

【krb5 のビルドとインストール】

krb5 は Redhat の SRPM があるのでこれを使うことに。Vine 2.6 と glibc のバージョン(2.2.4)が同じ Redhat 7.2 用の krb5-1.2.2-24.src.rpm にしておけばいいかな?という事で:

# cd /usr/src/redhat/SRPMS/
# curl -OR http://ftp.riken.go.jp/Linux/fedoralegacy/redhat/7.2/updates/SRPMS/krb5-1.2.2-24.src.rpm
# rpm --rebuild krb5-1.2.2-24.src.rpm

        e2fsprogs-devel   is needed by krb5-1.2.2-24
        libtermcap-devel   is needed by krb5-1.2.2-24
        rsh   is needed by krb5-1.2.2-24
        texinfo   is needed by krb5-1.2.2-24

良くある依存パッケージの依存パッケージが山ほど出るパターンだが、めげずに進める。

# apt-get install e2fsprogs-devel
# apt-get install libtermcap-devel
# apt-get install rsh
# apt-get install texinfo
# rpm --rebuild krb5-1.2.2-24.src.rpm

/var/tmp/rpm-tmp.62937: libtoolize: command not found
   
# apt-get install libtool
# rpm --rebuild krb5-1.2.2-24.src.rpm

何とか apt-get だけでしのげた。以下の4パッケージが生成される:

/usr/src/redhat/RPMS/ppc/krb5-devel-1.2.2-24.ppc.rpm
/usr/src/redhat/RPMS/ppc/krb5-libs-1.2.2-24.ppc.rpm
/usr/src/redhat/RPMS/ppc/krb5-server-1.2.2-24.ppc.rpm
/usr/src/redhat/RPMS/ppc/krb5-workstation-1.2.2-24.ppc.rpm

samba 3 に必要な物だけをインストール。

# rpm -ivh krb5-libs-1.2.2-24.ppc.rpm 
krb5-libs                   ##################################################
# rpm -ivh krb5-devel-1.2.2-24.ppc.rpm
krb5-devel                  ##################################################

【Samba 3.0.10 のビルド(rpm 作成)】

やっと samba のビルドが出来る環境が整った。

# rpm -bb /usr/src/redhat/SPECS/samba3.spec

待つ事2時間(遅っ)、以下のパッケージ(サイズ22MB)がめでたく完成する。

/usr/src/redhat/RPMS/ppc/samba-3.0.10-1.ppc.rpm

早速インストール。まずは Samba 2.x の削除から。

# service smb stop
Shutting down SMB services:                                [  OK  ]
Shutting down NMB services:                                [  OK  ]
#
# rpm -qa | grep samba
samba-common-2.0.10_ja_1.2-0vl3.26
samba-client-2.0.10_ja_1.2-0vl3.26
samba-2.0.10_ja_1.2-0vl3.26
# rpm -e samba-client
# rpm -e samba
# rpm -e samba-common
# rpm -ivh /usr/src/redhat/RPMS/ppc/samba-3.0.10-1.ppc.rpm
error: failed dependencies:
        libiconv.so.2 is needed by samba-3.0.10-1

libiconv は rpm では無く /usr/local に手動で入れてあるので、このエラーだけなら依存関係を無視して強制インストールして良いはず。

# rpm -ivh --nodeps /usr/src/redhat/RPMS/ppc/samba-3.0.10-1.ppc.rpm
samba                       ##################################################
Installing stack version of /etc/pam.d/samba...

【設定&起動】

smb.conf の編集、smbpasswd の移動。

# cd /etc/samba
# vi smb.conf
[global] dos charset = CP932 unix charset = UTF-8 display charset = CP932 (その他諸々)
# mv /etc/smbpasswd /etc/samba/smbpasswd

samba 3.0.10 の起動スクリプトは Vine 2.6 と相性が悪く、stop した時に pid ファイルを削除してくれない等の不具合多し。中身を比べた結果さほどやってる事は変わらなさそうなので、以前の samba 2.x の物を編集して使うことにした。

# cd /etc/rc.d/init.d
# mv smb smb3
# mv smb.rpmsave smb
# vi smb
(「/etc/smb.conf 」を 「/etc/samba/smb.conf」 に変更するだけ)
# chkconfig --del smb
# chkconfig --add smb
# chkconfig smb on
# service smb start
Starting SMB services:                                     [  OK  ]
Starting NMB services:                                     [  OK  ]

(おまけ) ちゃんと修正 libiconv が使われているかどうかをチェックする為、smb.conf で unix charset に EUCJP-MS 等の標準 glibc iconv()には無いコードを指定し、service smb restart してみる。/var/log/samba/log.smbd に何もエラーが出なければOK。

【smbchartool によるフォルダ/ファイル名変換】

samba 2.x で作られた EUC のフォルダ/ファイル名を UTF-8 に一括変換する為に smbchartool + libiconv対応パッチを導入する。最近は convmv がメジャー?のようだが、こっちは perl 5.8 が必須。またもや必死こいて perl 5.8 for Vine 2.6 をビルドするのも疲れるのでやめ。
まずは、Text::iconv モジュールと jcode.pl ライブラリから:

# curl -OR http://ftp.kddilabs.jp/CPAN/modules/by-module/Text/Text-Iconv-1.4.tar.gz
# tar zxf Text-Iconv-1.4.tar.gz
# cd Text-Iconv-1.4
# perl Makefile.PL LIBS='-L/usr/local/lib' INC='-I/usr/local/include' -liconv
# make install
#
# curl -OR http://www.srekcah.org/jcode/jcode.pl-2.13
# mv jcode.pl-2.13 /usr/local/lib/site_perl/jcode.pl

続いて、smbchartool:

# curl -OR ftp://ftp.samba.gr.jp/pub/samba-jp/tool/smbchartool-2.3a.tar.gz
# tar zxf smbchartool-2.3a.tar.gz
# curl -OR http://www.miraclelinux.com/technet/samba30/download/smbchartool-2.3a_3.0a.diff.gz
# cd smbchartool
# gunzip -c ../smbchartool-2.3a_3.0a.diff.gz | patch -p1
# ./INSTALL.sh
Where do you want to install? [/usr/local/bin/]
Now start install smbcharconv tool to /usr/local/bin/ sure? (y/[n])y
Install smbfnconv ...
Install capecho ...
Install hexecho ...
Do you wanto to make symlink like 'euctohex'? (y/[n])n
#
# smbfnconv -d -f euc -t utf8 共有フォルダのパス
(-d で確認モードになっているので、出力を見ながら期待通りの動作が行われることを確認)
# smbfnconv -f euc -t utf8 共有フォルダのパス
(実際にフォルダ/ファイル名変換が行われる)

【動作確認】

・Mac OS X から日本語フォルダ/ファイル名の読み書き → OK。
DLNA サーバ TwonkyMedia へ接続したクライアントでの日本語表示 → OK。


玄箱で DLNA サーバー (2) [Linux]

TwonkyMedia で日本語表示がうまく行かない場合(=文字化け)がある件だが、ドキュメントを良く読むと文字コードが UTF-8 になっていれば問題無い事が判明。

例えば Mac/Win の iTunes から Windows 共有(smb)でコピーした音楽ファイルの場合:
・ ID3タグ(曲名,アルバム名等)によるブラウス → 日本語表示OK (iTunes の ID3 タグは UTF-8)
・フォルダ/ファイル名によるブラウズ → 日本語表示NG (玄箱上では EUC)
となり、同じものを rsync でコピーすると
・フォルダ/ファイル名によるブラウズ → 日本語表示OK (玄箱上でも UTF-8)
となる。

これは玄箱の samba の設定でローカル側の文字コードを EUC にしている為で、設定を UTF-8 に変更すれば良い。ところが我が家の玄箱で動いている samba は UTF-8 未対応の 2.x系列 (2.0.10)な為、これを 3.0系列にアップグレードする必要がある。だが相当 legacy な Vine Linux 2.6 用の samba 3.0 パッケージなど見当たらず、先日の openssh 同様、またもやソースからビルドすることに。

結構な作業を経て何とか samba 3.0.10 へのアップグレードが完了し、 smb 共有で玄箱にコピーした日本語フォルダ/ファイル名のコンテンツも無事 DLNA クライアント(DiXiM や VGF-WA1)で日本語表示可能となった。ただしコピー後に Mac/Win から日本語フォルダ名を変更すると TwonkyMedia に認識されなくなるようで、まだもう少し調べてみる必要がありそう。

また、VGF-WA1 から TwonkyMedia を使う上で嬉しい事がもう一点。VGF-WA1 のインターネットラジオ再生機能は live365.com という有料サービスに固定されており、月額US$5.95〜年額US$47.40を払わないと10局程度の無料局しか聴けないというお粗末な仕様になっている。だが TwonkyMedia には無料のインターネットラジオ局の放送を通常の音楽ファイルに見せかけて送出する機能があり、これを使えば shoutcast.com にある数千局のラジオ局を VGF-WA1 で聴くことが可能になる。


VGF-WA1 で TwonkyMedia Server のインターネットラジオに接続

Roku SoundBridge や PC でインターネットラジオを聴く時の様にオンエア中の曲名やアーチスト名が出ないのはちょっと残念だが、live365.com にいつまでもお金を払い続けるよりは US$39.95 で TwonkyMedia のライセンスを購入した方がよっぽど良い...かもしれない。

SONY Wi-Fi オーディオ ホワイト VGF-WA1/W

SONY Wi-Fi オーディオ ホワイト VGF-WA1/W

  • 出版社/メーカー: ソニー
  • 発売日: 2007/02/18
  • メディア: エレクトロニクス


玄箱で DLNA サーバー [Linux]

ふだん玄箱に貯めた音楽ファイルを iTunes サーバ (mt-daapd) を使いネットワーク経由で iTunes や Roku Soundbridge で聴いているが、新たに台所用として据置のネットワークミュージックプレイヤー(ソニー VGF-WA1)を導入した。この WA1 は DLNA というコンテンツ共有の規格に準じた作りになっており、サーバ側でも DLNA に対応している必要がある。まずは添付の Windows 用サーバソフトで使ってみるが、やはり使う度に PC を起動する必要があるのは全くよろしく無い。玄箱/Vine Linux で何とかならんかと調べてみると、オープンソースで DLNA 対応を謳うサーバはまだ存在せず、玄箱のような NAS 用の物としては米国製の Macrovision (旧名Mediabolic) Media Server 及び日本製の DiXiM Media Server,そしてドイツ製の TwonkyMedia 等の商品があるようだ。このうち Macrovision は ホームサーバ機能搭載タイプの Buffalo Linkstation、DiXiM は Princeton のデジ蔵, Twonky は海外で販売されている Fujitsu-Siemensの製品等で使われているが、Linux版がサーバソフト単体で一般個人に販売されているのは TwonkyMedia (EUR29.95/USD39.95)だけである。

そこで、TwonkyMedia の30日間試用版を玄箱 Vine 2.6にインストールしてみることに。ダウンロードサイトには Win, Linux(x86), Mac 用の他に各種NAS用の専用ページがあり、ざっと50近い機種/プラットホーム用のバイナリパッケージが用意されている(このあたり、生真面目なドイツ人気質を感じる)。玄箱用としては、Windows マシンからネットワーク経由でインストールする twonkymedia-kurobox.zip の他、Linux/PPC プラットホーム汎用の twonkymedia-powerpc-glibc-2.2.5.zip 及び twonkymedia-powerpc-uclibc-0.9.28.zip がある。 twonkymedia-kurobox.zip はインストール動作がいまひとつ不明なのと独自に構築した環境との整合性に不安があるのでパスし、twonkymedia-powerpc-glibc-2.2.5.zip を使うことにした。Vine 2.6 の glibc は 2.2.4 だが、まあ 0.0.1 くらいの差は何とかなる..でしょう。

1) パッケージのダウンロード及び展開

# curl -OR http://www.twonkyvision.com/Download/4.3/twonkymedia-powerpc-glibc-2.2.5.zip
# mkdir /usr/local/TwonkyVision
# unzip twonkymedia-powerpc-glibc-2.2.5.zip -d /usr/local/TwonkyVision

2) 起動スクリプトの作成&設定

(同梱の起動スクリプト twonkymedia.sh がうまく動かないので apache の物を参考に自作する)
# vi /etc/init.d/twonkymedia
#!/bin/bash
#
# Startup script for TwonkyMedia on Vine 2.6
#
# chkconfig: 345 71 29
# description: TwonkyVision UPnP Server
# processname: twonkymedia
# pidfile: /var/run/twonky.pid
# config: /usr/local/TwonkyVision/twonkyvision-mediaserver.ini

# Source function library.
. /etc/rc.d/init.d/functions

# Source additional OPTIONS if we have them.
if [ -f /etc/sysconfig/twonkymedia ] ; then
        . /etc/sysconfig/twonkymedia
fi

# Path to the binaries.
twonkydir=/usr/local/TwonkyVision
twonkymedia=${twonkydir}/twonkymedia
twonkyinit=${twonkydir}/twonkyvision-mediaserver.ini
prog=twonkymedia
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        daemon $twonkymedia -inifile $twonkyinit
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/twonkymedia
        return $RETVAL
}
stop() {
        echo -n $"Stopping $prog: "
        killproc $twonkymedia
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/twonkymedia /var/run/twonky.pid
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $twonkymedia
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|status}"
        exit 1
esac

exit $RETVAL
# chmod 755 /etc/init.d/twonkymedia
# chkconfig -add twonkymedia

3)サービスの起動

# service twonkymedia start
Starting twonkymedia:                                      [  OK  ]

あとは、PC からブラウザで設定ページ(http://玄箱のアドレス:9000/)にアクセスして細かい設定をすればOK。言語は日本語も選択出来る。

VGF-WA1 で接続した状態

SoundBridge で接続した状態

DiXiM Media Client (Windows XP) で接続した状態

取り敢えず接続し曲目のブラウズ・再生も出来たが、気になるのは日本語ファイル名の扱い。今のところうまく表示出来る場合と出来ない場合があり、もう少し調べてみる事にする。


玄箱で OpenSSH のアップグレード (その後) [Linux]

玄箱 Vine 2.6 の OpenSSH をアップグレードしたところ、その昔に仕掛けた辞書攻撃(Brute force attack)対策のスクリプトが機能していない事を発見。
原因は、OpenSSH の吐くログの表現がちょっとだけ変わったこと。

以前のバージョン (Vine 2.6 updates の openssh-server-3.6.1p2-0vl0.3.ppc.rpm)

Aug 28 05:16:08 kurobox sshd[27763]: Illegal user optic from xxx.xxx.xxx.xxx
Aug 28 05:16:10 kurobox sshd[27765]: Illegal user service from xxx.xxx.xxx.xxx
Aug 28 05:16:11 kurobox sshd[27767]: Illegal user admin from xxx.xxx.xxx.xxx
Aug 28 05:16:12 kurobox sshd[27769]: Illegal user danielle from xxx.xxx.xxx.xxx
Aug 28 05:16:14 kurobox sshd[27771]: Illegal user nexus from xxx.xxx.xxx.xxx
(IPアドレスは伏せ字)

新しいバージョン (ソースからビルドした openssh-server-4.6p1-1.ppc.rpm)

May 21 21:03:48 kurobox sshd[30153]: Invalid user admin from xxx.xxx.xxx.xxx
May 21 21:03:49 kurobox sshd[30155]: Invalid user admin from xxx.xxx.xxx.xxx
May 21 21:03:50 kurobox sshd[30157]: Invalid user admin from xxx.xxx.xxx.xxx
May 21 21:03:55 kurobox sshd[30159]: Invalid user ftpuser from xxx.xxx.xxx.xxx
May 21 21:03:56 kurobox sshd[30161]: Invalid user ftpuser from xxx.xxx.xxx.xxx
(IPアドレスは伏せ字)

どうも "Illegal" が "Invalid" に変更されたようだ。
スクリプトの該当部分を以下のように修正して対応。

if ( /Invalid user ¥w+ from $IPADDR/ or 
			/Did not receive identification string from $IPADDR/ ) 

動作もOK。

May 24 00:39:27 kurobox sshd[18328]: Did not receive identification string from xxx.xxx.xxx.xxx
May 24 00:46:26 kurobox sshd[18333]: Invalid user staff from xxx.xxx.xxx.xxx
May 24 00:46:30 kurobox sshd[18337]: Invalid user sales from xxx.xxx.xxx.xxx
May 24 00:46:33 kurobox sshd[18341]: Invalid user recruit from xxx.xxx.xxx.xxx
May 24 00:46:35 kurobox ssh-block[18347]: Blocked xxx.xxx.xxx.xxx for 5min 
(IPアドレスは伏せ字)

玄箱で OpenSSH のアップグレード (rpm編) [Linux]

一昨日に引き続き調べてみると、OpenSSH は ソースから Redhat 用の rpm パッケージが比較的簡単に作成出来る事が分かり、早速試してみる。

1) ソースのダウンロード

# cd /usr/src/redhat/SOURCES
# curl -OR http://ftp.kddilabs.jp/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz

2) spec ファイルの取り出し&編集

# tar zxfO openssh-4.6p1.tar.gz openssh-4.6p1/contrib/redhat/openssh.spec
  > /usr/src/redhat/SPECS/openssh.spec
# vi /usr/src/redhat/SPECS/openssh.spec
%define no_x11_askpass 1 (末尾の0を1に変更)
%define no_gnome_askpass 1 (末尾の0を1に変更)
玄箱には X11を入れていないので関連パッケージのビルドを省略。

3) パッケージのビルド

# rpm -bb /usr/src/redhat/SPECS/openssh.spec
(Ver.4 以降の rpm の場合、rpmbuild -bb  /usr/src/redhat/SPECS/openssh.spec)
足りないパッケージがあるとビルドが止まるのでその都度該当パッケージを追加して
やり直す。玄箱 Vine 2.6 では apt-get install pam-devel が必要だった。
問題無く完了すれば以下のファイルが作成される。
/usr/src/redhat/RPMS/ppc/openssh-4.6p1-1.ppc.rpm
/usr/src/redhat/RPMS/ppc/openssh-clients-4.6p1-1.ppc.rpm
/usr/src/redhat/RPMS/ppc/openssh-server-4.6p1-1.ppc.rpm
所要時間は14分弱(遅っ)

4) telnet の有効化・一時パスワード設定・telnet で再ログイン
5) インストール済 OpenSSH の停止・削除

前回内容参照

6) 新バージョンのインストール・起動

# cp -a /etc/ssh /etc/ssh.bak (configファイル・ホストキーのバックアップ)
# rpm -ivh /usr/src/redhat/RPMS/ppc/openssh-4.6p1-1.ppc.rpm
# rpm -ivh /usr/src/redhat/RPMS/ppc/openssh-clients-4.6p1-1.ppc.rpm
# rpm -ivh /usr/src/redhat/RPMS/ppc/openssh-server-4.6p1-1.ppc.rpm
# rm -rf /etc/ssh
# mv /etc/ssh.bak /etc/ssh
# service start sshd

7) 接続確認
8) telnet の無効化・一時パスワード復旧

前回内容参照

Redhat用のrpmでも Vine で特に問題無く動いている模様。
なおX11が入っている場合は spec ファイルを変更せずともビルド出来る。ただし SOURCES に http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-1.2.4.1.tar.gz をダウンロードし、旧パッケージの削除時には rpm -e --nodeps を使って複雑な依存関係を無視させる必要あり。RPMS に askpass 関連2個& debug の rpm が追加で作成される。OpenSSH のソースから make install-nosysconf でインストールしてしまった物の削除はソースディレクトリから make uninstall で行い、/etc/ssh/sshd_config や /etc/rc.d/init.d/sshd 等に残った /usr/local 部分の修正を適宜行えばOK。


玄箱で OpenSSH のアップグレード [Linux]

職場のマシン(RedHat 9)で OpenSSH のアップグレードが必要となり、練習がてら(笑)自宅サーバーの玄箱 Vine 2.6 で試してみた。共に既にサポートが終了しているディストリビューションなので、rpm で手軽にアップグレードという訳には行かず、ソースからビルドすることに。今回は /etc/ssh 以下にある現在の設定ファイルを残し再利用する形で /usr/local にインストールする点がポイント。

1) ダウンロード&コンパイル

# curl -OR http://ftp.kddilabs.jp/OpenBSD/OpenSSH/portable/openssh-4.6p1.tar.gz
# tar zxf openssh-4.6p1.tar.gz
# cd openssh-4.6p1
# ./configure --sysconfdir=/etc/ssh
# make
コンパイル時間は約8分と長い。そろそろ玄箱HGにでもしたいところ..。

2) インストール & 設定確認

# make install-nosysconf
(ここで install-nosysconf することで設定ファイルのコピーやキーの生成が省略される)
# /usr/local/sbin/sshd -t (何も表示されなければOK)

3) telnet を有効化

# vi /etc/inetd.conf 
telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
(↑この行のコメントアウトを解除)
# service restart inet
(xinetd の場合は /etc/xinetd.d/telnetを編集して service xinetd restart)

4) telnet 接続用にパスワードを一時的に変更

# passwd
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully

5) ssh 接続を全て切断し、telnet でログイン

6) インストール済み ssh の停止・削除

# service sshd stop
# cp -a /etc/ssh /etc/ssh.bak (念のため)
# rpm -e openssh-clients
# rpm -e openssh-server
# rpm -e openssh

7) 起動スクリプトのインストールと編集、登録

# cp openssh-4.6p1/contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
# vi /etc/rc.d/init.d/sshd
KEYGEN=/usr/local/bin/ssh-keygen (パスを /usr/bin から /usr/local/bin に変更)
SSHD=/usr/local/sbin/sshd (同上)
# chkconfig --add sshd

8) 設定ファイルの復旧と編集

# mv /etc/ssh.bak /etc/ssh
# vi /etc/ssh/sshd_config
Subsystem       sftp    /usr/local/libexec/sftp-server (パスを変更)
# vi /etc/man.config
MANPATH /usr/local/share/man (この行を追加)
OpenSSH は何故かここを使う。
インストール前にMakefileのdatarootdirを変更しておけばこの処理は不要

9) サービスの起動

# service sshd start

10) telnet 接続を切断し、ssh で接続し直す

11) telnet の無効化、パスワードの復旧

# vi /etc/inetd.conf 
#telnet stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
(↑この行をコメントアウト)
# service inet restart
(xinetd の場合は /etc/xinetd.d/telnetを編集して service xinetd restart)
# passwd
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully

iTunes 6.0.4 対応 mt-daap 0.2.4 [Linux]

iTunes が 6.0.4 にアップデートされた結果、玄箱 iTunes サーバーがソース一覧には表示されるものの、接続が出来なくなった。早速 mt-daap のサイトを見てみると、この問題に対応した mt-daap 0.2.4 がリリースされている。ダウンロードページから mt-daapd-0.2.4.tar.gz を入手・展開し、root になって

# service mt-daap stop
# ./configure
# make
# make install
# service mt-daap start


でアップデート完了し、接続復活。/etc/init.d/mt-daap などの設定ファイルは更新されず、そのままでオッケーな模様。


mt-daapd トラブル [Linux]

突然、iTunes に玄箱 mt-daapd サーバが表示されなくなった。

ログファイルを見てみると、

# tail /var/log/mt-daapd/mt-daapd.log
(中略)
2005-12-03 16:35:25: Starting rendezvous daemon
2005-12-03 16:35:25: Starting signal handler
2005-12-03 16:35:26: Loading playlists
2005-12-03 16:35:26: Initializing database
2005-12-03 16:35:26: Starting mp3 scan
2005-12-03 16:35:26: Error scanning MP3 files: Permission denied
2005-12-03 16:35:26: Aborting
2005-12-03 16:35:26: Rendezvous socket closed (daap server crashed?) Aborting.
2005-12-03 16:35:26: Aborting

玄箱の mp3 ライブラリは PowerMac G3 の iTunes で管理しているライブラリを rsync でコピーした物なのだが、先日の MacOS アップグレードを機に iTunes ライブラリのパーミッションを所有者以外アクセス禁止にしてしまった事が原因だったようだ。

早速修正し rsync し直したが、mt-daapd がうまく起動しない。mt-daapd の異常終了時に以下のファイルが消去されずに残っている為だと判明。

/var/run/mt-daapd.pid
/var/lock/subsys/mt-daapd

上記ファイルを root 権限で消去したところ無事起動し、iTunes でのサーバ表示も復活。

# rm /var/run/mt-daapd.pid 
rm: remove `/var/run/mt-daapd.pid'? y
# rm /var/lock/subsys/mt-daapd 
rm: remove `/var/lock/subsys/mt-daapd'? y
# service mt-daapd start 
Starting DAAP server:                                      [  OK  ]

玄箱を iTunes 5 対応サーバーにする [Linux]

メインマシン PowerMac G3 の iTunes フォルダのバックアップを玄箱(Vine Linux 2.6)に取るのと共に、iTunes サーバーとしてLAN内の他の PC から iTunes で音楽を共有出来るようにしてみた。

OS X ハッキング! の記事によると、Linux で iTunes サーバーを立てるには Howl, libid3tag, mt-daapd の3点が必要とのこと。最後の2点は こちら で Linkstation 用の PPC バイナリが配布されていたが、iTunes 5 に対応した最新バージョンではない。

そこで最新版をそれぞれソースからコンパイルすることに。

・Howl 1.0.0 (ダウンロード先)
コンパイルは ./configure; make; make install で問題無し。/usr/local/bin 及び /usr/local/lib にバイナリとライブラリがインストールされる。続いてソースディレクトリの起動スクリプト etc/mDNSResponder 及び etc/nifd を root 権限で /etc/rc.d/init.d にコピー。nifd の方はパス名の記載漏れがあるので、28行目を以下のように修正:

(誤) nifd $OTHER_NIFD_OPTS
(正) /usr/local/bin/nifd $OTHER_NIFD_OPTS


最後に以下の手順でサービスを登録する。

# chkconfig --add nifd
# chkconfig --add mDNSResponder
# service nifd start
# service mDNSResponder start
「OS X ハッキング!」の記述とは異なり、mt-daapd の動作に howl は必ずしも必要では無いことが判明。howl を無効化するには以下の手順でサービスの停止&自動起動の解除を行う。(2005/09/19 20:57)
# service mDNSResponder stop; service nifd stop
# chkconfig --del mDNSResponder
# chkconfig --del nifd
howl が不要な理由は、現行の mt-daapd は howl の担っていた Bonjour 機能を内蔵している為。(2006/09/24)

・libid3tag 0.15.1b (ダウンロード先)
./configure で zlib.h が無いと怒られたので、apt-get で zlib-devel をインストールする必要があった。

 # apt-get install zlib-devel
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  zlib-devel 
0 packages upgraded, 1 newly installed, 0 to remove(replace) and 0 not upgraded.
Need to get 61.2kB of archives. After unpacking 165kB will be used.
Get:1 http://www.t.ring.gr.jp 2.6/ppc/main zlib-devel 1.1.4-0vl2 [61.2kB]
Fetched 61.2kB in 7s (7966B/s)
Executing RPM (-U)...
zlib-devel                  ##################################################


あとは、make; make install でOK。/usr/local/lib にインストールされる。ライブラリなので、設定は特に必要なし。

・mt-daapd 0.2.3 (ダウンロード先)
上の例と同様に ./configure が gdm.h not found で止まったので、 apt-get install gdm-devel を実行。あとは make; make install で問題無し。次ぎに起動スクリプト contrib/mt-daapd を /etc/rc.d/init.d にコピーし、以下の修正を加える:

17行目:(誤) daemon mt-daapd → (正) daemon /usr/local/sbin/mt-daapd
26行目:(誤) killall -INT mt-daapd → (正) #killall -INT mt-daapd
27行目:(誤) # killproc mt-daapd → (正) killproc mt-daapd
13行目:(追加) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib


続いてに設定ファイル contrib/mt-daapd.conf を /etc にコピーし、マシン環境に合わせて編集。うちでは、

web_root      /usr/local/share/mt-daapd/admin-root
admin_pw      *******
mp3_dir        /export/mp3
servername    kurobox


の4箇所を変更した。mp3_dir で指定した共有ディレクトリ及びその中の音楽ファイルに対してユーザー nobody が読み出し権限を持っている必要があるのに注意。最後に howl と同様にサービスの登録&起動を行えば、 LAN 内マシン上の iTunes でソース一覧に自動的に青いアイコンの共有先として現れる。

# chkconfig --add mt-daapd
# service mt-daapd start


また、http://kurobox:3689 で web ブラウザからの設定も可能。(名前解決出来ない場合は http://192.168.0.100:3689 のように IP アドレス指定でも可)

PowerMac G3 (OS X 10.2.8) から 玄箱(Vine Linux 2.6) への音楽ライブラリのバックアップには rsync を使用。PowerMac のターミナルで以下のコマンドを書いたスクリプトを実行して同期するようにした。(画面の都合上⇒部分で改行。)

$ rsync -avW -e ssh --delete --exclude '.DS_Store' ⇒
            $HOME/Music/iTunes/iTunes\ Music kurobox:/export/mp3

iTMS-J で購入した曲も、共有先マシンの iTunes を購入時のアカウントで認証しておけば再生出来る模様(未認証の場合、再生時に認証ダイアログが表示される)。日本語の曲名も問題無いようだ。デフォルトで mt-daapd は クライントの接続時に共有フォルダをスキャンしてファイルリストを再構築するせいか、玄箱の非力さ故に接続までにちょっと時間がかかる気がするが、まあ良しとする。

あと、mt-daapd の contirb/mt-daapd.playlist を /etc にコピーして編集すれば Smart Playlist を作ることも出来るらしい。

しばらく使っていると、何かのきっかけで共有先として見えなくなることがある。原因は不明。root で service mt-daapd restart とやれば再び現れる。(2005/09/19 21:01)
上記の問題だが、クライアント側で iTunes を終了した後に発生することが分かった。検索した結果、以下のように NIC をプロミスキャスモード(他人宛のパケットを破棄せずに全て受け取るモード)にすれば解決するとのこと(情報源:mt-daapd forum の投稿)。恒久対策とは思えないが、他に策が無いのでしばらくはこの手で行くことに。(2005/09/19 22:23)
# /sbin/ifconfig eth0 promisc
NIC をプロミスキャスモードにしないといけないのは Linux PPC の持つ根本的な問題で、 「/sbin/ifconfig eth0 promisc するしかない」というmt-daapd の作者のコメントを発見。こうなれば仕方ないので、起動スクリプト /etc/rc.d/init.d/mt-daapd の start 部分にこの1行を加えることで対処。(2005/09/19 23:01)
自分の環境では影響なかったのだが、iTunes 5 では環境設定の「一般」で「表示: □ ラジオ」のチェックボックスをオンにしてインターネトラジオを表示するようにしておかないと DAAP 共有が見えないらしい(一種のバグか?)。(2005/09/19 23:57)

 

iPod & iTunes hacks—デジタルミュージックを自由に楽しむテクニック

iPod & iTunes hacks—デジタルミュージックを自由に楽しむテクニック

  • 作者: エディックス, Hadley Stern
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2005/05
  • メディア: 単行本


PayPal で Vim に寄付 [Linux]

15年近く前に新入社員のプログラミング研修で Unix を触って以来、プログラミングなどの際のテキストエディタにはずっと vi を使って来た。特に最近では高機能化とマルチプラットホーム化が進んだ vi クローンの vim [1]を愛用している。馴染むほどに良くなる操作性と、Linux/Windows/Mac のどの環境でも同じエディタを使えるというメリットは大変大きい。

ところでこの vim, 完全な freeware では無く、作者が支援するウガンダ孤児の為の慈善事業への寄付を使用者にお願いしている donation ware である。長年利用し恩恵を受けて来たユーザーとしていつかは寄付しないとなあと思いつつ、オランダに小切手を送るという煩雑かつ手数料の高い手段しか無い為、永らく実現に至っていなかった。

先日米国の送金/受取りシステム PayPal を使い始めた[2]のを機に、久しぶりに vim のサイトで送金方法を調べてみた。するとやはり PayPal に対応している他、リンクを辿って欧米の Amazon から書籍を購入することでも寄付出来るようになっていることを発見。

Amazon で海外発送を頼んでも送料がバカらしいので、早速 PayPal で心ばかりの額 (US$ 10.00)の送金手続きをする。交換レートは 113.1 YEN/USD と相場の中値 +2円程度。通常のクレジットカード利用に比べ 1円ほど高いが、小切手や郵便為替の手数料に比べたら微々たるもの。便利な世の中になったものだ。

と、数時間後に作者の Bram Moolenaar からお礼のメールが届く。自動返信だとは思うが、ちょっといい気分。これからも vim を愛用していきたい気持ちになる。

[1] http://vim.sourceforge.net/
[2] http://blog.so-net.ne.jp/fullcover/2005-08-06

 

ViIMproved‐Vim完全バイブル

ViIMproved‐Vim完全バイブル

  • 作者: Steve Oualline
  • 出版社/メーカー: 技術評論社
  • 発売日: 2004/05
  • メディア: 単行本


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。