
コンテキスト:
Windowsホストの共有フォルダーを持つUbuntu Virtualbox VM。トレーダー:シェフソロ
/tmp/shared_data
パスがあり、そのパスに次のようにシンボリックリンクを作成しようとしているとします。
ln -s /var/www /tmp/shared_data/web_root
プロトコルエラーとは表示されません。
"bash" "/tmp/chef-script20161020-6826-kore5t" 出力開始----
==> dev: STDOUT: ==> dev: STDERR: ln: failed to create symbolic link ‘/tmp/shared_data/web_root’: Protocol error ==> dev: ---- End output of "bash" "/tmp/chef-script20161020-6826-kore5t" ---- ==> dev: Ran "bash" "/tmp/chef-script20161020-6826-kore5t" returned 1
これは、私がシンボリックリンクを作成するパスがWindows FSであり、それをサポートしていないためだと思います。
試す前に、パスにシンボリックリンクが作成され、ビルドが破損する可能性があるかどうかを検出する方法はありますか?
答え1
あなたできる出力を解析し、mount
パスのファイルシステムタイプを決定します。これは最も移植性が高いが面倒です(サブディレクトリではなくマウントポイントに関する直接の情報のみを提供するため)。ただし、一部のシステム固有の方法は、以下で使用できます。
これではないことを確認したいかもしれません。cifs
ファイルシステムたとえば、次のようにできます。
if df -t cifs /tmp/shared_data/web_root 2>/dev/null
then
echo cannot make a symbolic link...
else
ln -s /var/www /tmp/shared_data/web_root
fi
マニュアルページUbuntudf
説明する-t
:
-t, --type
=タイプ
ファイルシステムのリストをこのタイプに制限します。タイプ
これは違うPOSIX df:
-t
[XSI]
出力に割り当てられた合計スペース番号が含まれます。
だからあなたは持つことができますシンプルまたは持ち運べる。