CPANからPlaggerいれた。

ubuntuPlaggerいれてみた。

インストールついでにRootになる方法がわかったので。これからはSudoじゃなくてRootになる。というかubuntuはユーザーのPATHにsuが入っていないだけだった。

usr>sudo su root //rootでGo
root>cpan
..
cpan>o conf urllist push htp://any.cpan.ring.server //kddiを選択した
cpan>o conf commit
cpan>quit
root>cpan install Plagger < /deb/null
....

Plaggerのインストールの長いこと。あまりにの長さに途中で飽きました。

CPANの設定に失敗したら

>perl -V //Perlの@INCを確認
>rm /usr/local/share/perl/5.8.8/CPAN/Config.pm

で設定けしてGo

aptitudeも必要

ubuntuCPAN使ったこと無いのでCPANインストール関係のエラーがいっぱい。。
とりあえずこれはaptで入れなきゃダメっぽい。

root>aptitude install libxml2 libxml2-dev
root>aptitude install expat libexpat-dev

sudoしなくて良いのは楽

usr>sudo su root //rootに

もはやubuntu desktop使ってる意味が無くなってきた。

CPANモジュール多すぎ

Plagger使うためにインストールしたCPANモジュール多すぎて何入れたか、メモ取ってられない。覚えてられない。なんかXML関係が大事だった記憶が。。。

>aptitude install plagger

で依存モジュール解決&簡単インストール来る日を夢見る。

Gmail Notifyが動かない。

assets_path: /home/cafe/plagger/assets

とかいたらPlagger

/home/cafe/plagger/assets/common/

にあるファイルを探しに行くらしい。オレ「わからないよそんなことw」必死にソース読みました。

なので

root>ls ./.cpan/build/xxxx/plagger/xxxx/gmail_xxx.tt //必要なファイルを発見
>cp ./.cpan/build/xxxx/plagger/xxxx/gmail_xxx.tt ./plagger/assets

xxxってなってるところはうろ覚え。。CPANのビルドキャッシュにファイルがあるからそれをコピーしてきた。

Python/PHPPlagger

CustomFeed::Scriptを使う

Publish側にも Publish::Scriptが欲しい

あった。Publish::Pipe

Filter側に Filter::Scriptが無いのか?

調べてみる

あった。Filter::Pipe

PlaggerスクリプトをKick

CustomFeed::Script/Publish::Pipe/Filter::Pipeがあるから言語非依存になって嬉しいな。PerlしらないPHPユーザー*1YAML書けばCPANの恩恵に与れるし、自分の得意な言語でカスタム出来るし、またマイナー言語のモジュールも共有できるかも。PearPlaggerカテゴリ出来るかもね。

というか、PlaggerのどこからでもScriptキック出来るならPlaggerのクローンとかいらなくね?

PlaggerはWEB OS?

PlaggerUNIX PipeのWEB版だとしたら
ブックマークはシンボリックリンクだよね

そのうちSVNのソースを直接毎回EVALする無茶なスクリプトとか当たり前になるんだろうな。
と思った

CustomFeedよりはSubscriptionを使う方がイイっぽい?

http://subtech.g.hatena.ne.jp/miyagawa/20061006/1160122942
Domain 失効情報を RSS/iCal

を見ていると、

plugins:
  - module: Subscription::Config
    config:
      feed:
        - script:/home/miyagawa/tmp/domain-expire.pl
  - module: CustomFeed::Script
  - module: Publish::Feed
 .....

なんですね。ということはSubscription::Configで Script:で書けばおk?

多段Plaggerもできたりする?

YAMLの切り替えが面倒なので、PlaggerPlaggerを起動してFeedを渡して、そのPlaggerがまた別のPlaggerを。。。Pipe使えば出来そうなんだけど、終了検知どうしよう。

*1:Python/rubyユーザーでPerl書けませんってのはいないだろう?

pecl/mailparseをmbstring忘れた環境に入れる

ubuntuでapt-getしたphp5にpecl/mailparseを入れようとしたらエラーが出た

$>sudo pear install pecl/mailparse
phpizeとかconfigureのあとにmakeでエラー

エラーがでたmbfl_no_encoding_qprint など mbfl関連のエラー。mbstringがない?そんなわけはない。phpinfo()をよく見てると、./confifureでenable mbstring がない?でも動く。組み込まれてるからか。

