LAKI PINGVINI<>
092018<><>

Instaliranje softvera u Linuxu (2)

APT na više načina

U prošlom broju smo govorili o tome kako se na Linux sistemima kompajliraju i instaliraju programi iz sors (source) kôda, kao i o tome kako da instaliramo program koji dolazi u obliku binarnih paketa. Sledeća cigla u našem zidu nosi naziv APT, što predstavlja skraćenicu od Advanced Packaging Tool. Ono što je potrebno istaknuti je da se ne radi o nekom konkretnom programu, već je u pitanju paket različitih aplikacija. One služe kao interfejs za dpkg i imaju za cilj da korisniku omoguće instaliranje i održavanje softvera.

Za razliku od Windowsa, gde se potrebne komponente po pravilu instaliraju sa programom, kod Linuxa je situacija nešto drugačija. Recimo, želimo da instaliramo paket prog1. Da bi on mogao da radi svoj posao, potrebno je da bude instaliran fajl lib1, a on u radu može zahtevati kôd iz fajlova lib2, lib3 i lib4. Takvi dodatni fajlovi se u Linux žargonu nazivaju zavisnostima (dependencies). Što su programi veći i kompleksniji, to je potreba za dodatnim fajlovima izraženija, pa bi mukotrpno instaliranje preko dpkg moglo da potraje satima. Da bi se proces instaliranja doveo u neke razumne okvire, uveden je pomenuti APT.

APT-GET

Apsolutno najpoznatiji i najčešće korišćeni deo paketa APT nosi naziv apt-get. Poznavanje rada sa ovom naredbom je od velikog značaja za uspešno korišćenje Linuxa na Debian baziranim distribucijama.

Novopečeni linuksoidi se u radu dosta brzo susretnu sa sledećom sekvencom:

sudo apt-get update && upgrade

Sudo je naredba koja omogućava izvršenje sa pravima administratora (kasnije ćemo je izostavljati zbog štednje prostora), apt-get je komanda o kojoj govorimo, dok su update i upgrade prateći parametri te komande. Dakle, prvo sa update vršimo sinhronizaciju lokalne baze podataka zadužene za sadržaj lokalnog repozitorijuma sa nekim udaljenim serverom navedenim u okviru fajla /etc/apt/sources.list. Sledeći korak se sastoji u preuzimanju novih verzija fajlova sa udaljenog repozitorijuma i prebacivanje na naš računar, što smo postigli korišćenjem parametra upgrade. U našem slučaju smo kombinovali parametre korišćenjem operatora „&&”, čime smo malo skratili kôd koji bi inače izgledao ovako:

apt-get update

apt-get upgrade

Na raspolaganju nam je i parametar pod nazivom dist-upgrade, koji je po funkciji sličan sa „običnim” upgrade, ali ovde imamo dublju proveru zavisnosti, sa naprednijim mehanizmom rešenja potencijalnih konflikata. Kada detektuje postojanje više verzija, prvo udaljava suvišne pakete, uspostavlja potrebne zavisnosti i u slučaju potrebe preuzima nove pakte sa interneta.

I dok Windows Update automatski obnavlja sistemske fajlove Windowsa, tamo je situacija sa apdejtom novih verzija instaliranog softvera dosta komplikovanija. Kao što smo videli, kod Linuxa se posao obavlja mnogo elegantnije, zadavanjem nekoliko tekstualnih naredbi.

Kada smo u prošlom broju govorili o naredbi dpkg, videli smo da se za instaliranje paketa koriste parametar -i, dok je to prilikom udaljavanja -r. Slična je situacija i ovde. Za instaliranje i deinstaliranje koristimo:

apt-get install paket

apt-get remove paket

Za razliku od dpkg, ceo posao je automatizovan, pa umesto da zavisne pakete instaliramo ručno, brigu o tome preuzima APT. Moguće je istovremeno navesti više paketa koji su odvojeni razmakom (’Space’). Ukoliko želimo da paket nakon instaliranja bude udaljen, na kraj naziva stavljamo minus:

apt-get install paket-

Postoje i druge sintaksičke „perverzije”, pa tako naredbom:

apt-get remove paket1 paket2+

„o jednom trošku” udaljavamo paket1 i instaliramo paket2.

Kada iz nekog razloga moramo da instaliramo određenu verziju paketa, to radimo sa:

apt-get install paket=oznaka_verzije

