#author("2022-01-07T07:51:59+09:00","","") [[22_Yanagi]] #author("2022-01-07T08:05:36+09:00","","") *WSL環境の構築 [#a363d2e1] windows10でcondaを使って冬の課題とかテキストマイニング実習の課題をしようと思っていたのに、Mecab-ipadic-neologdが使えないしnumpy,scipyあたりでなんか競合エラー起きているし、偶然出会った「シロワニさんのつくよみちゃんトークソフト」がwindowsでは使えないと書かれていて(゚Д゚)ハァ?となったので、Mecab-ipadic-neologdのGithubに書かれているようなWSL環境を構築しようとしたら沼ったので備忘録的な感じで残しておきます。これが私の冬の課題…&br; 使い道はたぶんないです。普通にMacやLinuxのPC使うなりcondaのエラーを修正したほうが楽… いろいろなサイトを見て数日かけてやっと形になったので初めての方はどうやったかあやふやです&br; また、簡単な動作確認をしただけなのできちんと導入できているかはまだ未知数です -WSLを有効にする&br; WSLとWSL2があるらしいですが、WSL2のほうがよさそうなのでそっちで導入しました --1.コントロールパネルからWSLを有効にする&br; コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化を選択し&br; 『Linux用Windowsサブシステム』と『仮想マシン プラットフォーム』にチェック&br; OKを押すと再起動を要求されるのでそれに従う&br; --2.Powershellを管理者権限で開いてwsl2の起動?とかとか&br; windowsマークを右クリック>windows PowerShell(管理者)を起動&br; [wsl --install]を実行する(※[]は無視してください)&br; ただこの更新にはカーネル更新プログラムパッケージが必要&br; 入ってないとこのURLからダウンロードしてって言われるのでそれに従う&br; &br; Microsoftのページにはディストリビューション(後述)も一緒にインストールされるって書いていますが手動でした気がします。&br; wsl2への変更も手動でしましたし、なんか間違えてそうですね…どうやったか覚えてない…&br; ---2-1.Linuxを動かすやつ(ディストリビューション)をダウンロードして簡単な設定とか&br; Ubuntuっていうのを使いました。Microsoft storeから検索して入手できます&br; 開くとインストール作業があった後Linuxで用いるユーザ名とパスワードの設定・再確認が求められるのでそれに従う。このユーザ名とパスワードは今後の作業で使います。&br; なお、パスワードを打っても表示はされません。でもきちんと入力されてはいます ---2-2.ディストリビューションがきちんとwsl2で動作してるかPowershellから確認&br; windows Powershellを開いて[wsl -l -v]を実行すると&br; NAME STATE VERSION &br; Ubuntu Stopped 2 …みたいなのが表示されるはずです&br; VERSIONが2になっていたら大丈夫。もしVERSIONが1の場合は以下のコマンドを実行&br; [wsl -set-version Ubuntu 2] >参考:https://docs.microsoft.com/ja-jp/windows/wsl/install > https://www.pc-koubou.jp/magazine/40465 -Ubuntuでpython3を使えるようにする&br; 参考ページの仮想環境の有効化までを順にしていけば大丈夫です&br; sudoでpython環境インストールをした後はテキストマイニング実習でやった方法と同じなので割愛します。以下では個人的に詰まった点をピックアップします >参考:https://qiita.com/sireline/items/3c97a0c266431ac5b2ea --ディレクトリにどうやってアクセスすればいいかわからない&br; →CIFSを利用して共有フォルダを作ってwindow側のファイルをLinux側でも扱えるように ---1,windows側で共有フォルダを作る&br; ただ作るだけだと共有相手がEveryoneになってるので&br; プロパティ>詳細な共有から変更>このフォルダを共有するにチェック&br; >アクセス許可>ユーザーを追加しフルコントロールにする ---2.Linux側でその共有フォルダをマウントする場所を作る&br; mkdirで適当な場所にフォルダを作る&br; treeでLinuxの構造を確認してから作った方がいいかもです(要インストール)&br; 例)mkdir winmount → /User/(user名)/winmount にフォルダができます >(使い方:https://dekiruengineer.com/engineer/linux_tree_command/) ---3.CIFSをインストールしてフォルダ同士をつなげる&br; [sudo apt install cifs-utils]を実行しCIFSをインストールして以下のコマンドを実行&br; sudo mount -t cifs -o username=[winのユーザ名],password=[winのパスワード],uid=[linuxのユーザ名] //[コンピュータ名orIPアドレス]/[win側の共有ファイル] [Linux側の共有ファイル]&br; 例)sudo mount -t cifs -o username=winUser,password=PassWord,uid=linUser //192.160.1.5/mount ./winmount&br; &br; ※上記は手動マウントの方法。起動時に毎回しないとダメ。自動的にしてほしい場合はfstebファイルを編集する&br; 自動化させる場合はIPアドレスを固定しないとダメかも。WSLのIPアドレス使えばいけるのかな…? >参考:https://codeaid.jp/blog/linux-windows-share/ --Matplotlibのshow()が使えない&br; →LinuxのGUIにwindows側が対応していないのが原因&br; VcXsrvをインストールしUbuntuのDISPLAY設定を変えることで表示ができた&br; ---1.VcXsrvのインストールと設定&br; 公式ページからダウンロードしてインストールして実行基本的に設定を変える必要はない&br; ただExtra settingのAdditional parameters for VcXsrvに[-ac]って入れておくと良き&br; ※ネットワークを使う(?)のでファイアウォールでパブリックの通信を許可しておかないと動いてくれない ---2.UbuntuのDISPLAYを設定を変更する&br; Ubuntuを開いて [sudo vi .bashrc]を実行&br; .bashrcの中身が表示されるので一番下の行に以下の分を挿入&br; export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0&br; 挿入したら保存してUbuntuを再起動して変更させる&br; &br; (sudo) vi [ディレクトリ名]&br; …そのディレクトリを開いていろいろ書き込みができる。対応したディレクトリがない場合は新たに作る&br; a(入力モードに切り替え)とEsc(コンソールモードに切り替え)と:w(保存)と:q(閉じる)だけ使えれば大丈夫&br; >(使い方:https://qiita.com/pe-ta/items/0510bee10bcfd88afeee) >参考:https://qiita.com/ryoi084/items/0dff11134592d0bb895c --python3でMecab-ipadic-neologdが使えない&br; →辞書のパスを修正することで対応 ---1.mecab-ipadic-neologd辞書のインストール&br; 下記の参考URLに日本語で説明してくださっているのでそれに沿って進めれば大丈夫です&br; ちなみに辞書はUbuntu環境では特に設定を変えない限り以下のパスにDLされると思います&br; /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd --- 2.mecab-python3のtagger記述を変える&br; 下記の参考URLのCommonIssueに書いてあることそのままです&br; 実習では tagger = Mecab.Tagger('-Ochasen -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/')としていましたが&br; これを tagger = Mecab.Tagger('-Ochasen -r/dev/null -d/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/')にすれば正常に動作してくれました&br; (Linuxにusr/local/...が無いのが原因。同名の空ファイルを作っても対処可能らしいです。試してないけど…) >参考:https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md > https://github.com/SamuraiT/mecab-python3 現状これらをすることでwin側で.py作成→Linux上で実行→win側で実行結果を確認できています&br; どうせ今後エラーとか出てくると思うのでそのたびに加筆するかもです -余談&br; ディレクトリ自体は仮想的に作ったLinuxのハードディスクイメージに入ってるんですかね?&br; 具体的な場所としては以下のパスです&br; \Users\(User名)\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx&br; ただ、この.vhdxが開けない…OSが違うので開けないのは当たり前と言えばそうなんですが…&br; 一応以下のサイトのようにマウントする手段はあるようなのですが上手にできませんでした&br; https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-mount-disk → Windows insider Programに参加してないとダメ?&br; あとChrome Remote Desktopを入れているとセキュリティ関連が固くなってどうのこうの…みたいな記事も見つけました&br; よくわからんです