четвртак, 25 априла, 2024
Ослобађање

Дистрибуирање слободног софтвера

Аутор: Никола Харди

Повод за писање чланка

Сви смо се ми, као нови корисници слободног оперативног система нашли у ситуацији да нам је неко на форуму, чету или неком сличном месту предложио да инсталирамо поједине пакете како бисмо решили своје проблеме. Још чешће смо се нашли у ситуацији да и сами закључимо да треба да инсталирамо додатни софтвер на наш систем. Неискусни корисници, који су до тада углавном користили Мајкрософт Виндоуз оперативне системе, навикли су се да упутства за инсталацију и софтвер траже широм интернета, али у свету слободног софтвера то функционише мало другачије. Строго и изричито вам саветујемо да софтвер инсталирате искључиво из званичних ризница, путем софтверског центра или пакет менаџера. Друге могућности које се некада могу толерисати су инсталација помоћу одговарајућих пакета (.deb, .rpm) или додавањем ризница (рецимо PPA у случају Убунтуа). Последња могућност којој можете да прибегнете је инсталирање из изворног кода. Софтвер инсталирајте из званичних ризница или репозиторијума (енг. software repository), осим када имате потребе за специфичном верзијом неког парчета софтвера и знате шта тачно радите и коју одговорност тиме преузимате.

Ризнице софтвера и остале чудне речи

Када се софтвер инсталира помоћу неког управљача пакета (apt, yum, pacman, yaourt и emerge), преузима се из званичних ризница. Ризнице су места на интернету где су смештени софтверски пакети који су проверени, тестирани и који ће сигурно радити у вашем систему. Дакле, процес инсталирања на примеру Убунтуа изгледа овако:

  • Софтверским центром или другим алатом се извршава претрага пакета који су доступни у ризницама;
  • Изабрани пакет се преузима из ризнице, укључујући све додатне пакете који су потребни за његов рад;
  • Врши се провера да ли су сви пакети исправно преузети, како би се избегло инсталирање неисправних пакета;
  • Врши се провера аутентичности преузетих пакета, проверава се да ли је одговорно лице потписало пакет који је преузет;
  • Инсталирају се све „зависности” (пакети који су неопходни за рад) и жељени пакет;
  • Сви пакети се додају на листу инсталираних пакета како би управник пакетима могао да води рачуна о њиховим верзијама и изврши каснију надоградњу.

У претходним редовима је употребљено неколико термина као што су софтверски центар, пакет, потпис, управник пакетима и други, које је можда потребно разјаснити.

Софтверски центар углавном представља графички алат за претрагу и управљање софтвером на систему, односно само графички интерфејс који у позадини позива управник пакетима.

Управник пакетима (енг. package manager) је најчешће конзолни алат или скуп алата за претрагу, инсталирање, надоградњу и уклањање пакета.

Пакет је скуп датотека неопходних за инсталирање и исправан рад софтвера.

Потписи и контролне суме су део пакета за проверу интегритета и аутентичности преузетог садржаја.

Зависност је термин који указује да један пакет не може да буде инсталиран пре другог пакета јер се ослања на његове функционалности. Под термином зависности подразумевају се све везе које могу бити замршене, цикличне, рекурзивне или незгодне на неки други начин.

Шта су тачно пакети?

Пакет је архива која садржи софтвер преведен у извршни облик који одговара вашем систему. Поред тога, пакети садрже информације о свом интегритету, попут контролних сума и дигиталних потписа. Унутар пакета се могу налазити и упутства, информације о аутору пакета, аутору програма и помоћни алати и додатне процедуре који су неопходни за исправан рад софтвера који тај пакет садржи. Слободни оперативни системи се на основу дистрибуирања софтверских пакета могу поделити на „бинарне” (енг. binary based) и „базиране на изворном коду” (енг. source based). Код бинарних дистрибуција се унутар пакета налазе већ преведене датотеке у извршном облику, које се потом само смештају на одговарајуће место у систему и одмах могу да се користе. Код дистрибуција базираних на изворном коду као што је Џенту (енг. Gentoo), у пакету се налази локација одакле изворни код треба да буде преузет као и скрипта (списак наредби) којим се тај изворни код преводи у извршни облик и потом инсталира. Управник пакета уме да преузме и провери преузете податке, а потом и да изврши све потребне кораке како би софтвер био правилно инсталиран.

