自宅サーバ(マイクロソフトOS:XAMPP その3)
XAMPPを "D:\" へインストールした時のperlへのパスは、"D:\xampp\perl\bin\perl.exe" となります。
従って、新しくPerlスクリプトを自作する場合は、実行ファイルの先頭に以下を記述すればOKです。(具体的には、"D:\xampp\htdocs\ xampp" 以下にある拡張子 ".pl" のファイルを参照)
#!"D:\xampp\perl\bin\perl.exe"
しかし人様が作ったperlスクリプトを頂戴して使いたい等々、既存のperlスクリプトを利用したい場合のperlのパスは殆どが "/usr/bin/perl" となっています。
そこで、perlスクリプトに"/usr/bin/perl"と記述されていても、今回インストールしたxamppで動作する仕掛けが欲しくなります。そのような仕掛けが”リンク”と称されるものです。(Windowsのショートカットのようなもの)
リンクには、幾つかの種類があって最も使いやすいのがシンボルリンクです。
シンボリックリンクとは、あるファイルやディレクトリに別の名前を与え、ユーザやアプリケーションがその名前をファイル本体と同様に扱えるようにする仕組み(IT用語辞典 e-Wortd)です。
マイクロソフトOSでは、Windows Vista、Windows Server 2008以降で標準でサポートされましたが、WindowsXpやWindows Server 2003ではサポートされていません。
シンボリックリンクと類似の機能に、ハードリンクとジャンクションが有り、それぞれの欠点を下記に示します。(機能詳細は省略)
ハードリンク
・Windows2000以降のOSでサポート
・作成できるのはファイルのみ
・リンクにエラーがあるとWindows自体が起動できなくなる場合がある。
ジャンクション
・作成できるのはボリュームあるいはディレクトリのみ。
・ジャンクション下のファイルの削除に失敗することがある。
上記の詳細は下記の記事等を参考にしてください。
ジャンクション機能を使ってフォルダをマウントする(@IT)
なおネットで検索すると、シンボリックリンクとジャンクションを混同している記事が多数あり注意が必要です。
OSのバージョンやマウント方法に相違によるリンク方法
OS | ファイルへのハードリンク | フォルダへのリンク | ボリュームへのリンク | シンボリックリンク |
Windows 2000 | ― | linkd | ディスク管理ツール | ― |
Windows XP | fsutil | linkd | ディスク管理ツール/mountvol | linkd |
Windows Server 2003 | ||||
Windows Vista /7 | fsutil / mklink | mklink | ディスク管理ツール/mountvol | mklink |
Windows Server 2008 |
OSバージョンとさまざまなリンク機能 |
Windows OSで利用可能なリンクは「ジャンクション機能(リパース・ポイント)」を使って実現されている(NTFS上にのみ作成可能)。その利用形態に応じてコマンドが分かれているが、Vistaのシンボリック・リンクが一番有用性が高いといえる。シンボリック・リンクでは、ディスクだけでなく、リモートの共有フォルダへもリンクを張ることができるからだ。なお「―」はその機能が利用できない(もしくはそのためのツールが利用できない)ことを表す。 |
注1)「ディスク管理ツール」は、[コンピュータの管理]にあるGUIの[ディスクの管理ツール]のこと。それ以外の英字はコマンド・プロンプト上で利用するコマンド名。fsutil、mountvol、mklinkは各OSの標準コマンド、 linkdはリソースキット・ツールのコマンド。 |
注2)「ファイルへのハードリンク」は同一のファイルを指す別名リンク(同一ボリューム上に限る)、「フォルダへのリンク」は任意のフォルダ(リモートは不可)へのジャンクション、「ボリュームへのリンク」は任意のボリュームへのジャンクション、シンボリック・リンクは任意のファイル/フォルダ(リモートも可)へのリンクのことをそれぞれ表す。 |
上記から、Windows Vista / Windows Server 2008 以降ではシンボリックリンク、Windows Xp / Windows Server 2003ではジャンクションを使うことに成ります。
上記のいづれのツールも、コマンドプロンプト(DOS窓)で使用するコマンドですので、タイプミスをするのでGUIでやりたいという横着者も多いと思います。
そのような横着者のあなたに贈るツールを紹介致します。
Link Shell Extension
ホームページ:http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
ダウンロードファイルおよび入手先:
以下のファイルが必要です。
・Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) ”vcredist_x86.exe”
・Link Shell Extension (898kb) “lnhdr-1.52-x86-ja.msi”
インストール
・最初に、”vcredist_x86.exe”(Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)) をクリックしインストールします。
・次に、“lnhdr-1.52-x86-ja.msi”(Link Shell Extension) をインストールします。(全て[次へ」ボタンをクリックしインストールを進めます。)
目的:
"D:\xampp\perl\bin\perl.exe" を "/usr/bin/perl" として動作させたい ==> "D:\xampp\perl" を "D:\usr" としてリンク
使用方法:
(1) リンク元となるフォルダあるいはファイルの選択
・エクスプローラで、リンク元となるフォルダである"D:\xampp\perl" を選択し右ボタン・クリックします。
・サイドメニューが現れるので、その中の”リンク元として選択(L)”をクリックします。

(2) シンボリックリンク( Windows Vista / Server2008 / 7 )あるいは、ジャンクション( Windows Xp / Server2003 )の作成。
・エクスプローラで、“D:\” を選択し右ボタン・クリックします。
サイドメニューが現れるので、その中の”リンクを作成”を選択しマウスを右横方向に移動すると更にサイドメニューが現れます。
その中の"シンボリックリンク"あるいは"ジャンクション"を選択し左ボタン・クリックします。

(3) リンクフォルダ名の変更
上記の操作により、D:\下に、”perl”と言う名称のジャンクションが出来ています。
このフォルダを選択し、フォルダの名称を”usr”に変更します。


========================================
[参考]
コマンドを使ってシンボリックリンクあるいはジャンクションを作成する方法。
1) Windows Vista、Windows Server 2008以降
標準装備のコマンドを使って、シンボリックリンクを作成します。
[コマンドの使い方]
コマンド・プロンプト(DOS窓)を開いて、以下を実行します。
MKLINK /D D:\usr D:\xampp\perl
[ 参考 ]
引数なしで、"mklink"を実行するとヘルプが表示されます。
D:\> mklink
MKLINK [[/D] | [/H] | [/J]] リンクターゲット
/D ディレクトリのシンボリックリンクを作成します。既定では、
ファイルのシンボリック リンクが作成されます。
/H シンボリックリンクではなく、ハード リンクを作成します。
/J ディレクトリジャンクションを作成します。
リンク 新しいシンボリック リンク名を指定します。
ターゲット 新しいリンクが参照するパス (相対または絶対)
を指定します。(補足:実フォルダのフルパスです)
【mklikコマンドを使用条件】
・新しく作成されるフォルダ(第1引数のフォルダ名)は、空のフォルダか、もしくは存在していないフォルダである必要があります。
・このコマンドを実行するためには、管理者権限が必要です。
2) Windows Xp、Windows Server 2003
標準ではハードリンクしかサポートしておらず、オプションのツールをインストールすることにより、ジャンクションが利用できます。
2-1) "Windows Server 2003 Resource Kit Tools" の導入
このツールは、"Windows Xp"でも利用可能です。
ジャンクションを作成するには、"linkd" というツールを使います。
[コマンドの使い方]
コマンド・プロンプト(DOS窓)を開いて、以下を実行します。
作成:
linkd D:\usr D:\xampp\perl
削除:
linkd D:\usr /D
[ 参考 ]
引数なしで、"linkd"を実行するとヘルプが表示されます。

【linkdコマンドを使用条件】
・マウントするフォルダが存在していない場合は自動的に作成される。
・フォルダの内容が空でない場合はエラーとなる。
・フォルダ名はASCII文字のみで、漢字やひらがな等が含まれているとエラーとなる。
2-2) Windows Sysinternals (注)の "junction” の導入
・上記をダウンロードします。
・ダウンロードした”Junction.zip”を展開し、"junction.exe" を、c:\windows\system32 にコピーあるいは移動します。
"junction" を使いたいだけなのに、"Windows Server 2003 Resource Kit Tools" の使いもしない多数のツールをインストールしたくない場合には、お薦めです。
[ コマンドの使い方 ]
コマンド・プロンプト(DOS窓)を開いて、以下を実行します。
作成:
junction D:\usr D:\xampp\perl
削除:
junction d D:\usr
[ 参考 ]
コマンドプロンプト(DOS窓)から、引数なしで、"junction"を実行するとヘルプが表示されます。

以下に、サイト情報および 関連記事を 紹介します。関心が有る人は覗いてみてください。junction以外の興味深いツールを提供しているようです。
・Windows Sysinternals
・Windows 管理者必携、Sysinternalsでシステムを把握する (@IT)
↓の評価ボタンを押してランキングをチェック!



