Table of Contents

Startup guide - WSL, VSC si GitHub

Autor: Dănuț Ciobanu

Introducere

Pentru acest curs, folosirea WSL (Windows Subsystem for Linux) și Visual Studio Code (VS Code) vă va ajuta enorm. Gândiți-vă la această combinație ca la un banc de lucru universal, care vă asigură că toți veți lucra într-un mediu identic, standardizat, la fel ca profesioniștii. Cu WSL, chiar dacă aveți Windows, veți putea rula un mediu Linux autentic, eliminând astfel problemele de compatibilitate și diferențele de configurare dintre voi. Veți avea acces direct la aceleași unelte și compilatoare (cum ar fi G++ pentru C++) pe care le veți întâlni și în industrie. În același timp, VS Code vă oferă o interfață modernă, prietenoasă și gratuită, unde puteți scrie și depana codul mult mai ușor.

Pasul 1 - Instalarea WSL

Pentru a instala WSL, primul pas este deschiderea aplicației “PowerShell” ca administrator, precum în poza de mai jos:

Urmatorul pas este rularea comenzii wsl --install in terminalul ce se va deschide și realizarea setărilor necesare:

Pasul 2 - Instalarea Visual Studio Code și plugin-uri

Prin accesarea paginii oficiale a celor de la Microsoft vi se va deschide următoarea pagină web:

Aici faceți click pe butonul de “Download” și descărcați executabilul pentru instalarea Visual Studio Code. Rulați executabilul și instalați aplicația, lasând setările default (puteți schimba totuși locația de instalare a acestuia, dacă preferați). După ce veți deschide aplicația, veți ajunge la următorul ecran:

Următorul pas este instalarea extensiilor apăsând pe ultimul buton de jos, cel cu bloculețe, din meniul din stânga. Extensiile de care vom avea nevoie sunt:

Acum este recomandat ca terminalul default din Visual Studio Code să fie WSL, pentru ușurință. Facem acest lucru prin apăsarea sucesiunii de taste CTRL + SHIFT + P și apoi scrierea în text box a Preferences: Open User Settings, astfel ajungând la următorul ecran:

Aici, scrieți în search box-ul de sus terminal.integrated.defaultProfile.windows, veți vedea un dropdown cu setarea inițială null, dați click pe ea și selecați Ubuntu (WSL), ca în imagine:

Acum de fiecare dată când veți deschide un terminal, acesta va fi de tip WSL direct și nu veți mai da comenzi greșite în terminale nepotrivite.

Pasul 3 - Pregătirea de folosire a WSL

Prima data rulați comenzile git --version și g++ --version pentru a verifica că aveți pachetele necesare instalate, astfel:

Dacă vreuna nu este instalată sau este o versiune mai veche, rulați sudo apt install git pentru Git și sudo apt install g++ pentru G++, astfel:

Pasul 4 - Adaugare utilizator (pentru calculatoarele din sală)

În următorii pași vom fi nevoiți să generăm o pereche de cheie publică + cheie privată pentru a putea interacționa mult mai ușor cu Git. Aceste perechi de chei sunt unice fiecărui profil de utilizator din WSL și, dacă sunt suprascrise, se va pierde metoda de conectare la Git. Astfel, cea mai bună și sigură metodă de a face acest lucru în cadrul laboratorului MAI ALES PENTRU CEI CARE LUCREAZĂ PE CALCULATOARELE DIN SALĂ (dacă lucrati pe laptopul personal, puteți folosi utilizatorul vostru sau puteți urmări pasul acesta pentru a crea un utilizator specific laboratorului de POO) este să creăm un alt utilizator, specific nouă. Pentru a face acest lucru trebuie rulate câteva comenzi în terminalul de WSL:

Pasul 4 - Generare și adăugare cheie publica la GitHub

Odată ce v-ați autentificat pe contul dorit (ATENȚIE să nu fiți pe root sau contul default de “student”, “user” etc, dacă sunteți în sala de laborator) se rulează comanda ssh-keygen pentru a genera cheia publică ce o vom încărca pe GitHub. Lăsați locația și passphrase goale apăsând tasta ENTER. Rulați comanda cat ~/.ssh/numeFișier.pub (ATENȚIE “numeFișier” este un placeholder pentru exemplificare, trebuie înlocuit cu id_rsa, id_ed25519 etc după cazul fiecăruia, dar păstrată terminația de .pub):

Intrați pe GitHub și autentificați-vă pe conturile voastre. Dați click pe poza voastră de profil din dreapta-sus și apoi click pe “Settings”:

Apoi dați click pe “SSH and GPG Keys” din meniul din stânga și “New SSH Key” în dreapta-sus:

