created and maintained by tokd

HowToSetUpYukiWikiAtNifty

@nifty では /usr/local/bin/perl しか使えない。
通常は /usr/local/lib/perl5 以下に存在しているはずの標準ライブラリの中で、
動作させたい perl スクリプトが必要とするライブラリを全部転送する必要がある。

以下のファイルを転送した後に chmod 755 wiki.cgi とすることを忘れずに。
perl スクリプト内から呼ばれるその他のファイルに関しては、
実行許可ビットを立てる必要はない。
(覚書:CUI派なら quote site chmod 755 wiki.cgi で変更できる)

導入できたら、最初は my $use_FixedFrontPage = 0; のままアクセスしてパスワードを設定することもお忘れなく。

以下の記述は ActivePerl 522 付属の標準ライブラリ
(通常は、C:\Perl\lib\ にインストールされる)を前提とする。

このサイトで使用しているスクリプト YukiWikiModifiedVersion も参照のこと。


YukiWiki2.1.3 の場合(サーバ側のディレクトリ構成)
                    [パーミッション]
 cgi-bin/
   Algorithm/            [755]
     Diff.pm             [644]
   CGI/                  [755]
     Carp.pm             [644]  (from standard library)
   diff/                 [777]  (空のディレクトリを作成)
   info/                 [777]  (空のディレクトリを作成)
   plugin/               [755]
     link.pl             [644]
     recent.pl           [644]
     ruby.pl             [644]
     verb.pl             [644]
   wiki/                 [777]  (空のディレクトリを作成)
   Yuki/                 [755]
     DiffText.pm         [644]
     PluginManager.pm*1  [644]
     RSS.pm              [644]
     YukiWikiDB.pm*2     [644]
   Carp.pm               [644]  (from standard library)
   CGI.pm                [644]  (from standard library)
   conflict.txt          [644]
   Exporter.pm           [644]  (from standard library)
   format.txt            [644]
   frontpage.txt         [644]
   integer.pm            [644]  (from standard library)
   jcode.pl              [644]
   lib.pm                [644]  (from standard library)*3
   overload.pm           [644]  (from standard library)
   resource.txt          [644]
   shellwords.pl         [644]  (from standard library)
   strict.pm             [644]  (from standard library)
   touched.txt           [666]  (空のファイルを作成)
   UNIVERSAL.pm          [644]  (from standard library)
   vars.pm               [644]  (from standard library)
   wiki.cgi*4            [755]

 homepage/
   icon40x40.gif         [644]
   rss.xml               [666]
   wiki.css              [644]

  • 1 glob("$dir/*.pl") はシェルを呼び出すので @nifty では動かない。

ここを参考にして、以下のように変更した。
(AtHopeGlob.pm を使う方法もある模様)


*** PluginManager.pm.dist       Wed Mar 03 17:18:04 2004
--- PluginManager.pm    Sun Mar 28 13:54:40 2004
***************
*** 26,32 ****
      };
      # Search for plugins.
      for my $dir (@dirs) {
!         for my $file (sort glob("$dir/*.pl")) {
              if (-e($file)) {
                  my $pluginname = $file;
                  $pluginname =~ s/.*?(\w+?)\.pl$/$1/;
--- 26,36 ----
      };
      # Search for plugins.
      for my $dir (@dirs) {
!         opendir(DIR, $dir) or die;
!         @files = sort grep { /\.pl$/i && -f "$dir/$_"} readdir (DIR);
!         closedir(DIR);
!         for my $file (@files) {
!             $file = "$dir/" . "$file";
              if (-e($file)) {
                  my $pluginname = $file;
                  $pluginname =~ s/.*?(\w+?)\.pl$/$1/;

  • 2 Fcntl を使わないように変更


# use Fcntl ':flock';

  • 3 環境依存の Config.pm を使わないように変更


# use Config;
# my $archname = $Config{'archname'};
my $archname = '';

  • 4 注意すべき変更箇所


  1行目: #!/usr/local/bin/perl
 25行目: # use Fcntl;
 38行目: my $modifier_url_data = 'http://homepage2.nifty.com/tokd'; # Your data URL (not DIRECTORY, but URL).
 41行目: my $modifier_rss_about = 'http://homepage2.nifty.com/tokd/rss.xml';
 61行目: my $file_rss = "../homepage/rss.xml";
825行目: #        tie(%database, "AnyDBM_File", $dataname, O_RDWR|O_CREAT, 0666) or &print_error("(tie AnyDBM_File) $dataname");
826行目: #        tie(%infobase, "AnyDBM_File", $infoname, O_RDWR|O_CREAT, 0666) or &print_error("(tie AnyDBM_File) $infoname");
850行目: #        tie(%diffbase, "AnyDBM_File", $diffname, O_RDWR|O_CREAT, 0666) or &print_error("(tie AnyDBM_File) $diffname");


RSSを正常に動かすには YukiWikiModifiedVersion に示す修正が必要です。



YukiWiki1.6.7 の場合(サーバ側のディレクトリ構成)


 cgi-bin/
   Algorithm/Diff.pm
   CGI/Carp.pm       (from standard library)
   Carp.pm           (from standard library)
   Exporter.pm       (from standard library)
   integer.pm        (from standard library)
   jcode.pl
   lib.pm            (from standard library)*1
   strict.pm         (from standard library)
   vars.pm           (from standard library)
   yukiwiki.cgi*2

 homepage/
   yukiwiki.gif

  • 1 環境依存の Config.pm を使わないように変更


# use Config;
# my $archname = $Config{'archname'};
my $archname = '';

  • 2 /cgi-bin 以下のファイルは参照できないので、/homepage に置く


74行目: my $iconfile = 'http://homepage2.nifty.com/tokd/yukiwiki.gif';