Održavanje higijene lokalnih paketa se obavlja preko sledeća četiri parametra: apt-get autoclean, čisti sistem od nepotrebnih deb paketa, apt-get clean čisti sadržaj paketa i instalacionih skripti u direktorijumu /var/cache/apt/archives, apt-get autoremove čisti nepotrebne zavisnosti zaostale u sistemu i apt-get purge paket deinstalira i briše paket, konfiguracione i instalacione fajlove.

U slučaju korišćenja parametara remove i purge, nazivi paketa mogu da sadrže džoker znakove, što omogućava istovremeno brisanje većeg broja paketa koji zadovoljavaju zadane uslove. Recimo:

sudo apt-get remove gedit*

briše sve pakete koji počinju sa „gedit”, a to su gedit, gedit-common i gedit-plugins, svi pripadaju tekst editoru Gedit. Moguće je koristiti i regularne izraze (regular expressions) koji se u tom slučaju stavljaju među znakove navoda:

sudo apt-get remove „^gedit.*”

string počinje (^) sa gedit, iza čega može slediti niz bilo kojih karaktera bez obzira na broj ponavljanja(.*).

Uz dodatak opcija

Osim pomenutih parametara, apt-get poseduje i dodatne opcije koje utiču na način izvršenja naredbe. Tako, recimo, -y, --yes ili –assume-yes, automatski pozitivno odgovaraju na sva pitanja koja se mogu pojaviti u radu sa apt-get. Uz pomoć opcije -f (--fix-broken), dajemo sugestiju da se isprave prekinute zavisnosti. Opcija –reinstall nalaže ponovno instaliranje nekog paketa, dok --purge vrši brisanje konfiguracionih fajlova. Korišćenjem --auto-remove uz neke parametre, postižemo isti efekat kao da smo koristili parametar autoremove. Dobro, ali zar nismo imali neke od tih opcija kao parametre naredbe apt-get? Svakako da jesmo, ali se razlikuju konteksti u kojima se oni koriste. Recimo, ako želimo da uklonimo neki paket i njegove zavisnosti, obično pišemo:

apt-get purge paket

apt-get autoremove

Zahvaljujući opcijama, isti efekat je moguće postići sa jednom linijom:

apt-get purge --auto-remove paket

Nekada je upotreba opcija prilično suptilna, kao u slučaju:

apt-get --reinstall install paket

Ovde opcija –reinstall dovodi do forsiranja instalacije već instaliranog paketa u najsvežiju verziju.

Postoji veliki broj kombinacija parametara koji u pojedinim slučajevima mogu imati iste rezultate. Recimo, navođenje purge nakon remove:

apt-get remove –purge paket

je ekvivalentno sa izvršenjem naredbe:

apt-get purge paket

Prostor nam ne dozvoljava da se opširnije posvetimo primerima upotrebe opcija, ali se uz njihovu pomoć mogu postići dosta zanimljivi rezultati.

APT-CACHE

Komponenta APT sistema pod nazivom apt-cache je zadužena za pretraživanje informacija o paketima. Recimo:

apt-cache stats, osnovni podaci o APT kešu

apt-cache pkgnames tekst, prikazuje pakete koji započinju sa ukazanim tekstom

apt-cache search serbian, spisak svih paketa u kojima se spominje reč „serbian”.

apt-cache show htop, mnoštvo informacija o paketu htop

apt-cache depends leafpad, spisak neophodnih paketa (zavisnosti)

apt-cache rdepends leafpad, spisak paketa koji su zavisni od ovog paketa

apt-cache showpkg leafpad, detaljna informacija o paketu i zavisnostima

Dakle, parametar search može biti od koristi kada ne znamo tačan naziv nekog paketa, ali otprilike znamo šta treba da radi i kakve reči sadrži u nazivu ili opisu. Detaljnije informacije o nekom paketu dobijamo preko parametra show, koji će prikazati sadržaj teksta koji dolazi u njemu. Sledeća dva parametra se odnose na prikazivanje zavisnosti. Ukoliko nam je potrebno da znamo koje zavisnosti su potrebne za uspešno instaliranje našeg paketa, onda koristimo parametar depends. Međutim, ako nas zanima koji drugi paketi zavise od nekog paketa, onda se služimo sa rdepends (reverse depends). U konkretnom slučaju za paket leafpad (grafički editor teksta) saznajemo da ima šest zavisnosti prema bibliotekama, dok nam rdepends govori da će paket lxde (poznato desktop okruženje) zahtevati instalaciju ovog paketa, što je i logično, pošto se on tamo koristi kao osnovni editor teksta. Parametar showpkg je svojevrsna kombinacija prethodna dva parametra. I ova komanda ima mnoštvo parametara i opcija, ali je njihovo nabrajanje izvan okvira ovog teksta.

