Uvod u dep: Kako upravljati svojim ovisnostima o Golang projektu

dep - Alat za upravljanje ovisnosti Go

Ažuriranje @ 2018–11–26: Tehnologija se ne kreće samo jakom brzinom, već se i brzo mijenja. U roku od godinu dana, ovaj članak je OUTDATED!

A prema stranici projekta dep:

dep je bio "službeni eksperiment." Lanac alata Go od 1.11 je (eksperimentalno) prihvatio pristup koji oštro odstupa od dep. Kao rezultat, kontinuirano razvijamo dep, ali usmjeravamo prije svega na razvoj alternativnog prototipa za inačice ponašanja u lancu alata.

Za više informacija o novom Go-ugrađenom upravljanju, molimo pogledajte službeni GitHub Wiki - Go 1.11 moduli.

Hvala John Arundel @bitfield i Erhan Yakut @yakuter na otkrivanju problema.

-

Ažuriranje @ 2018–02–03: Sam Boyer iz tima godep pojasnio je neke netočne podatke u ovom članku. Ispričavam se Samu Boyeru i čitateljima zbog neugodnosti.

-

Prije toga objavio sam članak o upravljanju ovisnostima u programu Go pomoću Glide. Dobila sam povratnu informaciju da će Glide zastarjeti. Glide tim predlaže korisnicima da pređu na drugi alat za upravljanje ovisnostima koji se zove dep napisao Golang tim.

Zajednica Go sada ima dep projekt za upravljanje ovisnostima. Razmislite o pokušaju migracije s Glidea na dep. Glide će i dalje biti podržan neko vrijeme, ali smatra se da je u većem stanju podrške nego aktivnom razvoju značajki.

Postoji plan o integriranju dep u alatnu mrežu u izdanju Go 1.10, ali izgleda da i dalje ima neki put.

Ažuriranje @ 2018–02–03:

  • dep je službeno objavljen.
  • dep se ne pomiče u lancu alata s 1.10. molimo pogledajte putokaz za najnovije informacije.
A ja jednostavno nisam dovoljno brz.

Stvorite projekt unutar $ GOPATH

Mapa projekta mora biti unutar $ GOPATH kako bi se riješili Gopackage staze. Kreirajmo novi projekt na primjeru $ GOPATH / src / gitlab.com / ykyuen / dep i dodajmo sljedeću datoteku.

main.go

Dep način

Gopkg.toml i Gopkg.lock

dep čita dvije datoteke pod nazivom Gopkg.toml i Gopkg.lock. Inicijalizirajmo ove dvije datoteke pomoću naredbe dep init.

[ykyuen @ camus dep-example] $ dep init
  Korištenje master-a kao ograničenja za izravno dep github.com/dustin/go-humanize
  Zaključavanje glavnog računala (bb3d318) za izravan dep github.com/dustin/go-humanize

Kao što vidite, naredba dep init skenira izvorne kodove i preuzima sve pakete potrebne za projekt u mapu dobavljača.

Gopkg.lock služi potpuno istu funkciju kao i datoteka glide.lock. Zaključava verziju paketa, OSIM verzija treba održavati u Gopkg.toml. Ukratko, datoteka Gopkg.lock automatski se generira i ovisi o izjavama uvoza u izvornoj verziji koju kontrolira Gopkg.toml.

Ažurirajte inačicu ovisnosti

Uredimo Gopkg.toml i upotrijebimo malo stariju verziju go-humaniziranog paketa umjesto najnovije matične grane.

Zatim pokrenite dep osigurajte da ažurirate paket na željenu verziju. Slijedi razliku ažuriranog Gopkg.lock.

Dodajte novu ovisnost

Novi paket može se dodati pomoću naredbe dep secure -add.

[ykyuen @ camus dep-example] $ dep secure -add github.com/leekchan/accounting
Dohvaćanje izvora ...
"github.com/leekchan/accounting" ne uvozi vaš projekt, a privremeno je dodan u Gopkg.lock i dobavljača /.
Ako ponovo pokrenete "dep secure" prije nego što ga zapravo uvozite, nestat će s Gopkg.lock i dobavljača /.