În fereastra nou apărută copiați cheia publică în toată întregimea sa (început “ssh-rsa” sau “ssh-ed25519” etc cât și terminația ce reprezintă numele de utilizator și numele dispozitivului “nume@dispozitiv”) și puneți-i un nume corespunzător astfel încât să o puteți identifica cât mai ușor pe viitor:

Se poate vedea și în poză că este strict necesar începutul cu “ssh-”.

Revenind în terminalul WSL din Visual Studio Code, ar fi o idee bună să pregătim și configurația pentru Git. Pentru a face asta vom rula comenzile git config --global user.name "username_GitHub" și git config --global user.email johndoe@example.com (înlocuiți numele de utilizator și adresa de email cu ale voastre). Rulând comanda git config --list vom putea verifica dacă am facut modificările corecte și ar trebui să arate astfel, dar cu datele voastre:

Acum aceste setări vor fi salvate global pentru acest utilizator pentru comenzile următoare de Git.

Pasul 5 - Primul repository și cod

Intrați pe GitHub și apăsați pe butonul de ”+” din dreapta-sus:

Apoi dați-i un nume și recomandat este să îl faceți privat atâta timp cât nu vreți ca oricine extern să vă poată vedea repository-ul respectiv și salvați-l:

Acum salvați link-ul de tip SSH în clipboard deoarece îl vom folosi imediat:

Revenind în Visual Studio Code, dați click pe “File” din stânga-sus și pe “Open Folder…” apoi selectați folderul unde doriți sa lucrați:

ATENȚIE: Acum interfața s-a resetat și terminalul de WSL precedent s-a închis deci TREBUIE SĂ NE AUTENTIFICĂM PE PROFIULUL PERSONAL DIN NOU

Dați click pe “Terminal” în stânga sus și apoi pe “New Terminal” pentru a-l redeschide:

În poza de mai sus se observă 2 lucruri importante:

  1. Utilizatorul s-a resetat la cel default, autentificarea este necesară
  2. Lângă combinația numeUtilizator@numeDispozitiv se poate vedea, cu albastru, path-ul către folderul curent, deci deja suntem în folderul dorit după ce am dat “Open Folder…” înainte, e bine

Următorul pas este clonarea repository-ului creat pe GitHub pe dispozitivul local. Asta se realizează folosind comanda git clone linkSshCopiatAnterior. “Git clone” este practic o succesiune de 4 comenzi individuale de Git:

ATENȚIE: deci nu mai este nevoie sa rulăm git init separat.

În poza de mai sus se observă 3 lucruri importante, din nou:

  1. Când s-a realizat clonarea, S-A CREAT UN FOLDER NOU CU DENUMIREA ACESTUI REPOSITORY
  2. Noi trebuie să lucrăm în folderul ce conține “.git” deci trebuie sa folosim comanda cd pentru a ne muta în directorul corespunzător și în WSL → Repository-ul folosit de mine se numește “LabOCW” și se poate vedea comanda cd LabOCW pentru a mă afla în folderul corect pentru când va fi necesară compilarea și rularea fișierelor
  3. La prima conectare prin SSH, este necesară adăugarea domeniului “github.com” în lista de “gaze cunoscute” (“known hosts” în negleză) pentru a putea facilita accesul în viitor. Asta se realizează scriind “yes” când se cere.

În poza de mai sus:

Pentru a compila codul scris, voi folosi comanda g++ functions.cpp main.cpp -o exec. Pe bucăți, reprezintă:

  1. g++ este compilatorul de cod C++ instalat în primii pași
  2. functions.cpp main.cpp reprezintă lista de fișiere .cpp ce vor fi compilate (ATENȚIE doar fișierele .cpp se compilează, fișierele .h se includ pentru referințe ce trebuie transmise între fișiere, ACESTEA NU SE COMPILEAZĂ)
  3. -o reprezintă opțiunea pentru a crea un executabil ce poate fi rulat
  4. exec numele executabilului

Pentru a rula executabilul se folosește sintaxa ./numeFișier, care este general valabilă în Linux pentru a rula fișiere ce pot fi executate. În cazul nostru: ./exec.

Pasul 6 - Încărcare pe GitHub

Pentru a realiza trimiterea fișierelor către repository din GitHub trebuie executate următoarele comenzi:

  1. git add fișier → se adaugă fiecare fișier
  2. git commit -m “mesaj” → se pregătesc fișierele pentru commit împreună cu un mesaj relevant
  3. git status → e o preferință personală pentru a verifica dacă am uitat fișiere și că totul este în regulă
  4. git push → deoarece am clonat prin SSH, toate informațiile necesare au fost primite încă de la început si toate modificările adăugate în commit pot fi “împinse” pe GitHub direct, fără parole sau alte configurații necesare

Concret:

Și rezultatul de pe GitHub:

Se poate vedea că fișierele au fost încărcate cu succes și cu mesajul corespunzător.