Kompletný sprievodca softvérovými repozitármi: Typy, správa a prevádzka

  • Definícia repozitárov ako centralizovaných digitálnych úložísk pre softvér a správu verzií.
  • Rozdiel medzi repozitármi balíkov pre operačné systémy a platformy pre spoluprácu na kóde.
  • Dôležitosť správcov balíčkov a systémov správy verzií vo vývojovom cykle.

Pohľad na modernú serverovňu s modrým osvetlením, ktorá predstavuje úložnú infraštruktúru softvérového repozitára.

Keď sa ponoríme do sveta programovania alebo sa začneme pohrávať s operačnými systémami ako Linux, veľmi často sa stretneme s pojmom repozitár. V podstate môžeme povedať, že repozitár je digitálny úložný priestor , kde sú uložené dáta, dokumenty a najmä zdrojový kód, aby ich mohla komunita vývojárov alebo konkrétna organizácia načítať, upraviť a zdieľať.

Hoci si mnohí ľudia myslia, že slúžia len na ukladanie súborov, realita je taká, že repozitáre sú základom škálovateľnosti a zabezpečenia moderného softvéru. Od správy verzií, ktorá nám bráni v náhodnom vymazaní práce kolegu, až po servery, ktoré nám umožňujú nainštalovať aplikáciu jediným príkazom, repozitáre sú srdcom moderného softvérového inžinierstva.

Nasadenie systému Linux
Súvisiaci článok:
Výukový program pre nasadenie Linuxu: Ako hostiť webový server na mobilnom telefóne

Typy úložísk podľa ich účelu

Sústredený softvérový vývojár pracujúci s dvoma monitormi v modernej kancelárii a zobrazujúci tvorbu zdrojového kódu.

Nie všetky repozitáre robia to isté; existuje široká škála v závislosti od toho, čo potrebujete ukladať a ako to chcete spravovať. Napríklad repozitáre so správou verzií sa zameriavajú na archiváciu zdrojového kódu a zaznamenávanie každej malej vykonanej zmeny, čo umožňuje vývojárom vrátiť sa k predchádzajúcim verziám, ak sa niečo pokazí (známy „rollback“). Klasickými príkladmi by boli GitHub, SVN alebo CVS.

Na druhej strane máme softvérové ​​repozitáre , ktoré sú v ekosystéme GNU/Linux veľmi bežné. Namiesto surového kódu tu nájdeme predkompilované balíky pripravené na inštaláciu spolu s ich metadátami a závislosťami. Tieto repozitáre môžu byť vzdialené, hostované na cloudových serveroch alebo lokálne, napríklad inštalačné DVD. Na správu tohto všetkého sa používajú správcovia balíkov ako APT v Debiane pre mobilné zariadenia , yum v Red Hate alebo zypper v openSUSE.

vyhľadávanie aplikácií s otvoreným zdrojovým kódom pomocou F-Droid
Súvisiaci článok:
Kompletný sprievodca vyhľadávaním aplikácií s otvoreným zdrojovým kódom pomocou F-Droid

Existujú aj ďalšie špecifickejšie variácie:

  • Úložiská metadát: Používa sa v komplexných infraštruktúrach na ukladanie informácií o kontexte a prostredí systému bez dotyku zdrojového kódu.
  • Úložiská dokumentových serverov: Ako napríklad arXiv, kde sa publikujú vedecké články, ktoré pred sprístupnením recenzujú odborníci.
  • CASE repozitáre: Špeciálne navrhnuté pre počítačom podporované softvérové ​​inžinierstvo, uchovávajúce všetku projektovú dokumentáciu a dáta.

Správa verzií: Súboj Git vs. SVN

Tím programátorov spolupracujúcich na softvérovom projekte v prostredí technologickej kancelárie, ilustrujúci spoločnú prácu v repozitároch.

Pre vývojárov softvéru je výber správneho nástroja na správu verzií kľúčový. Tu prichádzajú na rad Git a SVN. Hoci majú spoločný cieľ verzovania kódu, fungujú úplne odlišnými spôsobmi. Git je distribuovaný systém , čo znamená, že každý vývojár má kompletnú kópiu histórie verzií na svojom vlastnom počítači. Vďaka tomu je neuveriteľne rýchly a umožňuje prácu offline.

Naproti tomu SVN používa centralizovaný model . Existuje jeden server, ktorý ukladá celú históriu a používatelia sa k nemu musia pripojiť, aby si mohli zobraziť staršie verzie alebo nahrať zmeny. Zatiaľ čo Git je veľmi flexibilný s vetvami, tento proces je v SVN často zdĺhavejší. Okrem toho má SVN výhodu v projektoch s mnohými binárnymi súbormi , pretože umožňuje uzamknúť súbory, aby ich nikto iný nemohol upravovať, kým na nich niekto pracuje – čo Git natívne neponúka.

