2012 年 2 月 のアーカイブ

オープンソースと論争に思うこと

2012 年 2 月 20 日 月曜日

いまさらですが、オープンソースの製品にもライセンス問題は常に存在します。
とくに会社で納品物として使っている場合には、ライセンスの影響範囲と拘束内容は重要な問題になるわけです。

そもそもソフトウェアライセンスは(当たり前ですが)使ってほしくないがために定められているわけではないので、ほとんどの場合にはライセンサーの「こういう広め方をしたい」という意図に沿って定められることになります。
そこで、ライセンシーから「こういう使い方ができるべきではないか」「これではこういう使い方ができない」等の不満が出る場合があり、論争になることもあります。

しかしたとえそれが論争になろうとも、横からその論争を見ている人間にとって、その論争を自由に判断して、自分の判断を決めることができます。これもまた自由です。
その論争が、「新たに使い始めようとする人の不利益になるからやめるべきだ」というのは、逆に、これから使い始めることを検討する人に対して、将来の不利益につながる事実を隠すことにしかなりません。

重要なのは、At your own riskを前提とした場合の、選択・判断に必要な情報です。
それがネガティブな情報に見えたとしても、人によってはむしろそれによって採用を決めるかもしれません。その選択を、他者が「誤りだ」と決めつけることができるでしょうか?

当事者目線としては「いや、これは本当に問題なんだ。そういうのとは違うんだ」という声が出るでしょう。
それはそれで良いことなんだと思います。そのように考えている人がいる、というのは重要な情報です。
しかし例えば「それは使用上問題にならない」と言う人がいたとして、「問題じゃないとか言うな!」と言うのは矛盾していないでしょうか。「問題になるか否か」を論争するのであればともかく。

「これから発展していくものをDISるな!」と言うのもどうでしょう。ほとんどのオープンソースのプロダクトは、そうして揉まれて改善されてきたのではなかったでしょうか。「その非難は的外れだ」と論争するならともかく。

オープンソースのメリットとは、プログラムソースが公開されること、誰もが自由に使えることだけではなく、そこに至るまでの経緯がオープンであること、でもあるはずです。
人間は自分と周囲のものを良く見せようとしてしまいがちです。しかし、その「美しくない」部分が明らかにされて成り立っているものは、道具として美しい、と思います。

この問題については、おそらく考え方の違いがあるでしょう。「その考え方はおかしい」という意見が出るかもしれません。
しかし、そのような意見や意識・観点の違いですら全て、その違いを意識していなかった人(おそらく自分含む)にとっての利益になり、新たな選択・判断の有効な情報になると考えているので、それはそれで良いことではないかと思います。

yumでrpm版ProFTPDをインストールする際の注意点メモ

2012 年 2 月 16 日 木曜日
ProFTPDというサーバアプリケーションがあります。
CentOS標準のvsftpdがセキュリティ・安定性などを重要視している(CentOSの方向性に沿っているとも言えますが)のに対してProFTPDは、
ProFTPD grew out of the desire to have a secure and configurable FTP server, and out of a significant admiration of the Apache web server.
http://www.proftpd.org/goals.html
と書かれているように、モジュールと設定によって機能が拡張できるよう作られています。
モジュールで他サービスと連携して動かすためにあえてvsftpdを使わずにProFTPDを使うわけです。

さて、以前こんなことなどを書いている通り、rpmとyumを愛用しています。インストールやアップデートの際の依存性トラップに引っかかるのを避けるためです。ProFTPDのように公式に存在しなければ、epel・rpmforge・remiレポジトリからのyum installを日常的に利用しています。

ということでProFTPDをいつも通りインストールします。
yum install proftpd
しかし設定してサービスを起動させようしましたが立ち上がりません。ログを見ると、どうやらモジュールの読み込みエラーが出ています。
前回入れて動作したバージョンは1.3.3g、今回は1.3.4a(1.3.4aのaはalphaということではないらしい)ということで、はて1.3.4では何か大きな変更でもあったのか?とRelease Notesを見てみますが、特にそのような記載は見当たりません。

そこで、いくつかの旧バージョンを比較してみたところ、サイズがやけにバラバラであることに気付きました。
proftpd-1.3.3c-1.el6.rf.i686.rpm ... 1.9MB proftpd-1.3.3g-1.el6.i686.rpm ... 3.4MB proftpd-1.3.4a-1.el6.rf.i686.rpm ... 2.1MB
1.3.3gだけ大きい。ちなみにソースファイルでは
proftpd-1.3.4a.tar.gz ... 7.3MB
です。
rpm -qlpで各rpmの中身を比較してみると、どうやら含まれているモジュールの数がだいぶ異なるようです。
バージョンでモジュールの数が大幅に増えたり減ったりするというのはちょっと考えづらいので、その他の違いを見てみます。
proftpd-1.3.3c-1.el6.rf.i686.rpm ... rpmforge proftpd-1.3.3g-1.el6.i686.rpm ... epel proftpd-1.3.4a-1.el6.rf.i686.rpm ... rpmforge
(remiにはproftpdが無い模様)

つまり、rpmforgeのrpmとepelのrpmでは、インストールしても使用できるモジュールが異なる、ということです。configureオプションの--with-modulesに指定されているモジュールの数が違うということになるかと思います。
rpmforge・epel・remiレポジトリを使用可能にした状態でyum install proftpdとしてしまうと、これら3個所の中で単純にバージョンナンバーが最新のパッケージが入ってしまいます。

epelはそもそも、fedora用に作ったパッケージをRHEL系のOSで使えるようにする、というプロジェクトです。 ということは…と思ってfedoraのproftpd-1.3.4-0.15.rc3.fc16.i686.rpmを見てみたところ、やはりproftpd-1.3.3g-1.el6.i686.rpmと同じ内容(いわゆる全部入り)になっています。

本家proftpd.orgがrpmを出していない以上、それぞれのrpmレポジトリが独自にrpmを作成しているわけで、それぞれのレポジトリの考え方によって内容が異なる、特に今回のような場合、具体的にパッケージに含まれる範囲が異なる、というようなことを改めて認識した次第です。

今回の教訓としては…
CentOS公式ではないrpmでは、インストールの前に、configureオプションやインストールされる内容を確認した方が良い
ということになるかと思います。


細かい話をすると、rpmforge版にはDSOモジュールが
mod_quotatab mod_quotatab_file mod_sql
しか入っていません。
epel版は
mod_ban mod_ctrls_admin mod_exec mod_facl mod_geoip mod_ifsession mod_load mod_quotatab mod_quotatab_file mod_quotatab_radius mod_quotatab_sql mod_radius mod_ratio mod_rewrite mod_sftp mod_sftp_pam mod_sftp_sql mod_shaper mod_site_misc mod_sql mod_sql_passwd mod_tls_shmcache mod_wrap mod_wrap2 mod_wrap2_file mod_wrap2_sql
となっています。