パッケージによって、Perlスクリプトの文字コード系が異なります。*.zip が EUC/LF、*.sjis.zip が SJIS/CRLF です。アクセス権限情報は含まれていませんHTMLはすべてUTF-8のままです。
現在のヴァージョンは です。

htmllint.zip ( )
htmllint.sjis.zip ( )
以下のすべてが含まれるフルパッケージです。
htmllint.core.zip ( )
htmllint.core.sjis.zip ( )
Perlスクリプト(htmllint*、*.cgi、*.pm、*.pl)などが含まれます。
htmllint.html.zip ( )
htmllint.html.sjis.zip ( )
HTMLファイル(*.html、*.css、*.gif)などが含まれます。
htmllint.rul.zip ( )
htmllint.rul.sjis.zip ( )
規則ファイル(*.rul)が含まれます。動作に必要です。
htmllint.dtd.zip ( )
htmllint.dtd.sjis.zip ( )
DTD(*.dtd、*.ent)などが含まれます。動作には必要ありません。オリジナルに手を加えてあるものもありますし、XHTMLは含まれていません。

Perl5.004以上が必要です。JPerlでは動作しません。ローカルマシンへのインストールについて参考となるサイトを紹介してあります。
CPAN からは、各プラットフォームのPerl処理系を含むすべてのPerl関係のリソースをダウンロードできます。

  • CPAN (Comprehensive Perl Archives Network)
  • ActivePerl (Perl for Win32)

標準でないPerlライブラリ等は、必要なら例えば以下からダウンロードしてください。

  • Jcode.pm
    必要です。必ず入手してください。
    XS化される前の古い版から最近のXS化された版への更新で、NoXS版を使用する場合、Jcodeフォルダ下に不要なUnicode.pmが残る場合があります。そのときは削除してください。NoXS版のときにUnicode.pmがあるとうまく動作しません。
  • jcode.pl
    現在 Another HTML-lint 5 では、jcode.pl は使用していません。代わりにJcode.pmを使用しています。しかし、都合でJcode.pmがインストールされていない場合でも、jcode.plがあれば動作します。ただし、そのときはUTF-8は扱えません。
  • CGI.pm
    CGIとして動作させるときに必要です。 標準ライブラリですが、ヴァージョンが古い場合があります。2.5xでない場合は最新版をダウンロードしてインストールしてください。古いCGI.pmは、sub parse_params 内で
    my(@pairs) = split('&',$tosplit);
    となっていますが、新しいもの(2.46あたりから)だと
    my(@pairs) = split(/[&;]/,$tosplit);
    となっています。
  • cgi-lib.pl
    現在 Another HTML-lint 5 では、cgi-lib.pl は使用していません。代わりにCGI.pmを使用しています。
    一部のユーザエージェントは、フォームの送出に際して、Content-Typeに
         application/x-www-form-urlencoded; charset=iso-2022-jp
    のようにCHARSETを付けるものがあるようです。cgi-lib.plは、これに対応していません。cgi-lib.pl 2.18ならば、82行目の判定を
         $type =~ m#^application/x-www-form-urlencoded(;|$)#
    のように修正すれば一応動作させることができます。
  • LWP (libwww-perl)
    CGIとして動作させるときに必要です。 Perlのパッケージに標準で含まれていることもありますが、Perl5.8には含まれていません。URLからHTMLを取得するためには、httpreq.pl を使用することもできますが、これは、Perl for Win32 でLWPが使えなかった頃に、わたしがお手軽に書いた習作スクリプトで、secure server では動作しないことがわかっています。LWPを使うことをお勧めします。インストールしておくと何かと便利です。持っていて損はありません。
  • Email::Valid
    現在 Another HTML-lint 5 では、Email::Valid は使用していません。
  • URL.pl, url_get
    現在 Another HTML-lint 5 では、URL.pl、url_get は使用していません。
  • wget
    現在 Another HTML-lint 5 では、wget は使用していません。
  • nkf / nkf Win32
    現在 Another HTML-lint 5 では、nkf は使用していません。

htmllint.zip / htmllint.sjis.zip では、全ファイルがフラットな構造に展開されます。このままの状態でも利用できますが、ファイルの種類別にディレクトリを分けることもできます。ファイルは次のように分類できます。

  • CGIスクリプト -- *.cgi、*.pm、*.pl、htmllint、htmllint.env などが含まれます。
  • HTMLファイル -- *.html と *.css などが含まれます。
  • 規則ファイル -- *.rul が含まれます。
  • その他のファイル -- *.dtd や *.ent などの直接は利用されないファイルが含まれます。

