13. 6. 2020.

Od sorsa do paketa












Kada se iskusniji korisnici Windowsa prvi put ozbiljno susretnu sa Linuxom, neke stvari na njih ostavljaju snažan utisak, koji često zna biti negativne prirode. Ljudima naviklim na udobnosti grafičkog interfejsa pre svega teško pada potreba za čestim korišćenjem tekstualnih komandi. Naravno, Linux odavno ima mogućnost rada sa grafičkim interfejsom, ali je njegova prava snaga duboko ukorenjena u komandnoj liniji. Neko ko pretenduje da se nazove iole naprednijim korisnikom Linuxa, jednostavno mora da vlada sa barem nekoliko desetina CLI (Command Line Interface) komandi.

Na ovo se naslanjaju problemi u vezi sa instaliranjem softvera. Umesto udobnog rada sa instalacionim čarobnjacima u Windowsu, kod Linuxa se instaliranje često obavlja kucanjem naredbi, a ponekad i kompajliranjem programskog koda. Upravo je ovo bio jedan od glavnih razloga zašto je autor teksta u svoje vreme imao prilično razvijen animozitet prema Linuxu. Istina je da savremene distribucije imaju grafičke klijentske programe za instaliranje softvera, ali i pored toga kursor miša često moramo zameniti kucanjem po tastaturi.

Ipak, nakon kraćeg vremena, korisnici se navikavaju na osnovne CLI naredbe i one im „ulaze pod kožu”, tako da njihovo korišćenje predstavlja rutinu koja na neki način postaje i zarazna, pa se bez njih u radu oseća izvesna praznina.

U ovom tekstu ćemo pokušati da objasnimo neke stvari u vezi sa instaliranjem programa u Linuxu i one su, pre svega, namenjene početnicima na toj platformi, ali će tu da bude i zanimljivosti za iskusne korisnike. Akcenat ćemo staviti na rad sa Debian/Ubuntu baziranim distribucijama, pošto su one danas najrasprostranjenije, ali ćemo se ukratko osvrnuti i na rad sa ostalim važnijim distribucijama.

Alhemija sorsa

Iako odavno nemamo naročitu potrebu za kompajliranjem kao načinom za instaliranje softvera, svakako je dobro poznavati kako se to radi. Ovo je posebno korisno kada želimo da instaliramo najsvežiju verziju nekog programa koja se još ne može naći u repozitorijumima. Dodatna pogodnost ovakvog pristupa je veliki stepen portabilnosti, malo veća brzina izvršavanja, mogućnost optimizacije, konfigurabilnost i mogućnost da se analizira funkcionisanje koda.

Da bi se program kompajlirao, potrebno je da na računaru budu instalirani alati koji taj posao čine mogućim. Najčešće sve što nam je potrebno za kompajliranje dolazi sa distribucijom, a ukoliko to nije slučaj, neophodne programe instaliramo sa:

sudo apt-get install build-essential

Posle ovoga sistem ima sve potrebno (C/C++ kompajler, make, asembler, linker, osnovne biblioteke i alat za formiranje paketa) za početak procesa pretvaranja sorsa u izvršni program.

Izvorni kod programa se obično distribuira unutar arhiva sa ekstenzijama .tar.gz, .tar.bz2 i tar.xz. Dakle, prvi korak je da raspakujemo njihov sadržaj:

tar -xzvf sors_fajl.tar.gz

Argument x znači da želimo da raspakujemo arhivu, z sugeriše da sadržaj bude procesiran kroz program gzip, v ispisuje ekstraktovane fajlove, dok f prethodi nazivu fajla.

Slično je i u slučaju tar.bz2 arhiva:

tar -xjvf sors_fajl.tar.bz2

jedino se razlikuje argument j koji arhivu procesira kroz bzip2.

Za tar.xz arhive pišemo:

tar -xvf sors_fajl.tar.xz

Na kraju krajeva, moguće je raspakovati arhivu i pomoću drugih arhivatora, uključujući i one za rad iz grafičkog režima.

Nakon ovoga prelazimo u direktorijum sa raspakovanim fajlovima i kucamo:

./configure && make && make install

„./„ nam govori da je u pitanju direktorijum u kojem se trenutno nalazimo i obavezan je deo sintakse u ovakvim situacijama. Zatim sledi izvršenje configure skripta iz tekućeg direktorijuma, koji proverava da li sistem trenutno raspolaže svim sredstvima potrebnim za kompajliranje. U pojedinim scenarijima ovaj fajl može da bude odsutan. Sledeće dve naredbe – make i make install -završavaju posao oko instaliranja.

Nažalost, retko se dešava da se instaliranje završi „iz prve”, pošto na sistemu obično nedostaju određene biblioteke potrebne za kompilaciju. Pokušaćemo da opišemo situaciju na konkretnom primeru instaliranja poznatog torrent menadžera Transmission. Nakon prvog startovanja ./configure, dobijamo sledeću poruku:

No package ’libcurl’ found

Pomenuti libcurl predstavlja biblioteku za podršku raznoraznim mrežnim protokolima. Postoji nekoliko načina da se instalira, a mi smo koristili OpenSSL varijantu biblioteke:

sudo apt-get install libcurl4-openssl-dev

Nakon ovoga ponovo pokrećemo ./config i dobijamo grešku:

No package ’libevent’ found

Libevent je biblioteka za obradu asinhronih sistemskih događaja i taj paket instaliramo preko:

sudo apt-get install libevent-dev

Paketi koji imaju „-dev” u nazivu, uglavnom sadrže zaglavlja C fajlova i statičke biblioteke. Nakon novog pozivanja ./configure, pojavljuje se dosta specifična greška iz koje ne možemo zaključiti koja biblioteka je u pitanju:

error: Unable to find any supported crypto library.

U takvim situacijama nam preostaje da se oslonimo na pretraživanje interneta i tamo smo saznali da se ono što nedostaje ispravlja instaliranjem biblioteke libssh (omogućuje upotrebu SSH protokola):

sudo apt-get install libssh-dev

Nakon što se uverimo da više nema grešaka, možemo krenuti sa izvršavanjem make i make install naredbi (ili sve zajedno, kao u primeru sa početka), što će nakon par minuta rezultirati izvršnom verzijom programa. Ponekad će biti potrebno da make install izvršavamo uz pomoć naredbe sudo.

Da bi sebi olakšali život, prilikom instaliranja najnovije verzije nekog programa putem sorsa, pod uslovom da se njegove starije verzije nalaze u okviru dostupnog repozitorijuma, možemo se poslužiti malim trikom kucajući:

sudo apt-get build-dep neki_program

Sistem od nas traži da prihvatimo instalaciju zavisnih fajlova koji će stvoriti preduslove da se željeni program kompajlira.

Svet Kompjutera - kompletan tekst