--- title: '在Windows10上使用repo' disqus: hackmd --- [TOC] ## 在Windows10上使用repo ## 1. 安裝WSL ### 1-1 啟動Windows子系統 Linux版 以系統管理員身分開啟 PowerShell 並執行: ``` dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` ### 1-2 檢查執行 WSL 2 的需求 檢查您的版本及組建號碼,請選取 [Windows 標誌鍵 + R]、輸入 winver,然後選取 [確定] ![](https://i.imgur.com/lNJONWd.png) ![](https://i.imgur.com/XIFlZls.png) ### 1-3 啟用虛擬機器功能 以系統管理員身分開啟 PowerShell 並執行: ``` dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` 完成後,請先**重新開機** ### 1-4 下載 Linux 核心更新套件 [WSL2 Linux 核心更新套件 (適用於 x64 電腦)](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi) 下載好後**請完成安裝** ### 1-5 將 WSL 2 設定為預設版本 以系統管理員身分開啟 PowerShell 並執行: ``` wsl --set-default-version 2 ``` ### 1-6 安裝Linux版本 此部分會開啟 Microsoft Store :::info 這邊會需要用到微軟帳號,若無帳號請先建立帳號,反之在**取得軟體**時,請登入帳號 ::: [安裝Ubuntu 18.04 LTS](https://www.microsoft.com/store/apps/9N9TNGVNDL3Q) 由於我已安裝,所以取得會變成啟動 ![](https://i.imgur.com/wZiX78o.png) 取得後請至![](https://i.imgur.com/zdjqa5Q.png) 開啟Ubuntu![](https://i.imgur.com/tdZ04LF.jpg) 第一次啟動,系統會要求建立username 以及 password ![](https://i.imgur.com/LT67HL2.png) (此圖擷取自:https://docs.microsoft.com/zh-tw/windows/wsl/install-win10) ## 2. 安裝Windows 終端機(推薦) 請至Windwos Store下載Windows終端機 ![](https://i.imgur.com/CyMO6AE.png) 取得後請至![](https://i.imgur.com/zdjqa5Q.png) 開啟Windows Terminal ![](https://i.imgur.com/IfN1VeC.png) 推薦的原因在於,它可以開啟多分頁(Powershell or Ubuntu 18.04) ![](https://i.imgur.com/EVaOkwx.png) 在開新分頁時,點選箭頭,即可選擇不同系統 **到這邊WSL安裝完成** ## 3. 安裝Ubuntu 相關套件 利用Windows Terminal開啟Ubuntu 18.04 ### 3-1安裝指令: ``` $ sudo apt-get update $ sudo apt-get install git tig vim tmux ``` ### 3-2tmux 測試,下面為指令 ``` $ tmux 水平分割 $ ctrl + b 放開後接著按下 shift + " 切換到切割頁面 $ ctrl + b 放開後按下 上 or 下 選擇分頁割面 垂直分割 $ ctrl + b 放開後接著按下 shift + % 切換到切割頁面 $ ctrl + b 放開後按下 左 or 右 選擇分頁割面 離開 $ exit ``` 水平分割 ![](https://i.imgur.com/pi5ptJY.png) 垂直分割 ![](https://i.imgur.com/wJ3wENj.png) ### 3-3產生 SSH key 並交給學長 :::info 當上述都完成後,要先產生ssh key,因為之後的測試,再推commit進遠端需要權限!! 這邊的概念是,遠端的github如何知道 使用者(你) 是否有權限對這個倉庫做修改上傳?? ```gherkin= github的機制是,看看這個github遠端帳號有沒有你這台電腦的key,判斷行為如下: 有: => 代表這個github遠端帳號認識你這台電腦,可以讓你做修改上傳 沒有: => 代表這個github遠端帳號根本不知道你是誰,所以你無權限做修改上傳 ``` ::: ### 3-4 安裝OPENSSH CLINET ```gherkin= $ sudo apt-get install ssh ``` ### 3-5 輸入以下指令產生key ```gherkin= $ ssh-keygen 一路 enter 到完成 key 的產生 ``` ![](https://i.imgur.com/MvbpQXW.png) ### 3-6 將public key 交給學長 ```gherkin= 首先到 key 的位置 然後使用ls查看 $ cd /home/your_name/ $ cd ~/.ssh 這邊注意路徑~符號是代表你的家目錄,所以等同於/home/帳號名稱/, 注意 linux 的符號路徑,與 windows 區別如下 ### linux 路徑符號使用 / ### windows 路徑符號使用 \ $ ls 若要查看有沒有隱藏資料夾使用下列指令 $ ls -a ``` ![](https://i.imgur.com/NgakeXe.png) ```gherkin= 觀察 id_rsa.pub 裡面的內容 $ cat id_rsa.pub ``` ![](https://i.imgur.com/BFjP9ue.png) 請將整段key傳給學長 學長收到後會把這個key加到github遠端,如下圖, 代表遠端的github帳號已經可以認得你這台電腦了, 所以你這台電腦就有修改這個倉庫的權限了!! ![](https://i.imgur.com/6FjfCUF.png) ## 4. git ,tig and vim 測試 ### 4-1 使用 vim 編輯 git 設定檔案 ```gherkin= $ cd ~ $ vim .gitconfig 編輯如下圖,帳號名稱請輸入自己的 ``` ![](https://i.imgur.com/cd7TeD0.png) ### 4-2 在家目錄,創一個 NTUT 資料夾並進入 ```gherkin= $ cd ~ $ mkdir NTUT $ cd NTUT ``` ### 4-3 下載測試用的 source ```gherkin= ### 完整指令查詢請下 $ man git ### 下載測試git來源 若沒有申請KEY在遠端 GITHUB ,用 HTTP 下載: $ git clone https://github.com/masteree108/NTUT_for_testing.git 若已經有申請 KEY 在遠端 GITHUB ,請選用 SSH 下載: $ git clone git@github.com:masteree108/NTUT_for_testing.git $ cd NTUT_for_tesing $ ls 可看到有 README.md 等檔案 ``` ![](https://i.imgur.com/ZMrYdNG.png) ### 4-4 使用 tig 看看現在有哪些 commit ```gherkin= ### 完整指令查詢請下 $ man tig ### 常用指令如下 $ tig (請在有 .git 的資料夾輸入 tig ) 進入 commit: enter 離開: q 完整顯示 commit 內容: d 往下: j 往上: k 搜尋: /search_name ``` ### 4-5 使用 vim 工具隨意編輯 README.md ```gherkin= ### 完整指令查詢請下 $ man vim ### 編輯README.md $ vim README.md 按下i 開始編輯 編輯好後 按下ESC 再輸入:wq 即可儲存並退出 ### 常用指令如下 編輯此行: i 從下一行開始編輯: o 回覆上一動: u 取消命令: esc 搜尋: /search_name 存檔後離開: :wq (注意有冒號) 不存檔強制離開: :q! (注意有冒號) 到指定行數: :(冒號+行數) 複製: v 選擇要複製的文字,按下y 貼上:將上一動複製的按下p ``` ![](https://i.imgur.com/XpTYVG3.png) ### 4-6 編輯後查詢,並加修改後的檔案加入暫存區(工作區=>暫存區) ```gherkin= 工作區的檔案 git 能知道是否修改 若剛剛有編輯 README.md 成功後,可用 tig 或如下指令觀察 $ git status ``` ![](https://i.imgur.com/eqeRfq4.png) ```gherkin= $ git add README.md (嚴禁使用 git add * ) 再觀察一次檔案狀態 $ git status ``` ![](https://i.imgur.com/beQ2Ac2.png) ```gherkin= 使用tig 觀察 $ tig ``` ![](https://i.imgur.com/h3a5jAJ.png) ### 4-7 將 add 後的檔案提交(commit)到本地倉庫 ```gherkin= $ git commit 按下i 開始編輯 編輯好後 按下ESC 再輸入:wq 即可儲存並退出 ``` ![](https://i.imgur.com/2VNgenF.png) ```gherkin= 在看一下git狀態,因為已經提交到本地倉庫,所以目前工作區為乾淨的 $ git status ``` ![](https://i.imgur.com/xVNr2XN.png) ```gherkin= $ tig 可看到目前增加的commit 的內容,包括何人修改,修改內容與提交說明 ``` ![](https://i.imgur.com/NTb9DjU.png) ### 4-8 將本地倉庫推至遠端倉庫(再次提醒必須key有申請過後才能使用) ```gherkin= $ git push ``` ## 5. 使用 repo 套件下載 專案程式碼 --- :::info 雖然目前有 vott source 和 python track code 兩包,但之後的 code 可能會越來越多,所以使用 repo 來管理整個專案,才不用每次都使用 git 指令一包一包下載 ::: ### 5-1 創建資料夾後,使用 repo 下載專案 ```gherkin= 首先安裝 repo 套件 $ cd ~ $ curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo $ chmod +x repo $ sudo cp repo /usr/bin/repo 之後到 c: 建立專案資料夾 $ cd /mnt/c $ mkdir VoTT $ cd VoTT ``` :::warning 這邊請先安裝python ``` $ sudo apt install python-minimal ``` 否則repo可能會有問題 ::: ```gherkin= 管理倉庫來源下載 ``` [VoTT管理專案的倉庫](https://github.com/masteree108/VoTT_NTUT_WIN10_repo/blob/master/default.xml) ![](https://i.imgur.com/bEH32Sk.png) ```gherkin= 若沒有申請 KEY 在遠端 GITHUB,用 HTTPS 下載: $ repo init -u https://github.com/masteree108/VoTT_NTUT_WIN10_repo.git -b master 若已經有申請 KEY 在遠端 GITHUB ,請選用 SSH 下載: $ repo init -u git@github.com:masteree108/VoTT_NTUT_WIN10_repo.git -b master ``` :::warning 若是在下載時有出現 Permissions 0770 for '/home/xxxxx/.ssh/id_rsa' are too open. 可用下列指令修改權限,再重新下載即可 $ chmod 400 ~/.ssh/id_rsa ::: ```gherkin= 現在VoTT的資料夾只有.repo還沒有各別的專案資料夾 $ ls -a 可看到只有.repo資料夾 ![](https://i.imgur.com/ds2YqfI.png) ``` ```gherkin= 更新來源(等同於從遠端下載) $ repo sync sync 後會看到兩包 source code 資料夾 指定連結到遠端的主分支 $ repo start master --all ``` ![](https://i.imgur.com/WP0e353.png) ```gherkin= 關於 repo start master --all 驗證 這是代表本倉庫的分支要連結到遠端的哪個分支.由於目前我這邊沒有設定任何分支,所以以 master 主分支為準 可以使用如下指令觀察 $ cd CVTRK/WIN10 $ git branch -a 可觀察到目前連結到的是 master 分支 ``` ![](https://i.imgur.com/pyzQUPy.png) ### 5-2 觀察此專案內容 ```gherkin= repo sync 後可看到兩包資料夾,注意若是以後只是要從遠端更新專案, 只需要下下列指令,就會從遠端將資料更新到本地端 $ repo sync 下載後可看到兩包資料夾 $ ls ``` ```gherkin= 若是要查有沒有隱藏資料夾使用下列指令,可以看有一包.repo $ ls -a ``` ![](https://i.imgur.com/4jnUUve.png) ```gherkin= 進入.repo我們可以看到各自的來源是從哪個 github 倉庫過來的 $ cd .repo $ cd manifests $ cat default.xml ``` ![](https://i.imgur.com/zkAE1hO.png) ![](https://i.imgur.com/lyafrZT.png) ## 6. 測試使用Anaconda來安裝Python套件包(測試完成) https://hackmd.io/@NTUTVOTT/SJbese-Iv [Anaconda下載](https://www.anaconda.com/products/individual#windows) ![](https://i.imgur.com/oNdR0o3.jpg) 增加環境變數至系統 選取環境變數 ![](https://i.imgur.com/jnpx7Hi.png) ![](https://i.imgur.com/UyTcomc.png) [環境變數參考網站](https://ithelp.ithome.com.tw/articles/10218384) VSCODE 安裝 python 相關套件 ![](https://i.imgur.com/AQjFr69.png) VSCODE 安裝 terminal 相關套件 ![](https://i.imgur.com/yQVzDmd.png) 開啟 VSCODE 的 terminal 並選擇 cmd ctrl + ~ ![](https://i.imgur.com/qRxeX8h.png) 建立一個python 3.7環境 ```gherkin= $ conda create -n py37 python=3.7 ``` 切換至剛剛建立的環境 ```gherkin= $ conda activate py37 ``` 可看到指令列最旁邊多出py37 VS_CODE: ![](https://i.imgur.com/WOagSGF.png) 安裝相關套件 ```gherkin= $ pip install shortuuid $ pip install pyinstaller $ pip install numpy $ pip install opencv-python==4.0.0.21 $ pip install opencv-contrib-python==4.0.0.21 $ conda install pyqt ``` 若要移除opencv更新版本可參考如下指令 ```gherkin= pip uninstall -y opencv-contrib-python pip uninstall -y opencv-python ``` vott_tracker.py測試指令 ```gherkin= python vott_tracker.py ../../../Drone_Target/vott_source_info.tmp ../../../Drone_Target/vott_target_path.json v0.04之後的版本請用 $ python vott_tracker.py ../../../Drone_Target/vott_source_info.json ../../../Drone_Target/vott_target_path.json ``` ## 6. 參考網站 [Windows 10 上適用於 Linux 的 Windows 子系統安裝指南](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10) [使用repo遇到python問題解法](https://askubuntu.com/questions/942930/usr-bin-env-python-no-such-file-or-directory) ###### tags: `WSL`, `Windows10`, `repo`