Inštalácia Manjaro ARM na tablety so systémom Android pre používanie Arch Linuxu
Súvisiaci článok:
Inštalácia Manjaro ARM na tablety so systémom Android pre používanie Arch Linuxu

Pracovné postupy a spolupráca v GitHube

Softvérový inžinier dohliadajúci na servery v dátovom centre a prepájajúci vývoj softvéru s infraštruktúrou nasadenia.

Keď používame platformy ako GitHub, pracovný postup sa vďaka kľúčovým konceptom stáva oveľa organizovanejším. Vetvenie zahŕňa vytvorenie kópie hlavného kódu na vývoj novej funkcie alebo opravu chyby bez narušenia existujúcej funkčnej verzie. Keď programátor dokončí svoje zmeny, vykoná commit , čo v podstate znamená uloženie zmien s popisnou poznámkou.

Na vykonanie týchto zmien v oficiálnej verzii sa používa pull request . Ostatní prispievatelia skontrolujú kód, navrhnú vylepšenia a ak je všetko v poriadku, vykoná sa zlúčenie , čím sa nové funkcie integrujú do hlavnej vetvy. Na optimalizáciu tohto procesu mnoho tímov používa model Gitflow , ktorý organizuje prácu do špecifických vetiev: Master (produkcia), Develop (integrácia), Feature (nové funkcie), Release (príprava vydania) a Hotfix (urgentné opravy).

Model-Pohľad-PohľadModel
Súvisiaci článok:
Kompletný sprievodca zvládnutím architektonického vzoru MVVM

Správa balíkov a zabezpečenie

Dvaja vývojári diskutujú o riadkoch kódu na obrazovke, pričom ilustrujú proces kontroly kódu a žiadosti o zmenu (Pull Request).

V operačných systémoch nie je repozitár len zbierkou súborov; je to inteligentný systém. Balíky obsahujú informácie o závislostiach , ktoré odkazujú na ďalšie programy potrebné na fungovanie aplikácie. Keď sa pokúsite niečo nainštalovať, správca balíkov automaticky prehľadá nakonfigurované repozitáre a vyhľadá tieto závislosti, takže nemusíte každý komponent inštalovať manuálne.

Z bezpečnostného hľadiska sú oficiálne repozitáre najspoľahlivejšou možnosťou. Mnohé používajú digitálne podpisy , aby zaručili, že softvér nebol zmenený tretími stranami. Keď tím dôveruje podpisu dodávateľa, možnosť inštalácie škodlivého softvéru sa drasticky zníži, čím sa používanie antivírusu v niektorých prostrediach stáva menej kritickým. Okrem toho existujú komunitné repozitáre a služby, ako napríklad openSUSE Build Service , hoci by sa mali používať s väčšou opatrnosťou, pretože nie sú oficiálne.

Populárne nástroje a ekosystémy

V závislosti od programovacieho jazyka existujú špecifické repozitáre, ktoré predstavujú priemyselný štandard. Napríklad v Pythone máme PyPI (používajúci pip), v Node.js máme NPM , v Jave používame Maven a v PHP nájdeme PECL . V prípade jazyka R je repozitár CRAN základný, pretože vykonáva automatizované testy (automatické kontroly) na viacerých operačných systémoch, aby sa zabezpečilo, že prispievané balíky nenarušia stabilitu jazyka.

Pre spoločnosti, ktoré potrebujú spravovať svoje vlastné binárne artefakty, sú k dispozícii profesionálne riešenia ako JFrog Artifactory, Sonatype Nexus alebo Apache Archiva . Výber nástroja vždy závisí od organizačnej kultúry a cyklu vydávania verzií spoločnosti; tím, ktorý vydáva aktualizácie každú hodinu pomocou kontinuálnej integrácie, bude mať iné potreby ako tím so statickými a pomalými cyklami vydávania.

Či už hovoríme o ukladaní zdrojového kódu pomocou Gitu alebo distribúcii aplikácií pomocou správcov balíčkov v systéme Linux, repozitáre organizujú tvorbu a používanie softvéru. Vďaka kombinácii riadenia verzií, správy závislostí a pracovných postupov pre spoluprácu, ako je Gitflow, môžu tisíce ľudí pracovať na tom istom projekte bez chaosu, čo zabezpečuje, že kód je stabilný, bezpečný a ľahko aktualizovateľný kdekoľvek na svete.

Integračné testovanie
Súvisiaci článok:
Kompletný sprievodca integračným testovaním vo vrstve a miestnosti perzistencie

Pridať ako preferovaný zdroj v Google