Једноставније инсталирање

У доба када су прави хакери ноћима инсталирали нов софтвер и сами писали управљачке програме (енг. driver) за своје уређаје, софтвер је готово увек био инсталиран из изворног кода, без управника пакетима. Готово сви пакети и програми се ослањају на неке друге библиотеке, програме или пакете, из чега следи да је могуће формирати стабло зависности, а потом и списак и редослед свих пакета које је потребно инсталирати. Уверавамо вас да није тако лако погодити редослед инсталирања и одговарајуће верзије за све зависности. Зато управник пакетима то ради за вас.

Аутоматске надоградње

Велика предност овакве шеме дистрибуирања пакета је у томе што постоје ажурни спискови инсталираних пакета. Управљачи пакетима редовно преузимају спискове актуелних верзија пакета у ризницама и пореде верзије. На захтев или аутоматски, могуће је проверити да ли постоје надоградње за инсталиране пакете и преузети их. Сигурни смо да не желите да у црној свесци имате списак ручно инсталираних пакета и њихових верзија, а још мање да неколико пута месечно обиђете све сајтове и поредите најновије верзије са онима које имате заведене у свом списку.

Безбедност

Дигитално потписивање је процедура која је присутна и ван контекста дистрибуирања слободног софтвера. Реч је о процесу у којем се за одређене податке генерише одговарајући потпис помоћу кључа. Оно се базира на концепту асиметричног шифровања и постоји увек пар кога чине јавни и приватни кључ. Власник кључа на основу података у пакету и свог приватног кључа генерише одговарајући потпис. На основу преузетих података и јавног кључа може се проверити да ли преузети подаци (у овом случају пакет) одговарају потпису, тј. да ли је неко успут променио део података. Контролне суме проверавају да ли је садржај исправно преузет. Потписи гарантују и аутентичност података.

Устаљено је мишљење да су слободни оперативни системи генерално безбеднији од оних других. Међутим, ово није сасвим тачно јер сваки систем има своје рупице, бубице, гремлине и вирусе. Разлика је у томе што су слободни оперативни системи врло непријатно окружење за ширење таквих рачунарских болести. Механизми којима се софтвер дистрибуира и инсталира су кључни за то. Пре него што овај чланак буде завршен и пре него што поновимо шта све лоше може да се догоди ако не пазите како и одакле инсталирате софтвер, ево једног теоријског примера када нешто пође по злу.

  • Неискусни корисник жели да инсталира програм за видео разговоре;
  • Претражује интернет у нади да ће пронаћи верзију за Линукс и у мрачном ћошку интернета проналази некакву верзију;
  • Инсталира је и убрзо примети да његов рачунар више не ради како треба;
  • Корисник закључује да је то дело злонамерног програма и да слободан софтвер и није тако безбедан.

Ево шта је заправо могло да се догоди.

Када је корисник преузео пакет са непознате локације, могао је да преузме верзију која је измењена тако да у себи има безбедносне пропусте разних врста (удаљено управљање рачунаром, преузимање података са рачунара и брисање датотека). Друга, блажа и више вероватна могућност је да је преузет исправан пакет, али ручном инсталацијом није додат на списак инсталираних пакета и због тога није био ажуриран. У међувремену је откривен безбедносни пропуст, а надоградња која решава проблем није инсталирана.

Имајте на уму

Пре него што се опет нађете у ситуацији да се питате како да инсталирате неки пакет, програм или било какав други део софтвера, имајте на уму да ће управник пакетима урадити следеће ствари уместо вас, као и ствари које би требало ви да урадите уместо управника пакетима.

  • Проверити аутентичност локација одакле је пакет преузет;
  • Контролном сумом проверити да ли је пакет исправно преузет;
  • Проверити потпис пакета како би се искључила могућност да је неко пресрео преузимање и тако подметнуо злонамеран код;
  • Разрешити потребне зависности (поновити претходне ставке за све зависности);
  • Испратити процедуру за ручно инсталирање;
  • Редовно проверавати обавештења о откривеним безбедносним пропустима и доступним надоградњама.

Једноставније је покренути софтверски центар или написати sudo apt-get install, зар не?