This is an old revision of the document!
Tutorial
apt-get
Hands-On
update-alternatives
dpkg
aptitude
Reporniți calculatorul dacă cineva a stat înaintea voastră la el. Dacă nu sunteți siguri, reporniți-l oricum, durează doar câteva minute. Obișnuiți-vă să faceți asta la fiecare laborator de USO înainte de a începe să lucrați.
tar zxf ~/Downloads/lab02.tar.gz
lab02
în directorul vostru home. Dacă nu se specifică altfel, toate task-urile și căile pe disc sunt relative la directorul corespunzător arhivei laboratorului (lab02
).cd lab02
cd
= change directory~/lab02
, adică subdirectorul lab02
din home-ul vostru.ls
.ls = list
pwd
.pwd
= print working directoryman ls
/
(slash).n
(next).n
până ajungeți la opțiunea -l
(use a long listing format).?
(semnul întrebării) în loc de /
(slash).q
(quit).info
. Pentru a ieși, folosiți aceeași tastă ca și pentru man
.info ls
ls -l
pentru a lista detaliat conținutul directorului.
Implicit, ls
listează conținutul directorului curent. Putem specifica un alt director pe care să îl listeze dând numele lui ca parametru.
Listați conținutul directorului j_r_r_tolkien
în două moduri:
lab02
ls j_r_r_tolkien
ls
fără alți parametri.Observați cum se face diferența între parametri (numele unui director) și flag-uri (care controlează comportamentul comenzii):
-
) are semnificație specială
Vreți să obtineți o imagine de ansamblu a directorului lab02
. Va trebui să îi listați recursiv conținutul.
ls
și căutați cuvântul recursive.lab02
, mutați-vă acolo.cd ..
.ls -R
pentru a lista recursiv.Este util să listăm directorul atât recursiv, cât și în format lung.
ls -l -R
pentru acest task.ls -lR
. Puteți combina flag-uri scurte în acest mod.--recursive
). Aceste forme se deosebesc prin prefixul de două caractere “minus” și nu pot fi combinate într-un singur “cuvânt”.
Intrați în directorul lab02/douglas_adams
. Scopul este să ajungeți, folosind cd
, în directorul lab02/j_r_r_tolkien/the_lord_of_the_rings
. Acest lucru se poate face în două moduri:
Astfel, va trebui să specificăm, separate prin /
, directorul părinte, apoi restul căii:
cd ../j_r_r_tolkien/the_lord_of_the_rings
..
)? Întrebați asistentul dacă nu este clar.cd ../../douglas_adams
j_r_r_tolkien
, numit the_hobbit
. Folosiți pentru acest lucru o cale absolută:cd /home/student/lab02/j_r_r_tolkien/the_hobbit
cd
:cd -
cd
fără parametri.Până acum, ați scris niște nume de fișiere și directoare lungi. Shell-ul vă poate ajuta completând automat numele unui fișier.
lab02/j_r_r_tolkien/the_lord_of_the_rings
. Urmați pașii cu atenție și observați ce și cât se completează din nume.cd la
, apoi TAB. Se completează numele directorului lab02
.j
, apoi TAB. Se completează din nou tot directorul.t
, apoi TAB. Se completează the_
.l
, pentru a elimina ambiguitatea, apoi TAB.
Intrați în directorul lab02
. Vizualizați conținutul fișierului TODO
folosind comanda cat
:
cat TODO
todo
, TODO
sau Todo
.T
urmat de TAB.cat
= concatenate. Comanda concatenează conținutul fișierelor date ca parametru și îl afișează pe ecran.
cat
: dacă se dă un singur fișier, conținutul său este concatenat cu … nimic. Rezultatul este afișarea conținutului fișierului.
O metodă eficientă prin care puteți afla numele unei comenzi este cu ajutorul apropos
.
apropos "remove files"
rm
rm
, rulați comanda which rm
/bin
, citiți din carte capitolul 4.1.2 Ierarhia sistemului de fișiere
Shell-ul reține o istorie a comenzilor rulate.
history
history 10
Pentru acasă: Căutați diverse metode prin care puteți vizualiza și edita fișiere.
apropos editor
. Testați câteva editoare.
Redenumiți directorul j_r_r_tolkien
astfel încât să conțină numele întreg al autorului:
mv j_r_r_tolkien john_ronald_reuel_tolkien
Gandalf este un personaj care apare nu numai în Lord of the Rings, ci și în The Hobbit. Copiați fișierul corespunzător:
cp john_ronald_reuel_tolkien/the_lord_of_the_rings/gandalf john_ronald_reuel_tolkien/the_hobbit
Cineva a făcut o glumă nesărată și l-a adăugat pe Edward ca personaj în Hitchhiker's Guide to the Galaxy. Ștergeți-l din structură:
rm douglas_adams/the_hitchhikers_guide_to_the_galaxy/edward
Chiar dacă a fost omorât la finalul primei părți, Boromir este un personaj important în trilogia Lord of the Rings. Adăugați-l la lista de personaje:
touch john_ronald_reuel_tolkien/the_lord_of_the_rings/boromir
touch
creează un fișier dacă nu există, dar are un alt rol. Citiți primele rânduri din pagina de manual pentru a vedea ce face.TODO
și urmați instrucțiunile.j_k_rowling
mkdir j_k_rowling
harry_potter
și câteva fișiere reprezentând personaje din aceste cărți.
Vizualizați întreg directorul lab02
sub formă de arbore.
tree
.Multe din programele pe care le vom folosi nu vin preinstalate. Pe Windows trebuia să rulați un executabil pentru a instala un program.
Pe sistemele Ubuntu, pachetele se instalează utilizând apt-get
. De exemplu, pentru a instala tree
trebuie să rulăm comanda:
apt-get install tree
Nu puteți instala pachetul, trebuie să fiți root
(de ce?)
sudo apt-get install tree
tree
.
Vi se vor afișa operațiile care se vor executa și efectele asupra spațiului pe disk și apoi veți fi întrebați dacă vreți să continuați. Dintre cele 2 litere, y
și n
una este majusculă, semnificând opțiunea implicită: dacă nu introduceți nimic și apăsați doar pe Enter, se va considera respectiva opțiune.
Verificați că s-a instalat tree
:
tree
Există cazuri în care un pachet depinde de alt pachet.
Pentru instalarea unui pachet trebuiesc instalate toate dependențele acestuia.
Din fericire, apt-get
știe să instaleze dependențele lipsă. Testați instalând ack-grep
.
Observați că se vor instala mai multe pachete decât ați dorit voi.
Folosind man
, identificați ce face ack-grep
.
Vă întrebați poate de unde se descarcă pachetele? Vizualizați conținutul fișierului /etc/apt/sources.list
.
O linie specifică o posibilă sursă de pachete. Formatul este următorul:
deb url version type tags deb-src url version type tags
unde type
reprezintă versiunea sistemului Ubuntu folosită (numele de cod al versiunii, de exemplu natty
pentru 11.04 Natty Narwhall)
Puteți modifica oricând acest fișier. De exemplu, în cazul în care locația repository-urilor este prea departe, pentru o instalare mai rapidă se recomandă să modificați toate URL-urile.
Schimbați URL-urile din ro….
în en…
(amintiți-vă cum făceați replace pe tot fișierul din laboratorul de Vim)
echo
.TODO
.> TODO
după parametrii lui echo
.cat
. Observați că vechiul conținut a fost suprascris.TODO
.>> TODO
pentru a nu suprascrie conținutul vechi (mod append).echo
este o formă foarte limitată de a scrie în fișiere. Citiți din carte secțiunea despre editorul Vim. Îl veți folosi într-un laborator ulterior.isaac asimov
. Folosiți spații în nume.mkdir
două argumente, isaac
și asimov
. Nu este efectul urmărit.\
).rmdir
pentru a șterge directorul isaac
.rm
pentru a șterge directorul asimov
.rm
. Identificați-l folosind pagina de manual sau cartea de USO.rmdir
și rm
cu acel parametru? Folosiți, din nou, manualul.echo
pentru a scrie textul Old wise man
în fișierul john_ronald_reuel_tolkien/the_lord_of_the_rings/gandalf
.john_ronald_reuel_tolkien/the_hobbit/gandalf
. De ce nu sunt cele două fișiere identice?the_lord_of_the_rings
.ln
, dar trebuie să folosiți un parametru adițional pentru a specifica faptul că link-ul creat trebuie să fie simbolic.ls
în format lung pentru a confirma că fișierul nou este, de fapt, un link.gandalf
din cele două directoare au același conținut.
Afișați conținutul tuturor fișierelor cu extensia conf
din directorul /etc
.
cat
.
Folosiți du
pentru a afla cât spațiu pe disc ocupă întreg directorul lab02
.
du
= disk usage
Folosiți df
pentru a afla ce partiții există, ce dimensiune au și cât spațiu este ocupat pe acestea.
Folosiți tar
pentru a arhiva directorul lab02
.
lab02.tar
, care nu este comprimatălab02.tar.gz
, comprimată cu gzipCe constatați legat de dimensiunile fișierelor rezultate, raportat la dimensiunea directorului inițial?
unrar
.atool
.
Uneori, unele pachete se găsesc în repository-uri private, aparținând unor dezvoltatori Ubuntu. Acestea se găsesc pe Personal Package Archives (PPA)
Instalați pachetul gmchess.
Folosiți acest tutorial ca hint.
Putem instala un pachet și având descărcat fișierul .deb
asociat. Trebuie să avem toate dependențele instalate sau să le instalăm noi.
Descărcați Skype și instalați folosind fișierul .deb
obținut.
În trecut, pe Linux singura metodă de a instala ceva era compilarea din surse. Acum aproape toate sistemele oferă o metodă de instalare utilizând un package manager. Cu toate acestea, există situații când veți dori să instalați din surse (dacă pachetele sunt prea vechi, nu puteți să le luați din altă parte - PPA, deb sau versiunea următoare -).
pacman
și yaourt
).
Instalați din surse nmap
Există situații când avem mai multe programe cu aceeași funcționalitate: Firefox și Chromium pentru browsing, vim
și nano
pentru editare.
Programele care au nevoie, de exemplu, de un editor, nu vor apela direct unul din aceste editoare. În schimb, vor încerca să apeleze un editor generic, numit editor
. Administratorul sistemului va configura legătura între editor
și editorul folosit
Folosind update-alternatives
setați ca editor
vim.basic
. Comanda visudo
ar trebui să deschidă un editor vim
.
În spate, update-alternatives
realizează un symlink între cele 2 executabile.
Verificați, utilizând which
și ls -l
care este executabilul apelat în momentul rulării comenzii vi
.
Faceți astfel încât game
să ruleze mahjongg
(folosiți which
pentru a vedea locația mahjongg
).
În anumite cazuri veți dori să instalați un pachet din surse dar nu vreți ca resursele să fie instalate în directoarele standard (/usr/bin
, /usr/lib
de exemplu).
Pentru a putea rula executabilul instalat, puteti proceda în mai multe moduri:
* adăugați la PATH
calea către noul executabil
* realizați un alias pentru executabil
* realizați un symlink pentru executabil și plasați link-ul într-un director din PATH
Primele două soluții vor fi analizate într-un laborator ulterior. Modul de aflare al directoarelor din PATH
tot atunci.
Descărcați următorul program simplu. Vrem să-l rulăm ca pe o comandă oarecare. Realizați un link simbolic pentru test_ln_s
în /bin
. Ar trebui ca rulând comanda test_ln_s
să putem rula executabilul.
Pe sistemele Debian based (Ubuntu e unul din ele) există și dpkg
ca manager de pachete. Dacă avem acces la apt-get
, dpkg
e folosit doar pentru aflarea de informații înainte de instalarea unui pachet.
Folosiți dpkg
pentru a lista toate pachetele legate de git
(hint: *git*
).
Cine este autorul original pentru pachetul tree
?
Ce fișiere au fost instalate în sistem odată cu pachetul ack-grep
?
Hint: vedeți în manual ce fac opțiunile de la dpkg-query
.
gwibber
este un pachet interesant pentru un utilizator obișnuit, dar nu și pentru laboratorul de USO. Dezinstalați-l.
Găsiți o metodă de a dezinstala pachetul, împreună cu toate fișierele sale de configurare.
apt-get
.sudo
, pentru că este vorba despre un task administrativ.Readline este o facilitate care ajută la editarea eficientă a comenzilor pe care le scriem în shell. Vom explora câteva concepte utile.
supercalifragilisticexpialidocious
.
Alt-.
(Alt și punct)?Alt
din stânga tastaturii.mkdir
folosind reverse search. Puteți citi mai multe despre acest concept aici, secțiunea Searching the command history.rm -rf /tmp
. Nu apăsați enter. Alt-#
(Alt și diez). cd -
. Identificați o problemă a ei. Ce se întâmplă dacă o folosim de două ori consecutiv?pushd
și popd
. Cum putem afișa stiva de directoare, fără a o modifica?pushd
și popd
sunt comenzi built-in ale shell-ului. Drept urmare, nu au propria pagină de manual.bash
. Folosiți pagina de manual aferentă pentru a găsi semnificația comenzilor pushd
și popd
.
Folosiți chroot
pentru a face ca pwd
în directorul
/tmp/chroot_jail
să returneze /
. Puteți naviga în exteriorul
directorului /tmp/chroot_jail
, după ce ați făcut chroot
?
Listați conținutul directorului din chroot
. Faceți astfel încât listarea
să fie posibilă (pentru a ieși din jail folosiți exit
)
/tmp/chroot_jail
directoare pentru
executabilele bash
, pwd
(folosiți which
pentru a afla locația
lor) și pentru bibliotecile necesare acestor programe (folosiți ldd
pentru a le afișa).
chroot
pentru a crea un mediu virtual, protejat, pentru testarea unor aplicații. Tehnica este denumită sandboxing.