というか、自分でビルドしていないのでmbfl関係のパッケージがなくてあたりまえ?

手っ取り早い解決は、PHPビルドしなおし。

でもmakeはconfigure設定をaptのパッケージとそろえるのが面倒。

pecl/mailparseを自分でビルドすることに。

ディレクトリ構造はFedraのパッケージを参照。
php-pecl-mailparse-debuginfo-2.1.1-1.fc3 RPM for x86_64
ふむふむ。RPMはこうやってたのか

Files
/usr/lib/debug/usr/lib64/php4/mailparse.so.debug
/usr/src/debug/mailparse-2.1.1
/usr/src/debug/mailparse-2.1.1/ext
/usr/src/debug/mailparse-2.1.1/ext/mbstring
/usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl
/usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl
/usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
/usr/src/debug/mailparse-2.1.1/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
/usr/src/debug/mailparse-2.1.1/mailparse.c
/usr/src/debug/mailparse-2.1.1/php_mailparse.h
/usr/src/debug/mailparse-2.1.1/php_mailparse_mime.c
/usr/src/debug/mailparse-2.1.1/php_mailparse_mime.h
/usr/src/debug/mailparse-2.1.1/php_mailparse_rfc822.h


mbfl関係のソースは、php本体のソースにほしいものがあることを確認

$> ls php-5.2.0/ext/mbstring/ 
CREDITS              config.m4   mb_gpc.h      oniguruma      php_unicode.h
README               config.w32  mbstring.c    php_mbregex.c  tests
README.libmbfl       libmbfl     mbstring.dsp  php_mbregex.h  unicode_data.h
README_PHP3-i18n-ja  mb_gpc.c    mbstring.h    php_unicode.c

これらのmbstringのソースを使えばmakeできそうだ。php本体のソースからmailparseのソースに突っ込む。参照してもいいけど突っ込むほうが楽かも。

$>ls php-5.2.0/ext/mbstring/
$>mkdir ./mailparse-2.1.1/ext/
$>cp ./php-5.2.0/ext/mbstring ./mailparse-2.1.1/ext/ -R
$>cd mailparse-2.1.1
$>phphize
$>./configure
$>make
$>sudo make install

これでビルドは通った。

ちゃんと動くかな?wkwk

UbuntuにPythonアプリTRACを入れてみた

TRACのバックエンドはSQLiteにしてみた。

手順は、apt-getを用いたもの。

  • Ubuntuで複数プロジェクトをTRACで管理する場合

http://trac.edgewall.org/wiki/TracUbuntuMultipleProjects

  • Ubuntuで単一プロジェクトをTRACするばあい

http://trac.edgewall.org/wiki/TracOnUbuntu

http://trac.edgewall.org/wiki/TracUbuntuMultipleProjects

などを参考に。

どうしても動かない。
Apache2の構成は、virtual host mpm=prefork mod_rewrite libphp5 dav_fs dav_svn userdir


でも

trac unsupported file format

と怒られた。

激しく悩む。

ある、ログに行き着く
PHP5をモジュールから消したら動作するよ!!
http://lists.edgewall.com/archive/trac/2006-April/007686.html

マジかよ。

やってみた。

#>sudo a2dismod php5
#>sudo /etc/init.d/apache2 reload

動いた。。。。。

php5と同居できないのか?


どうもunsupported file formatということは、SQLite関連のエラーっぽい?ならPostgreSQLにすれば動くかも?これはweb.pyに移行しろという神のお告げだと思うことにする。PHPにGood-byするかなぁ

まぁたぶん、php5が内部で使ってるSQLiteモジュールとpythonが使ってるSQLiteがあって、Pythonが使いたいSQLiteモジュールはPHP5に上書きされててつかえねぇぇって事なんだろうな。

php.iniからsqliteのモジュールを外してみた

;extension=pdo_sqlite.so
;extension=sqlite.so

で、Apache2をreloadする。

TRAC動いた。でも何だかなぁ・・・・PDO_SQLITE使えないと困るなぁ

追記

PGSQLを使うことで回避する。

SQLITEはいろいろな場面で組み込まれているんで、こういうことが起こるのかもしれない。WindowsでいうところDLL Hellってやつだろうな。

NFSも良いけどさ、SambaのNAS資源を活用したいよね。

SAMBAで動いてるNASがいっぱいあるし、低価格でRAID1/0を搭載してる箱もある。これは使うべきだろう。NASの方が便利だし。