Aptitude

Pod ovim nazivom se krije front-end za program apt-get i specifičan je po tome što se može koristiti kako sa interaktivnim interfejsom, tako i putem komandne linije. Interfejs startujemo upisivanjem naziva komande bez pratećih argumenata. Pred nama se pojavljuje radno okruženje menadžera paketa prilagođeno radu u tekstualnom režimu. Prvi red je namenjen liniji menija, u drugom redu su prikazane neke od najvažnijih prečica, dok je treći red ekrana namenjen smeštanju elemenata u stilu tab interfejsa, tako da stičemo utisak kao da radimo sa više prozora. Ostatak radne površine je podeljen na dva panela od kojih gornji služi za kretanje po stablu paketa, dok su u donjem prikazani detalji u vezi izabrane stavke. Paketi su načelno podeljeni u tri kategorije: instalirani, neinstalirani i virtuelni.

 
Glavne operacije sa paketima se obavljaju putem menija Package, dok je za pitanje problema sa zavisnostima zadužen Resolver. Ispočetka grafički interfejs izgleda pomalo komplikovano i potrebno je neko vreme da se korisnik navikne na njegovo korišćenje.

Kada se radi o korišćenju Aptitude kao standardne CLI naredbe, treba reći da je ono veoma slično radu sa naredbom apt-get. Drugim rečima, umesto da pišemo: apt-get install paket, pisaćemo: aptitude install paket. Ili umesto apt-get update, jednostavno pišemo aptitude update. Nećemo trošiti prostor za detaljnija objašnjenja, pošto mnogo toga rečenog u vezi apt-get važi i ovde. U pratećoj tabeli možemo videti neke od naredbi koje su specifične za upotrebu sa menadžerom Aptitude.

Aptitude važi kao bolji, elegantniji i moćniji menadžer paketa u odnosu na apt-get, ali još uvek mnoštvo linuksoida nastavlja sa korišćenjem starije verzije. Razlog tome je ponajviše u navikama koje se teško menjaju. Iako formalno ne postoje prepreke da istovremeno koristimo oba programa, preporučljivo je da, ukoliko koristimo Aptitude, ipak ne koristimo apt-get, pošto može doći do brisanja pojedinih flegova koje ovaj prvi koristi u radu, a u nekom slučaju i do gubitka zavisnosti.

APT != apt

Apt ujedinjuje funkcije modula apt-get i apt-cache i donosi manja estetska poboljšanja, poput prikaza napredovanja instalacije (progress meter) ili prikazivanja broja paketa koji se mogu nadograditi nakon apdejta repozitorijuma. Namenjen je prvenstveno za interaktivnu upotrebu i nije naročito praktičan za skripte i programske primene. Upotreba mu je jednostavnija i nema toliko opcija koje treba pamtiti. Komanda apt predstavlja svojevrsni pokušaj da se preuzmu pozitivne stvari od svih prethodno pominjanih alata i da se istovremeno uklone neke manje korisne sitnice koje utiču na kompleksnost. Ovde je važno istaći da, uprkos velikim sličnostima, komanda apt nije stopostotno kompatibilna sa sintaksom komande apt-get. Iako se njihove sintakse najčešće poklapaju, ponekad i nije tako. Recimo, ekvivalent apt-get dist-upgrade je naredba apt full-upgrade. Apt poseduje i nekoliko naredbi koje ne postoje u apt-get, pa tako, apt edit-sources omogućuje editovanje liste repozitorijuma u okviru podrazumevanog editora teksta.

Očigledna prednost ove komande se sastoji u manjem broju karaktera koje je potrebno kucati na tastaturi. Iako old-school korisnici Debiana po automatizmu kucaju apt-get, nije potrebno mnogo vremena da se preorijentišu na noviji oblik. Nećemo se previše zadržavati na komandi apt, pošto za nju važi najveći deo onoga što smo pisali o apt-get i aptitude, ali to ne znači da se sa manje uvaženja odnosimo prema njoj. Naprotiv, reč je o relativno novom i praktičnom načinu za instaliranje softvera, koji će tokom vremena biti sve dominantniji.

Igor S. RUŽIĆ

 
Instaliranje softvera u Linuxu (2)
Šta mislite o ovom tekstu?
Redcore Linux 1806
Arduino MKR1000
Particle Photon
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera