2009年4月16日木曜日

Remedieは15分でインストールできるのか

あらかじめ書いておきますがネタです。

[O] これから15分で Remedie を始めるための資料には

インストール自体は15分で終わらない場合が多いでしょう。

とある。

タイトルと中身が矛盾しているが、環境によりけりということのようだ。そこで、果たして本当に15分でインストールできるかどうか、PerlとRemedieを一からインストールしたときの時間を計ってみた。

0. 準備

Xcodeとgitを入れておく。

正確に時間を計測するために~/.cpanを削除。

% rm -rf ~/.cpan
%

1. ActivePerlのダウンロード(30秒)

ブラウザでActivePerlのサイトからダウンロードしてもいいが、時間を計測するためにcurlを使う。

% cd /tmp
% time /usr/bin/curl -sO http://downloads.activestate.com/ActivePerl/MacOSX/5.10/ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz
/usr/bin/curl -sO 0.32s user 1.59s system 8% cpu 23.030 total
% time tar zxf ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz
tar zxf ActivePerl-5.10.0.1004-darwin-9.4.0-287188.tar.gz 1.45s user 1.17s system 63% cpu 4.144 total
%

2. ActivePerlのインストール(15秒)

お遊びなので/tmp/activeperlに入れる。

% cd ActivePerl-5.10.0.1004-darwin-9.4.0-287188
% time ./install.sh --prefix /tmp/activeperl --license-accepted --no-install-html --no-manifest-check
....
./install.sh --prefix /tmp/activeperl --license-accepted --no-install-html 3.57s user 2.56s system 58% cpu 10.523 total
%

ついでにパスの設定も行う。

% export PATH=/tmp/activeperl/site/bin:/tmp/activeperl/bin:/usr/bin:/bin
%

3. Remedieのダウンロード(10秒)

% cd /tmp
% time /opt/local/bin/git clone git://github.com/miyagawa/remedie.git
....
/opt/local/bin/git clone git://github.com/miyagawa/remedie.git 0.44s user 0.30s system 9% cpu 7.754 total
%

4. 必要なモジュールのダウンロード(18分)

時間を節約するため、依存関係の処理をいちいち聞かないで勝手に処理してくれるように設定。

% export PERL_AUTOINSTALL="--defaultdeps"
%

いざcpanコマンドを実行。途中で5か所プロンプトが出るがリターンを押せばよい。あらかじめ5回リターンを押してもいいはず。ちなみにyesコマンドはLeopardにはついてこないので使わない。

% cd remedie
% time cpan -i .
....
M/MS/MSCHWERN/ExtUtils-MakeMaker-6.50.tar.gz is just needed temporarily during building or testing. Do you want to install it permanently? (Y/n) [yes] リターン
....
*** Press return to continue (or wait 60 seconds) リターン
....
*** Press return to continue (or wait 60 seconds) リターン
....
Do you want to build the XS Stash module? [y] リターン
Do you want to use the XS Stash by default? [y] リターン
....
cpan -i . 582.42s user 125.23s system 66% cpu 17:48.14 total
%

起動。

% bin/remedie-server.pl 
HTTP::Engine::Interface::ServerSimple : You can connect to your server at http://localhost:10010/

まとめ

全部で19分。この記事を書くためにActivePerlとRemedieを10回以上インストールしたが、15分を切ることはできなかった。回線の太さよりもmakeのスピードに依存しそうなので、速いコンピュータなら15分でできるかもと思う。

2009年4月15日水曜日

Remedieをインストール

家の前の川に飛行機が飛んできたのは1月のことだ。家にいながらこれにまったく気づかなかったその夜、消防車や救急車の音で窓の外が騒がしいので見てみたら、川の中に飛行機があって驚いた。とりあえず写真を撮ってブログのネタにした。

飛行機が川に不時着したのはすごいできごとだが、何よりも驚いたのは日本の人たちが事故のことを何時間も前から知っていてTwitterで話題にしていたことだった。

前にも書いたが私はテレビをほとんど見ない。ニュースは新聞が主な情報源で、インターネットでニュースにアクセスするとしても動画はほとんど見ないテキスト派だ。

そういう原始人のような生活から脱却するために、奮起してRemedieを入れてみた。

1. gitをインストール

MacPortsを使っているので簡単インストール。

# port selfupdate
# port install git-core

2. Remedieのダウンロード

[O] これから15分で Remedie を始めるための資料を見ながらやった。

% cd tmp
% git clone git://github.com/miyagawa/remedie.git

3. 必要なPerlモジュールのダウンロード

まずはRemedieのパッケージにREADME.mkdnというファイルがあるのでそれを読む。「cpan -i .」というコマンドを実行するべしとあるのでそのとおりにするとPerlのモジュールが大量にインストールされる。

% cd remedie
% cpan -i .

インストール済みのモジュールがそれなりに多いせいでトラブルもなく5分くらいで終了。

README.mkdnというファイル名は初めて見たが、mkdnはMarkdownの略だそうだ。Markdownはお手軽マークアップ言語。

4. テストがFAILするので微調整

cpan -i .の最後のほうでRemedie自身のテストが行われる。私の環境だとテストが3個Failした。

Test Summary Report
-------------------
t/99_fail.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
t/plagger/plugins/CustomFeed-Script/base.t (Wstat: 1024 Tests: 4 Failed: 4)
Failed tests: 1-4
Non-zero exit status: 4
t/plagger/plugins/Discovery-Sites/base.t (Wstat: 256 Tests: 4 Failed: 1)
Failed test: 2
Non-zero exit status: 1
Files=41, Tests=236, 57 wallclock secs ( 0.16 usr 0.16 sys + 31.11 cusr 3.77 csys = 35.20 CPU)
Result: FAIL
Failed 3/41 test programs. 6/236 subtests failed.
t/99_fail.t

一番最初のt/99_fail.tはFailになるように設計されているので無視する。

t/plagger/plugins/CustomFeed-Script/base.t

これはやや複雑で、私のperlが標準のパス(/usr/bin/perl)にないから起こる。t/samplesディレクトリにあるスクリプトを書き替える。

% perl -pi.bak -e 's{/usr/bin/perl}{/usr/bin/env perl}' t/samples/*.pl

つまり、/usr/bin/perlではなくて自分が使っているほうのPerlを呼び出すようにする。

t/plagger/plugins/Discovery-Sites/base.t

このテストは実行するたびにFailしたりしなかったりする曲者である上にVeohなんて初めて使ったから自信がないのだが、t/plagger/plugins/Discovery-Sites/base.tをこのように書き替えたらエラーが出なくなった。

変更前

like $context->update->feeds->[0]->entries->[0]->thumbnail->{url}, qr/ll-images/;

変更後

like $context->update->feeds->[0]->entries->[3]->thumbnail->{url}, qr/(ll-images|img\.youtube|thumbnails\.cbsig|www\.mtv\.com)/;

5. 再テスト

同じコマンドを再度実行し、t/99_fail.t以外は大丈夫なことを確認する。

% cpan -i .
(略)
Test Summary Report
-------------------
t/99_fail.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=41, Tests=250, 60 wallclock secs ( 0.16 usr 0.16 sys + 31.77 cusr 3.91 csys = 36.00 CPU)
Result: FAIL
Failed 1/41 test programs. 1/250 subtests failed.

6. Remedieを起動

% ./bin/remedie-server.pl
Mouse::Meta::Class::__ANON__::SERIAL::1: You can connect to your server at http://localhost:10010/

7. フィードを追加

Remedieのページ(http://localhost:10010/)にアクセスすると真っ黒の画面が出るので、「New」を押してフィードを登録する。

まずは地元のテレビ局ny1.comを登録してみる。NY1のサイトに行ってRSSのURLを見つければいいのだけれど、もしかしてと思い直接「ny1.com」を入れてみる。

ちゃんとRSSのURLを見つけてくれた。これには感動。

というわけで今年度の目標は、日本在住の人よりも早くNYのニュースをキャッチすることです。

2009年4月14日火曜日

リチャード・ストールマンの講演に行ってきた

Richard Stallmanといえばフリーソフトウェアの神様のような存在だ。今回その神様がニューヨークで講演をするとのことで、先日、本人を見に行ってきた。批判の多い人でもあるしそれほど興味の対象でもなかったのだが一度くらいは顔を見ておこうと思ったのだ。話を聞いてみるとやはり氏は偉大な思想家だった。

会場はニューヨークにあるYeshiva Universityの講堂で、参加者は200人くらい。募金などもない完全無料のイベントで、講演後はパーティーまであった。スポンサーがいるのだろうか、ありがたいことである。

講演の内容はソフトウェアの自由と著作権の歴史について。

  • フリーソフトウェアの「フリー」は自由という意味。
    • 無料という意味ではない(有償のフリーソフトウェアはありうる)
  • フリーソフトウェアのユーザには以下の自由があるべきだ
    • プログラムを実行する
    • プログラムの内部を解析する(=ソースコードを読む)
    • プログラムを手を加えずに再配布する
    • プログラムを改変して再配布する
  • フリーでないソフトウェア(proprietary software)はユーザの自由を制限し、ユーザ同士を分断する

著作権の話はアメリカ特有の話が多かったが、要点を拾いだすとこうなる。

  • 古代には著作権の概念はなかった
  • 現代では著作権の保護期間は延長される一方
    • 一部企業の政治活動も関係している(ディズニーなど)
  • 著作権は本来著作者に独占的に使用する権利を保証して技術の進歩を促進するためのもの
    • アメリカ合衆国憲法第1条
  • ところが現代では著作権を保護しすぎて視聴者の権利が阻害されている
    • DRM(デジタル著作権管理)、DVDの暗号化

質疑応答から

質問「最近はどの言語でプログラムを書いていますか」
Richard「時間がなくて実はコードはほとんど書いてないのです」

質問「これだけフリーなOSがある中、どうしてみんなMS Windowsを使っているのでしょう」
Richard「多くの職場で求められるスキルはWindowsですから学校でもWindowsしか教えません。Windowsの教育を受けた人が社会に出て職場にWindowsを導入するというサイクルができています」

その他

GNUの発音はグニューかグヌーかヌーかというような話が昔からあるがRichard本人はグニューと発音していた。本来ヌーとGなしで発音するはずのgnuのぬいぐるみもグニューと呼んでいた。

学者タイプの人によくあるように、言葉の使い方に厳しい。質問者「オープンソースソフトウェアが……」Richard「フリーソフトウェアと言ってください」なおcreatorという言葉もお好きではないそうで、authorかartistと呼ぶべきとのことだった。