htmllint の多くの動作環境は、htmllint.env に記述されています。htmllint.env はパッケージには含まれていないので、最初はサンプルの htmllintenv を htmllint.env に改名してください。そして htmllint.env 中の設定項目に目を通し、ディレクトリの指定など適宜書き換えてください。他のCGIの動作環境もこのファイルですべて調整します。
htmllint.env は他のCGIスクリプトと同じ場所に置いてください。CGIのアクセス権は、htmllint、htmllint.cgi、tagslist.cgi を 755 などにしておけば大丈夫です。htmllint.env 自身は、CGIからは読めるが外部から直接参照できないようにした方が安全です。例えば、Apacheでの .htaccess に AddType application/x-httpd-cgi .env を追加し、アクセス権を 744 にしておく、などです。ログファイルを作る場合は、それを置くディレクトリにも適切なアクセス権を与えます。
HTML中にも何個所か修正しなければならない場所があります。

  • *.html の htmllint.cgi と tagslist.cgi のパス。
    s#\./(htmllint\.cgi|tagslist\.cgi)#anywhere/$1#g
  • use-htmllintcgi.html のサンプル中のURL 3個所。
    s#http://openlab\.ring\.gr\.jp/k16/htmllint/(?!i)
    #http://anydomain/anywhere/#g
  • 一部の *.html のイメージファイル top.gif のパス。
    s#\./(top\.gif)#anywhere/$1#g

Lynx を利用する場合は、lynx.cfg でCHARACTER_SETを Japanese(EUC) に設定してください。このとき、htmllint.cgiはEUC版である必要があります。Lynx は 2.7.1 でしか動作確認していないので、他のヴァージョンではオプション等の調整が必要かも知れません。Lynx の起動時オプションは htmllint.env の中に記述されています。

ダウンロードした htmllint.zip / htmllint.sjis.zip には、以下のようなファイルが含まれています。

htmllint
コマンドラインから起動し、htmllint.pmを呼び出して構文チェックするためのPerlスクリプトです。MacPerl版ではドロップレットですが、MPWで利用するときはプレーンテキストにする必要があります。
htmllint.pm
チェッカ本体のPerlスクリプトパッケージモジュールです。
common.rul
共通規則ファイルです。他の規則ファイルの不備を補うもので、htmllint.pm、htmllint.cgi、tagslist.cgiが読み込みます。
charsets.rul
IANACHARACTER SETSを元にして作った連想配列で、htmllint.pmが読み込みます。
colortable.rul
色名と色コードの対応表です。htmllint.pmが読み込みます。
*.rul
各種HTMLに対応した規則ファイルです。htmllint、tagslist.cgiが読み込みます。
*.dtd/ent
それぞれの規則ファイルの元になったDTDです。RFCなどからの抜粋ですが、MozillaやMSIEのものはリファレンスからの捏造品です。htmllintは使用しません。
tagslist.cgi、tagslist.html
規則ファイルからタグ一覧HTMLを生成するPerlスクリプトと、それへの目次の含まれるHTMLです。
parsedtd.pl
DTDから、htmllintが読み込む規則ファイルの原形を生成するPerlスクリプトです。htmllintは使用しません。
htmllint.cgi
htmllint.htmlとhtmllint.pmの間を仲介するためのゲートウェイ用のPerlスクリプトです。
htmllintenv
htmllint.pm、htmllint.cgi、tagslist.cgiが使用する環境ファイルのサンプルです。このファイルからhtmllint.envを作ってください。htmllint.envをhtmllint.pm、htmllint.cgi、tagslist.cgiが読み込みます。
htmllintrc
htmllintのための設定ファイルのサンプルです。使用しません。
htmllint.history.txt
htmllint.cgiとhtmllint.pmの更新履歴です。
htmllint.html
htmllint.cgiをCGIとして呼び出すHTMLです。
htmllintl.html
htmllint.htmlの簡易版です。
htmllinte.html
MSIE4以上用のDynamicHTMLを利用したものです。
explain.htmlexplain-wai.htmlexplain-score.htmlexplain-omake.html
チェックの結果の解説などが述べられたHTMLです。
colors.htmlcolorsbk.html
名前付き色見本です。
index.htmlintroduction.htmlnotice.htmluse-htmllintcgi.htmluse-htmllint.htmldownload.htmlrulefile.htmlreference.htmlfaq.html
この能書きの書かれたHTMLファイル群です。
htmllint.css
スタイルシートがちょっとだけ定義されているファイルです。background-image などをお好みに調整してください。
*.gif
「よくできました」などのイメージファイルです。
httpreq.pl
簡単な HTTP アクセスライブラリです。htmllint.env の設定によっては htmllint.cgi が使用します。htmllint.cgi と同じディレクトリに置くか、Perlのライブラリディレクトリに入れてください。
RFC2396.pm
RFCに記述されているURIの構文則を正規表現で表わしたPerlスクリプトパッケージモジュールです。htmllint.pm が使用します。htmllint.pm と同じディレクトリに置くか、Perlのライブラリディレクトリに入れてください。

Another HTML-lint 5 をファイアウォール内へインストールする場合は、変数の設定が必要かも知れません。htmllint.env で、$HTTP_PROXY と @HTTP_NOPROXY の設定を適切に行なってください。

UNIXの場合、環境変数HOMEで示されるディレクトリに、.htmllintrc というファイルがあると、チェックの初期状態として読み込みます。htmllintrc というサンプルを好みに編集し、ファイル名を変更して使ってください。

Another HTML-lint 5 を自分のサーバやローカル環境で動作させるための手引きが、以下のようなサイトにあります (順不同、敬称略、無断紹介)。 なお、これらのリンクは生きていない可能性がありますが、積極的には保守しません。