Sada imamo pripremljen novi računovodstveni paket u mapi dobavljača s novim ograničenjima zapisanima na Gopkg.toml i zaključan u Gopkg.lock. Ažurirajmo main.go kako slijedi.

main.go

I pokreni.

[ykyuen @ camus dep-example] $ go run main.go
Pozdrav svijete
Ta datoteka iznosi 83 MB.
Ti si moj 193. najbolji prijatelj.
Dugujete 6.582.491 $.
$ 123,456,789.21
$ 12,345,678.00
$ 25,925,925.67
- $ 25,925,925.67
$ 123,456,789.21

Problem s podgrupom git

Jedna velika razlika dep u usporedbi s Glideom je ignoriranje podmodula paketa. Na primjer, nakon dodavanja go-goracle / goracle paketa pomoću dep, odpijski podmodul je prazan i dovodi do pogreške. Razlog ispadanja podmodula može se naći na sljedećoj poveznici.

  • Planirate li dodati podršku za Git podmodule?

Ažuriranje @ 2018–02–03:

Odlomak o Git podmodulima nije točan.

Sam Boyer je napisao:

dep bi trebao biti savršeno u redu pri povlačenju git podmodula u slučaju koji opisujete. Samo sam ponovio ono što ovdje opisujete lokalno, a problem nisu podmoduli - to je to što ne postoji Go kod u github.com/go-goracle/goracle/odpi, pa se ne može izravno uvesti.
Vjerojatno ćete morati isključiti obrezivanje neiskorištenih paketa u Gopkg.toml za taj projekt, jer će se u suprotnom dep osigurati da se izravno ukloni ono što se čini neiskorištenim (ali čini se da ga cgo zapravo koristi).

Ažuriranje @ 2018–03–04:

Utvrđeno je da go-goracle / goracle paket ne funkcionira sa dep. Možete pratiti problem u nastavku i provjeriti najnovije ažuriranje dep tima.

  • Ne uspijeva dobiti git podmodul paketa nakon naredbe dep secure

Sažetak

  • DEP je vrlo vjerojatno da će službeni ovisnost alat za upravljanje u ̶̵̶G̶̵̶o̶̵̶l̶̵̶a̶̵̶n̶̵̶g̶̵̶ ̶̵̶c̶̵̶o̶̵̶m̶̵̶m̶̵̶u̶̵̶n̶̵̶i̶̵̶t̶̵̶y̶̵̶.̶̵̶
  • I̶̵̶f̶̵̶ ̶̵̶y̶̵̶o̶̵̶u̶̵̶ ̶̵̶a̶̵̶r̶̵̶e̶̵̶ ̶̵̶s̶̵̶t̶̵̶a̶̵̶r̶̵̶t̶̵̶i̶̵̶n̶̵̶g̶̵̶ ̶̵̶a̶̵̶ ̶̵̶n̶̵̶e̶̵̶w̶̵̶ ̶̵̶G̶̵̶o̶̵̶l̶̵̶a̶̵̶n̶̵̶g̶̵̶ ̶̵̶p̶̵̶r̶̵̶o̶̵̶j̶̵̶e̶̵̶c̶̵̶t̶̵̶, ̶̵̶ ̶̵̶d̶̵̶e̶̵̶p̶̵̶ ̶̵̶o̶̵̶̶̵̶ ̶̵̶o̶̵̶̶̵̶̶̵̶
  • Ako koristite klize u naslijeđe ̶p̶r̶o̶j̶e̶c̶t̶.̶ mogli razmotriti migraciju na DEP, ali mislim da nema štete nastaviti koristiti Glide za vrijeme dok je DEP službeno ̶r̶e̶l̶e̶a̶s̶e̶d̶.̶
  • Osim toga, ̶ nedostaje ̶p̶a̶c̶k̶a̶g̶e̶'̶s̶ podmodula može uzrokovati kvar vašeg ̶c̶o̶d̶e̶.̶
  • dep je službeno objavljen.
  • dep dobro djeluje na povlačenju git podmodula.
  • Koristite standardnu ​​biblioteku kad god je to moguće. (Predložio philoserf)
  • Ovaj primjer možete provjeriti na gitlab.com.

- Izvorno objavljeno na Boatswain blogu.