玄箱で遊ぶ:その他メモ


玄箱の Debian GNU/Linux Saege化が終了したので、その他の細々した設定を行います。
そのときのメモです。

SSHのインストール

今の状態で玄箱をリモート管理には telnet を使う必要があります。
telnetをローカルで使用する場合は、問題ありませんが、外部からの管理にはセキュリティ上好ましくありません。
また、ftpも生きたままです。
玄箱から、telnet と ftp を削除しリモート管理にsshを使えるように設定します。

# apt-get install ssh ←sshのインストール

インストール終了後、 putty・WinSCP での接続を確認します(Windowsからのリモート環境の設定を参照)。
接続が確認できれば、telnet と ftp を削除します。

# apt-get remove telnetd ←telnetサーバの削除
# apt-get remove proftpd ←ftpサーバの削除

外部からの接続を試みると失敗します。
調べてみると、下記ファイルで外部からの接続を拒否していました。
接続許可ホスト定義ファイル /etc/hosts.allow
接続禁止ホスト定義ファイル /etc/hosts.deny

両ファイルの内容を全てコメントアウトし、どこからのアクセスも許可するように変更しました。
注意:外部からの接続を全て許可する→セキュリティ上危険な状態

ntpのインストール


# apt-get install ntp ntpdate ntp-simple

時計の自動設定で解説したときからパッケージ構成が変わっているようです。

PostgreSQL用ユーザwww-dataの作成


郵便番号検索の為、PostgreSQLのユーザにwww-dataを登録する必要があります。

# su postgres ←ユーザをpostgresに変更
$ createuser www-data ←PostgreSQLにユーザwww-dataを登録
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) y
CREATE USER

メール関連の設定


メールサーバーの設定後、popすると、メールの受信が出来ずに下記エラーログに下記メッセージが残っていました。

S: -ERR [SYS/TEMP] Failed to create /var/spool/pop/.alk.pop with uid 1001, gid 11. Change permissions.

/var/spool/pop/のパーミッションを変更してこのエラーを回避しました。

ストリーミング・サーバー(Darwin Streaming Server)


開発環境がインストールされていなかったので、gccとg++をインストールしました。
# apt-get install gcc
# apt-get install g++
ここにあるように、DSS-v5_0_3_2.zipを展開したディレクトリで Buildit を実行します。
しかし、エラーメッセージを大量に出力しコンパイルが通りません。
# ./Buildit

undefined reference to `__gxx_personality_v0' ←このエラーを大量に出力

調べてみると、g++のバージョン変更により stdc++ のライブラリを指定しなければならなくなったようです。
この対応の為にBuilditを修正します。

Builditの27行目を修正
修正前 修正後
CORE_LINK_LIBS="-lpthread -ldl -lm -lcrypt" CORE_LINK_LIBS="-lpthread -ldl -lm -lcrypt -lstdc++"

これで Buildit を実行すると上記のエラーはなくなりましたが、まだ他のエラーを出力しています。
エラーの箇所は BroadcasterMain.cpp の223行目と225行目です。
この箇所を下記のように変更しました

MP3Broadcaster/BroadcasterMain.cppの223行目〜225行目
修正前 修正後
act.sa_mask = 0;
act.sa_flags = 0;
act.sa_handler = (void(*)(...))&SignalEventHandler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
act.sa_handler = (void(*)(int))&SignalEventHandler;

これで、エラーなしでコンパイル(Buildit)が通るようになりました。