[Momonga-devel.ja:02232] Re: openoffice.org-1.1.0-1m の sweb関係
- From: Masayuki SANO <sano@xxxxxxxxxxxxxxxxxxx>
- Date: Sun, 26 Oct 2003 04:20:20 +0900 (JST)
nosanosaです。
On Sat, 25 Oct 2003 21:46:09 +0900 (JST) in <20031025.214609.35007322.shige@xxxxxxxxxxxxx>, 山下 繁行 <shige@xxxxxxxxxxxxx> wrote...
> 前夜からbuild開始して,今しがたやっとビルドが終わりました.(長かった……)
お疲れさまです m(_ _)m
> それで,インストールして気付いたんですが,OpenOffice.orgが配布している
> バイナリtar玉には html editor?の swebというのが含まれていると思うので
> すが,openoffice.org-1.1.0-1m でそれ(モ だと oowebになるのかな?) が含
> まれていないのは何か意図があっての事なのでしょうか?
えーと、1mのパッケージはMandrakeのパッケージをMomongaで動くように調整
したという感じなので、あまりそのあたりはまだ考えていません。つまり、
MandrakeでHTMLエディタのデスクトップファイルが作られていなくて、
それを変更していないから、というのが理由です。
ちなみにHTMLエディタ機能自体は「新規ドキュメント」->「HTMLドキュメント」
と選ぶことで利用することができます。というのは、OOoでは実際のバイナリ
は (moでは/usr/lib/openoffice/program/におかれている)soffice.bin だけ
で、oowriter(本家ではswriter)とかの他のコマンドは、(以下で示す長い過程
ののちに)このsoffice.binを特定のコマンドライン引数で起動しているだけで
す。なので、OOoのどのコンポーネントを利用していても、新規ドキュメント
で、他の全てのコンポーネントを選択することができます。
ここで問題になっているのは、oowebとコマンドを入力するだけで、他の
oowriterたちのように、自動的にHTMLエディタになって起動するようにしたい
ということですよね?
> 手元でspecの該当箇所らしき場所を弄ってリビルドしてみます.
> 正常にビルドできて動作も確認できたら 2m としてコミットしたいと考えてい
> ますが,なにぶんマシンが貧弱でビルドにかなり時間がかかってしまいます.
> 弄ったspecを下記URIに置いておきますので,どなたか速いマシンをお持ちの
> 方,ビルド & 動作確認を試して戴けませんでしょうか?
>
> http://www.momonga-linux.org/~shige/openoffice.org.spec
このspecファイルだと、/usr/bin/ooweb > /usr/bin/oofice というリンクが作
られているだけだと見えます。それだとおそらくoowebとコマンドを打っ
てもワークスペース?(ooficeとだけ打ったときに出る空っぽの画面)が現れる
だけで、HTML編集モードが自動的には立ち上がってくれないと思います。
具体的には/usr/bin/ooficeスクリプト(ソースファイルの中の
openoffice-wrapper.pl)に添付のパッチのような修正が必要です。
(動作確認後、コミットすればいいんですが、ちょっと今日は日中は出かけて
いるので、作業ができないのと、学校のSOCKSサーバが不調らしく、いまCVS
につなぐことができないので、どなたかこれをもとに修正してコミットして
頂けるとうれしいんですが。)
以下、冗長になりますが(というか、ソースを見て頂いたらすぐ分かって頂け
ちゃうような気がするんですが、)自分の確認の意味もこめてOOoの起動のあた
りの説明をさせてください。
起動の流れは以下のようになっています。
1. $ oo* で起動
2. /usr/bin/ooficeが呼ばれる (/usr/bin/oo*はすべて/usr/bin/ooficeへの
リンクなので)
3. /usr/bin/ooficeは初回起動であればユーザーインストールを行う
4. その後で、/usr/bin/ooficeoo* という文字列から~/.openoffice/soffice
に渡す引数を決定し、~/.openoffice/soffice (引数)で起動
5. ~/.openoffice/soffice は シェルスクリプト
/usr/lib/openoffice/program/sofficeへのリンクなのでこれが呼ばれる
6. /usr/lib/openoffice/program/sofficeのなかから
/usr/lib/openoffice/program/soffice.binが起動される
ここで4. で起動される /usr/bin/oofficeのもととなっている
openoffice-wrapper.plのソースをみると446行目のあたりに
push @ooo_argv, "private:factory/s$1"
if (!@ooo_argv && $0 =~ m/\/oo(calc|draw|impress|math|writer)$/);
とあって、最後に903行目で
exec "$UserInstallDir/soffice", @ooo_argv if (!$Debug);
と実行しているのですが、ここにoowebというコマンド名で起動されたときの
条件を加えないと、結局 oofficeとして起動したときと同様に(つまり引数なしで)
処理されてしまいます。
ここでどう加えるかですが、一応本家配布にはいっているスクリプトの
swriter,sweb,etc...は/usr/lib/openoffice/programにおいてあるのでみてみ
ると
$ less sweb
#!/bin/sh
cmd=`dirname "$0"`/soffice
exec "$cmd" -web "$@"
となっているので ~/.openoffice/soffice -webというように -webという引数
を与えて起動してやればよいことがわかります。それで(perlは全く知ら
ないんですが、みようみまねで
push @ooo_argv, "-$1"
if (!@ooo_argv && $0 =~ m/\/oo(web)$/);
と加えてみたのが添付のパッチです。いちおうこれでooweb > oofficeという
リンクを作っておくと、oowebとしてHTMLエディタとして起動してくれました。
、なぜ、ここまで複雑な過程を踏むのかというと、もともと素のOOoだと、ルー
トユーザーがsetup -netでネットワークインストールというのをやっておいて、
その後、各ユーザーがそれぞれ setup を実行するという事になっているので、
コマンド一つで立ち上がるようにするために、oofficeというラッパーを通す
ことで、初回起動時には自動的にユーザーインストールするという仕組みを
作らなくてはならなかったからです。
ところで、今回しらべてわかったんですが、
/usr/lib/openoffice/program/にあるOOoのオリジナルスクリプトでは
sfax ファックス送付状
sletter 手紙
smemo メモ
slabel ラベル作成
svcard 名刺管理
sagenda 会議録
というのがありますね。これらもoo*コマンドに用意した方がよいと思います。
# でも、これらをいれるよう書き直すとなると、perlに触れたのが今回はじ
# めての僕にはすぐにはできないので、だれかすぐできるひとにやってほし
# いなぁと思うのですが・・
その他に、本家配布のメニューにある「OpenOffice プリンターの管理」に対
応する/usr/lib/openoffice/spadminというのもあったのですが、これは
/usr/lib/openoffice/spadmin.binという別のバイナリを呼ぶので、oopadmin
とか作るとすると別につくらないといけないでしょうね。
ではよろしくおねがいします。
--- openoffice-wrapper.pl.~1.1.~ 2003-10-24 17:08:17.000000000 +0900
+++ openoffice-wrapper.pl 2003-10-26 03:42:49.000000000 +0900
@@ -446,6 +446,9 @@
push @ooo_argv, "private:factory/s$1"
if (!@ooo_argv && $0 =~ m/\/oo(calc|draw|impress|math|writer)$/);
+push @ooo_argv, "-$1"
+ if (!@ooo_argv && $0 =~ m/\/oo(web)$/);
+
sub normalize {
my ($lang) = @_;
$lang =~ tr/-/_/;