Komplet guide til softwarelagre: Typer, administration og drift

  • Definition af repositories som centraliserede digitale lagre til software og versionskontrol.
  • Differentiering mellem pakkelagre til operativsystemer og kodesamarbejdsplatforme.
  • Vigtigheden af ​​pakkeadministratorer og versionskontrolsystemer i udviklingscyklussen.

Udsigt over et moderne serverrum med blå belysning, der repræsenterer lagringsinfrastrukturen i et softwarearkiv.

Når vi dykker ned i programmeringens verden eller begynder at rode med operativsystemer som Linux, er det meget almindeligt at støde på begrebet repository. Grundlæggende kan vi sige, at et repository er et digitalt lagerområde , hvor data, dokumenter og især kildekode opbevares, så det kan hentes, ændres og deles af et fællesskab af udviklere eller en specifik organisation.

Selvom mange tror, ​​at de kun er til opbevaring af filer, er virkeligheden, at arkiver er fundamentale for at gøre moderne software skalerbar og sikker . Fra versionskontrol, som forhindrer os i at slette en kollegas arbejde ved et uheld, til servere, der giver os mulighed for at installere et program med en enkelt kommando, er arkiver hjertet i moderne softwareudvikling.

Linux-implementering
relateret artikel:
Linux-implementeringsvejledning: Sådan hoster du en webserver på din mobiltelefon

Typer af arkiver i henhold til deres formål

Fokuseret softwareudvikler, der arbejder med to skærme i et moderne kontor, og som skildrer oprettelsen af ​​kildekode.

Ikke alle repositories gør det samme; der er en bred variation afhængigt af, hvad du skal gemme, og hvordan du vil administrere det. For eksempel fokuserer versionskontrolrepositories på at arkivere kildekode og registrere alle små ændringer, der foretages, så udviklere kan vende tilbage til tidligere versioner, hvis noget går galt (den berømte "rollback"). Klassiske eksempler her ville være GitHub, SVN eller CVS.

På den anden side har vi softwarelagre , som er meget almindelige i GNU/Linux-økosystemet. I stedet for rå kode finder vi her prækompilerede pakker, der er klar til installation, sammen med deres metadata og afhængigheder. Disse lagre kan være eksterne, hostes på cloud-servere eller lokale, såsom en installations-dvd. Pakkeadministratorer som APT i Debian til mobile enheder , yum i Red Hat eller zypper i openSUSE bruges til at administrere alt dette.

Søg efter open source-apps med F-Droid
relateret artikel:
Komplet guide til at finde open source-apps med F-Droid

Der er også andre mere specifikke variationer:

  • Metadatalagre: Bruges i komplekse infrastrukturer til at lagre information om systemets kontekst og miljø uden at røre kildekoden.
  • Dokumentserverlagre: Ligesom arXiv, hvor videnskabelige artikler udgives og gennemgÃ¥s af eksperter, før de gøres tilgængelige.
  • CASE-arkiv: Specielt designet til computerstøttet softwareudvikling, der lagrer al projektdokumentation og -data.

Versionskontrol: Git vs. SVN-opgøret

Et team af programmører samarbejder om et softwareprojekt i et teknologisk kontormiljø og illustrerer fælles arbejde i arkiver.

For softwareudviklere er det afgørende at vælge det rigtige versionskontrolværktøj. Det er her, Git og SVN kommer ind i billedet. Selvom de deler målet om versionsstyring af kode, fungerer de på helt forskellige måder. Git er et distribueret system , hvilket betyder, at hver udvikler har en komplet kopi af versionshistorikken på sin egen maskine. Dette gør det utrolig hurtigt og muliggør offline-arbejde.

I modsætning hertil bruger SVN en centraliseret model . Der er en enkelt server, der gemmer hele historikken, og brugerne skal oprette forbindelse til den for at se ældre versioner eller uploade ændringer. Selvom Git er meget fleksibelt med branches, er denne proces ofte mere besværlig i SVN. Desuden har SVN en fordel i projekter med mange binære filer , da det giver dig mulighed for at låse filer, så ingen andre kan redigere dem, mens nogen arbejder på dem – noget Git ikke tilbyder native.

