Windows端末のdebian wslでvagrant upを実行する方法

Windows端末のdebian wslでvagrant upを実行する方法

vagrant upWindows端末でDebian WSLを実行したいです。放浪者を設置しました。

/mnt/c/HS_DEV/Homestead$ vagrant --version

わかりました。

ワンダラー 2.2.6

私が実行すると、vagrant up次のようになります。

The executable 'cmd.exe' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.

だから私はWindowsターミナル構成でデフォルトのcmd.exeの代わりにdebian.exeを試してみましたが、それでも機能しません。どのように走ることができますかvagrant up?この質問はどこから来たのでしょうか?

私はpowershell、cmd.exe、およびgitbashを使うとうまくいくことがわかりましたが、Debian WSLでこれを行いたいと思います。

答え1

完全な公開 - 私はVagrantを使用していませんが、過去にWSLと同様のPATH問題を経験しており、これがあなたの問題に対する解決策になることを願っています。

まず、私はあなたがWSLの説明ホームレスのため。その場合、2つのバージョンのVagrantがインストールされています。最初のバージョンはWindowsのバージョンです(PowerShellとcmdで実行していると述べた後)。文書に示すようにVagrant Windowsインストールで提供されているvagrant.exe実行可能ファイルはWSLからアクセスできますが、期待通りには実行されません。

したがって、この指示に従った場合返品.debファイルを介してWSLインスタンスにDebianバージョンをインストールします。

しかし、WSLは実際にDebianバージョンを使用していますか?おそらくそうではありません。 Windowsバージョンもインストールされており、WSLはWindowsパスをWSLパスの前に「効果的に」追加するため、vagrant upWSL / Debian内で実行するとvagrantパス内の最初のパス(おそらくWindowsバージョン)を見つけることができます。これは実際には、WSLとインストールされたツールのWindowsとLinuxの両方のバージョンで非常に一般的な問題です。

which vagrantDebian内で実行して実行可能ファイルがあるかどうかを確認してください。 Windows版なら、これが犯人であることを願っています。

私が知っている限り、いくつかの可能な解決策があります。

  1. パスからWindowsノードを削除するか、少なくともLinuxバージョンに高い優先順位を付ける起動スクリプト(bashrcや選択したシェルに対応するものなど)を作成します。

  2. 作る/etc/wsl.confそして…

    [interop]
    appendWindowsPath = false
    

    これは削除されますみんなWSL セッションの Windows パスです。欠点は、いくつかの便利なWindowsユーティリティがWSLパスになくなったが、起動スクリプトからいつでも手動で再追加できることです。少なくとも、スクリプトの観点からは、パスを手動で削除するよりも簡単になります。

  3. もはや必要なく、Linux/WSL バージョンのみを使用したい場合は、Windows Vagrant をアンインストールできます。

答え2

最新バージョンのVagrantまたは少なくとも2.2.15を使用していることを確認してください。そうしないと、Windowsの実行可能ファイルがLinux上で正しく実行されない可能性があります。

cmd.exeLinuxでパスを追加するだけです。

export PATH="$PATH:/mnt/c/Windows/System32"

そうしないと、説明したように次のエラーが発生します。

The executable 'cmd.exe' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.

上記の行を~/.profileファイルに追加し、次のように再ロードできます。

nano ~/.profile
source ~/.profile

これにより、Vagrantがそれを見つけることができますcmd.exe

Vagrantは、環境変数を介して実行可能VAGRANT_WSL_ENABLE_WINDOWS_ACCESSファイルを実行し、フォルダ同期などの機能を使用するためにWindowsシステムにアクセスできることを知りました。あなたは見つけることができますこの変数の詳細については、Vagrant公式ホームページの適切なページを参照してください。

export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"

Vagrantはこの変数を使用して、Windowsコマンドシェルを含むLinux上でWindows実行可能ファイルを起動しますcmd.exe

一つあるWindows 10のUbuntu 18とVirtualBoxのWSL1にVagrantをインストールする方法についてのYouTubeビデオ。ただし、このビデオは以前のソフトウェアの使用を示しているため、最新のソフトウェアはビデオに記載されているとおりに動作しない可能性があります。それ以外にも、ビデオはcmd.exeあなたが説明する問題を明示的に扱いません。

それにもかかわらず、Linux上でVagrantを実行してWindows VirtualBoxで仮想マシンを作成することは、常にスムーズに機能するわけではありません。次のようなエラーが発生する可能性があります。

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "a1d5c124-261b-4e4b-a11a-88f7bfdda6df", "--type", "headless"]

Stderr: VBoxManage.exe: error: Failed to get device handle and/or partition ID for 
0000000001cf34e0 (hPartitionDevice=0000000000000a39, Last=0xc0000002/1) 
(VERR_NEM_VM_CREATE_FAILED)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

これらのエラーを回避し、Vagrantが確実に機能するためには、Windows WSLまたはDockerコンテナではなく物理ハードウェア上でLinuxを実行する必要があります。物理ハードウェア上でLinuxを実行している場合、VirtualBoxもLinux上で実行され、VagrantはLinuxとWindows間の通信のためにLinux上でWindows実行可能ファイルを実行する必要はありません。

関連情報