Preuzimanja koja uspiju u terminalu kontejnera pravi su dokaz o okruženju tog terminala. Ona ne govore ništa o procesu editora, instalateru ekstenzija ni o binarnoj datoteci koju ekstenzija naknadno dohvati. Kopiranje proxy varijabli između tih troje pretvara jedan neuspjeli zahtjev u cijelo poslijepodne nepovezanih izmjena.

Dva okruženja obično se razlikuju u točno jednoj stvari. Pronaći tu stvar brže je nego dvaput pročitati proxy dokumentaciju.

Koji je proces poslao neuspjeli zahtjev

Tijekom jedne instalacije mogu pasti tri zahtjeva i svaki ima vlastiti mrežni identitet. Editor traži od Marketa metapodatke i URL paketa, a zatim preuzme paket. Tek nakon toga host ekstenzija pokreće kod koji može dohvatiti jezični poslužitelj ili vlastitu binarnu datoteku. Koja se faza slomila određuje kojem procesu treba proxy, a sučelje pogreške rijetko imenuje tu fazu.

Radni terminal dokazuje da kontejner može dohvatiti internet, a ne da editor može. Pročitajte dnevnik ekstenzije za posljednji URL koji je pokušala. Ondje navedeni host identificira proces i pravilo koje se na njega primjenjuje.

Lokalni editor i udaljeni kontejner dva su okruženja

U udaljenom radnom prostoru ekstenzija se izvršava na strani koju njezin tip deklarira. Sučeljne ekstenzije ostaju uz lokalni editor, a ekstenzije radnog prostora rade u kontejneru. Proxy postavljen u jednome nevidljiv je drugome, a ponovna izgradnja stvara okruženje kontejnera iz njegove konfiguracijske datoteke, a ne iz onoga što ste izvezli u ljusci. Ta podjela objašnjava zašto se ista ekstenzija instalira na prijenosnom računalu i pada u istom projektu preko SSH-a.

Pročitajte mjesto instalacije prije bilo kakve izmjene. Kada dnevnik prijavi udaljenu instalaciju, okruženje kontejnera je ono koje je važno.

Smjestite proxy tamo gdje zahtjev počinje

Za Dev Container kojem doista treba HTTP proxy, varijabla pripada u konfiguraciju kontejnera kako bi je ponovna izgradnja reproducirala. Ulomak u nastavku postavlja je za to okruženje. Adresa rezerviranog mjesta zamjena je za vaš vlastiti gateway, a izuzeci nisu obavezan dodatak.

"containerEnv": {
  "HTTP_PROXY": "http://proxy.corp.example:8080",
  "HTTPS_PROXY": "http://proxy.corp.example:8080",
  "NO_PROXY": "localhost,127.0.0.1,.internal.example"
}

Naziv varijable opisuje odredišni protokol, pa vrijednost HTTPS_PROXY može legitimno započeti s http. Primijenite promjenu podržanim putem ponovne izgradnje i zadržite izuzetke, jer proxy koji presreće interne hostove kvari usluge koje kontejneru trebaju.

Odvojite pogreške povjerenja od dostupnosti

Proxy koji se poveže i zatim vrati pogrešku provjere certifikata dosegnuo je kasniju fazu od onoga koji odbija vezu. Prva pogreška traži odobreni materijal povjerenja organizacije instaliran u okruženju koje izvršava zahtjev. Druga traži dostupnu adresu i port. Ako ih tretiramo kao jedan problem, dobivamo rješenje koje ne radi ni za jedno.

Isključivanje provjere ili pokretanje editora s povišenim ovlastima nije popravak za nedostajući proxy ni za odsutan lanac povjerenja. Oboje mijenja vidljivu pogrešku za tihu. Zatim ponovno pokušajte istu ekstenziju i zabilježite sljedeći URL koji padne.

env | grep -iE '^(http|https|no)_proxy='
code --install-extension ms-python.python --force

Zabilježite koja je strana radnog prostora proizvela taj URL. Kratka bilješka s nazivom faze, hosta i strane vrijedi više od popisa postavki koje je netko promijenio, jer je ta bilješka ono što sljedeća osoba može reproducirati.

Povezani članci