どうやるの?検索すると、smbmountってのが見つかった。でもsmbmountは裏方で、使い方はmountするだけらしい。実際やってみた。

%>sudo mkidir /mnt/nas
%>sudo mount -t smbfs -o username=veryberry,password=[hoge] //samba-fs/common /mnt/nas/

はいできた。日本語も見えるよ!!。ShiftーJISをUTF-8に変換してくれてる。国際化対応ってすばらしい。

使ったモノ。
Sambaサーバー:何処にでもあるNAS
クライアント:ssh(poderosa)
sshホスト:ubuntu 6.02-ja
smbd:3.x

usage

mount -t smbfs[Samba形式を指定]
 -o username=[sambaユーザー名],password=[sambaパスワード] 
//[Windows(samba)ホスト名]/[ディレクトリ] /[マウント先]

NFSもいいけど、長いものに巻かれてみる。共有は全部Sambaで良いじゃん。
何かあったとき、Windowsからみれるし。日本語通からubuntuで良いじゃん、uft-8でいいじゃん

pgpoolは期待より遅かった。

そのままでは、pgpoolは期待したほど早くなかった。

pgpool-ii 経由でpgbenchを測定したよ。

動作モードは、レプリケーション、キャッシュあり。ベンチはSELECTを測定。更新系クエリはレプリケーションだと絶対遅いだろうと予想してる。

#>./pgbench -p 9999 bench -S
starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
number of clients: 1
number of transactions per client: 10
number of transactions actually processed: 10/10
tps = 16.971186 (including connections establishing)
tps = 17.087299 (excluding connections establishing)

postmasterにpgpool(プロキシ,レプリケーション)無しで接続

#>./pgbench -p 5433 bench -S
starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
number of clients: 1
number of transactions per client: 10
number of transactions actually processed: 10/10
tps = 59.243461 (including connections establishing)
tps = 62.716371 (excluding connections establishing)
#>./pgbench -p 5434 bench -S
starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
number of clients: 1
number of transactions per client: 10
number of transactions actually processed: 10/10
tps = 211.815043 (including connections establishing)
tps = 262.460303 (excluding connections establishing)

ubuntuにpgpool-iiを苦労して入れたけど、サーバースペックが足りないようで、思ったほどベンチが伸びない。というか、明らかにスコアが悪い。postgresql.confを見直す必要がありそうだ。そもそも、古いノートPCなのでDBサーバーを動かすには向いていないのかもね。コネクションプーリングは都市伝説なのかもしれない。

測定環境 Celeron 500MHz, Men 386MB

bashの基本をおさらいしてみる。

Linux使うのは3年ぶりなので、すっかり錆付いてる。


@ITbash使いこなし

tabで補完

当たり前だけど。[tab]でコマンド、引数、パスを補完できる。

$>apt[tab]
apt-cache             apt-ftparchive        apt-sortpkgs
apt-cdrom             apt-get               aptitude
apt-config            apt-key               
apt-extracttemplates  apt-mark              

! [digit] でHistoryを実行

$>history 
$>! 102

カーソルキー

cmd.exeでHOMEキーやENDキーをの代用に。

行頭に移動 [Ctrl]+[A]
行末に移動 [Ctrl]+[E]
1文字左に移動 [Ctrl]+[B]
1文字右に移動 [Ctrl]+[F]
1単語左に移動 [ESC]+[B]
1単語右に移動 [ESC]+[F]
1文字削除 [Ctrl]+[D]、[Ctrl]+[H]

bashがぁぁぁっ

動作が変になったときは、設定ファイルをロードしてみる

$>source /etc/profile
$>source ~/.bash_profile
$>source ~/.bash_login
$>source ~/.profile
$>source ~./.bashrc

などを試してみる。

Debianのapache2は使いやすい

使いやすいけれど、クセが強い。

モジュールを組み込むときは、専用のコマンドを使うと良い。

#>a2enmod [使いたいモジュール名]
#>a2dismod [ロードをやめるモジュール名]

利用可能なモジュール一覧は、

#>a2enmod [Enter]

で表示された。

同じように、VirtualHostやLocationの管理も出来る

#>a2ensite [利用したいサイト設定]
#>a2dissite [利用しないサイト設定]

頻繁に設定を変更するテストサーバーには便利だ。でも、状態バックアップがとりづいらいのは、便利さとのトレードオフかな。