Cloud, DevOps si Linux – tipuri de pachete

Tipurile de pachete Linux sunt o parte importanta din operatiunile de management si mentenanta unui mediu bazat pe o infrastructura Linux. Pana la urma, o proportie covarsitoare din instantele virtuale si din workload-urile folosite de inginerii DevOps ruleaza un tip de distributie de Linux.

Ce este un tip de pachet?

Un pachet contine toate fisierele necesare pentru instalarea si distribuirea unui program software (fisierele binare precompilate, fisierele sursa, metadate) intr-o singura arhiva. Pachetul va contine si un fisier “manifest” cu informatii despre scopul programului, numarul de versiune, versiunile de sistem de operare pe care poate rula si cerintele de sistem pentru a putea rula corect. Aceste informatii sunt cunoscute si sub numele de dependinte si au ca rol ghidarea sysadminilor de catre dezvoltatorul de software cu privire la ce alte aspecte sunt necesare pentru a putea rula corect programul pe o anumita distributie de Linux.

Pachetele sunt facute sa functioneze cu un anumit manager de pachete. Un manager de pachete (pachet manager) este unealta folosita pentru a dezarhiva pachetul si pentru a pregati fisierele pentru instalarea software-ului. Toate managerele de pachete indeplinesc functii similare, dar au propriul mod de a functiona, precum si propria interfata de utilizator.

In lumea Linux exista doua managere de pachete extrem de importante: Red Hat Package Manager pentru pachetele de tip .rpm si DPKG pentru pachetele de tip .deb (Debian).

Pachetele RPM

Pachetul  rpm este printre cele mai populare tipuri de pachete folosite in lumea Linux si este chiar standardul de format folosit de Linux Standard Base. RPM a fost creat inital pentru Red Hat, dar a fost adoptat si de alte distributii ca OpenSUSE. Cel mai adesea , pachetele .rpm contin fisiere binare, insa pot contine si fisiere sursa necompilate (extensia in acest caz este .src.rpm).

Pachetele DEB

Acest tip de pachet a fost creat pentru distributie de Linux numita Debian si reprezinta standardul de impachetare a fisierelor si pentru distributiile derivate din Debian, precum Ubuntu. Fiecare pachet deb contine doua arhive: una cu informatii de control, cealalta cu fisierele executabile. Aceste arhive sunt in formatul tar. Utilitarul folosit la instalarea pachetelor deb este DPKG. Acesta este responsabil de impachetarea, dezpachetarea, instalarea si stergerea programelor din Debian si derivatele acestuia. De obicei, sysadminii nu folosesc DPGK, ci o varianta mai “prietenoasa” care sta deasupra numita APT (Advanced Package Tool).

Alte formate de pachete – TAR, TGZ, GZ

TAR a fost creat initial pentru sistemul de operare Unix ca un mod de a arhiva fisiere si directoare pentru backup-uri, restaurari si transferuri de date de pe un dispozitiv pe un altul folosind medii de  transfer de tip tape. De aici si numele tipului de arhiva – Tape ARchive. Arhivele create cu comanda tar se numesc “tarballs”. Ulterior, sysadminii pot dezarhiva fisierele pe acelasi sistem sau pe un sistem diferit. Original, comanda tar nu crea arhive comprimate, insa de-a lungul timpului au fost adaugate optiuni care sa reduca dimensiunea fisierelor pe disc. TAR ramane un mod foarte intalnit de a arhiva si de a impacheta fisiere atat pe Linux, cat si pe Windows.

TGZ este un mod de a crea arhive tar si de a le comprima folosind utilitarul GNU Zip (GZip). Rata de compresie depinde de tipul de fisier, insa se pot obtine randamente de 60-70%. Cele mai multe distributii de Linux permit creare de arhive comprimate folosind si comanda tar folosind optiunea -z. ~Arhivele obtinute vor avea extensia .tgz sau tar.gz.

Arhivele GZ sunt fisiere comprimate obtinute prin folosirea directa a utilitarului GZip. GZip comprima doar cate un fisier si creaza o arhiva .gz pentru fiecare fisier in parte. Daca vrem sa arhivam mai multe fisiere cu GZip, atunci inainte de acest lucru trebuie sa combinam toate fisiereul intr-unul singur. Mai simplu este sa utilizam formatul tar, nu?

Cum “desfacem” arhivele .tar.gz, .tgz si .gz?

Incepem cu cazul simplu. Daca avem o arhiva gz, putem folosi Gzip pentru a obtine fisierul original necomprimat.

Pentru arhivele .tar.gz si .tgz putem folosi intai GZip pentru a obtine arhivele individuale si apoi putem folosi tar pentru a le dezarhiva si pe acestea. Sau putem folosi direct tar cu optiunile x si z pentru a decomprima si extrage din arhiva fisierele originale.

Intelegerea modului in care fisierele sunt “impachetate” si “arhivate” in distributiile de Linux pentru instalarea de programe, distribuirea lor, pentru backup si restaurare este critica pentru operatiunile de zi cu zi executate de un DevOps sau sysadmin intr-un mediu de productie care gazduieste serverele si aplicatiile folosite de utilzatorii organizatiei si, deopotriva, pentru clientii acesteia.

Mihai Dumitrascu, Sr Systems Engineer