Installation af Manjaro ARM på Android-tablets for at bruge Arch Linux
relateret artikel:
Installation af Manjaro ARM på Android-tablets for at bruge Arch Linux

Arbejdsgange og samarbejde i GitHub

Softwareingeniør, der fører tilsyn med servere i et datacenter og forbinder softwareudvikling med implementeringsinfrastruktur.

Når vi bruger platforme som GitHub, bliver arbejdsgangen meget mere organiseret takket være nøglekoncepter. Forgrening indebærer at oprette en kopi af hovedkoden for at udvikle en ny funktion eller rette en fejl uden at ødelægge den eksisterende fungerende version. Når programmøren er færdig med sine ændringer, foretager de en commit , hvilket i bund og grund gemmer ændringerne med en beskrivende note.

For at implementere disse ændringer i den officielle version bruges en pull request . Andre bidragydere gennemgår koden, foreslår forbedringer, og hvis alt er i orden, udføres mergen , hvorved de nye funktioner integreres i hovedgrenen. For at optimere dette bruger mange teams Gitflow- modellen , som organiserer arbejdet i specifikke grene: Master (produktion), Develop (integration), Feature (nye funktioner), Release (forberedelse af release) og Hotfix (hasterettelser).

Model-View-ViewModel
relateret artikel:
Komplet guide til at mestre MVVM-arkitekturmønsteret

Pakkehåndtering og sikkerhed

To udviklere diskuterer kodelinjer på en skærm og illustrerer kodegennemgang og Pull Request-processen.

I operativsystemer er arkivet ikke bare en samling af filer; det er et intelligent system. Pakker indeholder afhængighedsoplysninger , som refererer til andre programmer, der kræves for at applikationen kan fungere. Når du forsøger at installere noget, søger pakkehåndteringen automatisk i de konfigurerede arkiver efter disse afhængigheder, så du ikke behøver at installere hver komponent manuelt.

Fra et sikkerhedsmæssigt synspunkt er officielle arkiver den mest pålidelige løsning. Mange bruger digitale signaturer til at garantere, at softwaren ikke er blevet manipuleret med af tredjeparter. Når et team stoler på en leverandørs signatur, reduceres muligheden for installation af malware drastisk, hvilket gør antivirusbrug mindre kritisk i nogle miljøer. Derudover findes der fællesskabsarkive og -tjenester som openSUSE Build Service , selvom disse bør bruges med større forsigtighed, da de ikke er officielle.

Populære værktøjer og økosystemer

Afhængigt af programmeringssproget findes der specifikke repositories, der er branchestandarden. For eksempel har vi i Python PyPI (ved hjælp af pip), i Node.js har vi NPM , i Java bruger vi Maven , og i PHP finder vi PECL . I tilfældet med R er CRAN -repositoriet fundamentalt, da det udfører automatiserede tests (autochecks) på flere operativsystemer for at sikre, at bidragede pakker ikke forstyrrer sprogets stabilitet.

For virksomheder, der har brug for at administrere deres egne binære artefakter, findes der professionelle løsninger som JFrog Artifactory, Sonatype Nexus eller Apache Archiva . Valget af værktøj afhænger altid af virksomhedens organisationskultur og udgivelsescyklus; et team, der udgiver opdateringer hver time ved hjælp af kontinuerlig integration, vil have andre behov end et team med statiske og langsomme udgivelsescyklusser.

Uanset om vi taler om at gemme kildekode med Git eller distribuere applikationer ved hjælp af pakkehåndteringssystemer på Linux, organiserer repositories oprettelsen og forbruget af software. Takket være kombinationen af ​​versionskontrol, afhængighedsstyring og samarbejdsworkflows som Gitflow kan tusindvis af mennesker arbejde på det samme projekt uden kaos, hvilket sikrer, at koden er stabil, sikker og nem at opdatere overalt i verden.

Integrationstests
relateret artikel:
Komplet guide til integrationstestning i persistenslag og -rum

Tilføj som foretrukken kilde i Google