どうやらダウンロードのLimit値に引っかかってダウンロードできないことがあるみたい
直ったやり方
- C:\User\(UserName)\.vscodeフォルダを削除する
- https://marketplace.visualstudio.com/items?itemName=ms-python.pythonへ行って”Download Extension“から拡張子vsixのファイルをダウンロードする。
- VSCodeを起動して以下のようにインストールする
どうやらダウンロードのLimit値に引っかかってダウンロードできないことがあるみたい
直ったやり方
Windows 10 64bit
アプリケーションの機能の追加でWindows System For Linuxをインストール。
インストールできたらstoreを起動してubuntuで検索してubuntuをインストールする。
aptのソースを変更してjpミラーにする。以下のコマンドを実行
1 |
$ sudo sed -i.mybk 's/archive\.ubuntu\.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list |
アップデート
1 2 |
$ sudo apt update $ suod apt upgrade |
デフォルトのターミナルはバッファがなくて使いづらいので変更。ターミナルとは文字だけが表示されているあのウインドウのこと。昔は1つのメインフレームに多くの端末が接続されていて、それをターミナルと読んだ。メインフレームにはモニターはないか使わない。ここではWSLで動くubuntuがメインフレームみたいなものでそれに接続し表示するものをターミナルと読んでいる。
minttyを使う。ここからwsltty-3.0.1.2-install.exeをダウンロード。警告が出るが構わず実行。デスクトップに’WSL Terminal’が出るのでこれを起動するとubuntuに接続したminttyが起動する。
LinuxでのGUIの扱いはやや複雑でモニターを持っているマシンをXサーバーといい、プログラム実行はクライアントで行い表示はXサーバーで行う仕組みになっている。WSLの場合はGUI機能はないと思うので、Windows側でXサーバーを動かしてプログラムはWSLで動かすことになる。
ここではVcXsrcを使う。vcxsrv-64.1.20.1.4.installer.exeをダウンロードしてインストールした。
インストールするとデスクトップに’XLaunch’というショートカットができるので起動。ダイアログが表示されるが全部デフォルトで進むとタスクバーにXのアイコンがでて起動が完了した。
1 |
$ sudo apt install firefox |
1 2 |
$ export DISPLAY=0:0 $ firefox |
DISPLAY環境変数にXサーバーを指定することで起動が行える。実際に表示しているのは上で起動したVcXsrv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
$ cd `mktemp -d` $ wget https://go.microsoft.com/fwlink/?LinkID=760868 $ file index.html\?LinkID\=760868 index.html?LinkID=760868: Debian binary package (format 2.0) $ mv index.html\?LinkID\=760868 aaa.deb $ sudo dpkg -i aaa.deb Selecting previously unselected package code. (Reading database ... 43298 files and directories currently installed.) Preparing to unpack aaa.deb ... Unpacking code (1.35.1-1560350270) ... dpkg: dependency problems prevent configuration of code: code depends on libnotify4; however: Package libnotify4 is not installed. code depends on libnss3 (>= 2:3.26); however: Package libnss3 is not installed. code depends on libxkbfile1; however: Package libxkbfile1 is not installed. code depends on libsecret-1-0; however: Package libsecret-1-0 is not installed. code depends on libxss1; however: Package libxss1 is not installed. dpkg: error processing package code (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.60ubuntu1) ... Errors were encountered while processing: code $ sudo apt install -f $ sudo dpkg -i aaa.deb |
このdebはインストールするとaptソースも書き換えてくれるようなので、次からはaptでアップデートできる。上のコマンドは最新のaptではsudo apt install aaa.debでもいいらしい。
ない場合はhttps://code.visualstudio.com/docs/setup/linuxからdebファイルをダウンロードしてubuntuにもってくる。あるいは上で起動したFirefoxからダウンロードする。ubuntu側からは/mntからNTFSにアクセスできる。
1 2 3 |
$ code To use VS Code with the Windows Subsystem for Linux, please install VS Code in Windows and uninstall the Linux version in WSL. You can then use the 'Visual Studio Code' command in a WSL terminal just as you would in a normal command prompt. Do you want to continue anyways ? [y/N]y |
VSCodeはWindowsでインストールして、それを使ってくれとのこと、ubuntuからでも起動できるから、とのことだがスルー
日本語が表示できないので以下でインストールしてみる。なお日本語入力はスルーする。
1 2 |
$ sudo apt-get install language-pack-ja $ sudo apt-get install fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-mincho fonts-ipafont-gothic fonts-unfonts-core |
これでもタイトルバーだけは文字化けするがこれはVcXsrv側の問題だと思うのでここではスルー。
(注)ここからはやらないほうがいいかもしれない。VcXsrvがおかしくなってfirefoxが起動できなくなった。
ubuntuデスクトップではdbusという設定サーバが見たいのが動いている。これはWindowsのレジストリのように機能していると思うがこれがないとgnome-terminal等のgnome関連のアプリが動かないので、まずはdbusをインストールして設定する。
1 2 3 |
$ sudo apt install dbus-x11 $ sudo apt isntall gnome-terminal $ gnome-terminal |
ubuntuのshutdownコマンドは効かないので、Windows側でサービスLxssManagerを終了する。管理者コマンドプロンプトで以下を入力
1 |
net stop LxssManager |
このサービスは自動で起動するように設定されてるようなので、WSLの起動には問題ない。
1 2 3 4 5 6 7 8 9 10 11 |
https://qiita.com/masa-tu/items/20111878476bb97a9d07 VcXsrvの起動オプションに-nowglを追加すると起動できる libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast export LIBGL_ALWAYS_INDIRECT=1 dbus-launch --autolaunch=`cat /etc/machine-id` --binary-syntax --close-stderr net stop LxssManager |
プロジェクト(フォルダ)ごとに設定するか、ユーザ設定にするか選べる。プロジェクトごとに設定する場合は、プロジェクトフォルダの.vscode/settings.jsonを編集する。ユーザ設定の場合は、[Ctrl]+[Shift]+Pで「Open Settings (JSON)」を選ぶと編集できる。(ただしプロジェクトごとの設定でうまく動かなかったのでここでは非推奨)
以下の内容を記述。(追加する場合は外側のカッコを無視した中身だけを追加)
1 2 3 4 5 6 7 8 9 10 |
{ "terminal.integrated.shell.windows": "C:\\local\\msys2\\usr\\bin\\bash.exe", "terminal.integrated.shellArgs.windows": [ "--login", ], "terminal.integrated.env.windows": { "CHERE_INVOKING": "1", "MSYSTEM": "MINGW64", }, } |
bash.exeのパスは自分の環境に合わせる。バックスラッシュはエスケープするので2つ書く。環境変数CHERE_INVOKINGはディレクトリをホームに移動しない指示。MSYSTEMはMINGのツールチェインらしい。mingを使わなければ関係ないはず。
これを記述したら、プロジェクトを2回開き直す(最初に確認が行われるため)。
msys2のgitはうまく動かなかった(パス関係?)ので、オフィシャルのgitなら動くのでそれを設定
1 |
"git.path": "C:\\local\\git\\bin\\git.exe" |
しかもmsys2はもともとのWindowsのパスを無視してしまうのでnodeやnpmが使えないのでVSCodeで好きなシェルを起動できる拡張の「Shell launcher」をインストール。設定で以下を追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
"shellLauncher.shells.windows": [ { "shell": "C:\\Windows\\sysnative\\cmd.exe", "label": "cmd" }, { "shell": "C:\\Windows\\sysnative\\WindowsPowerShell\\v1.0\\powershell.exe", "label": "PowerShell" }, { "shell": "C:\\local\\git\\bin\\git.exe", "label": "Git bash" }, { "shell": "C:\\Windows\\sysnative\\bash.exe", "label": "WSL Bash" } ] |
ここにあるパスは有効なものしか機能しない。cmdやPowerShell実際の値はVSCodeが設定する値(”terminal.integrated.shell.windows”)から確認できる。以下の動画を参照。
Files –> Preferences –> Keyboard Shortcutsから登録。
またはユーザ設定のフォルダにあるkeybindings.json(C:\Users\ユーザー\AppData\Roaming\Code\User\settings.json)を以下のようにする。
1 2 3 4 5 6 |
[ { "key": "ctrl+shift+oem_3", "command": "shellLauncher.launch" } ] |
1 2 3 4 |
これで登録してあるシェルの中からショートカットキー [Ctrl]+[Shift]+`で 好きなものを起動できる。(`はバックチック。ただし当方英語キーボード) (ここhtmlで`がうまく表示できないのでpre内(謎)) |